Por cierto, me olvide mencionar dos cosas: -Cuando se halla los costos (como en 5:40 o 6:32), como son distancias pues se ignora la existencia de obstáculos. -Si alguien se este preguntando en 6:32, porque simplemente no usar un pitagoras y ya (Osea dibujar una línea recta desde el nodo hasta el final y hallar esa distancia). Eso es porque hay varias formas de hallar la distancia, usar el pitagoras se llama distancia Euclidiana, la que use yo es una versión adaptada de la distancia Manhattan para mapas que permitan movimientos diagonales (Aunque puse en la notita al terminar la explicación que es una distancia Manhattan, en realidad en su forma mas pura esta NO se puede usar para mapas que permitan movimientos diagonales solo para mapas que permitan movimiento arriba abajo izquierda derecha), del material que me guíe a esa distancia la llaman "Distancia Diagonal". Sobre distancias y Heurísticas pueden guiarse más revisando este Link: theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#diagonal-distance
@@MinombreesSergio Mmm, mientras sean casillas, aunque sean pequeñas se puede usar A*. En juegos donde no se usen, mmm dependeria que juego, en los juegos 3d si usan un enfoque distinto por ejemplo, ahi usan "navmesh".
@@llamaelitista mmm interesante, y es muy enredado ese o aguanta segunda parte con navmesh? :v Me sirve porque quiero hacer un juego en 3D, con movimiento por click.
@@MinombreesSergio creo que se puede explicar con blinky (el fantasma rojo de Pacman) podría hacerse sin casillas y directamente que la "revisión" sea moverse unos pasitos, compara su distancia al nodo final (en este caso Pacman) y seguir revisando.
Es increìble que aprendí todo esto en la universidad y ahora viendo tu video me hiciste recordar y volver a entender todo pero de una manera más interesante
Tal cuál, yo me acuerdo de haberlo programado en C++ para encontrar un camino en el juego Mummy Maze. En ese caso no era necesariamente el más corto, ya que estábamos haciendo heurísticas que también tenían en cuenta la distancia a los enemigos y sus tipos de movimiento, pero fué muy interesante volver a ver la teoría
Este video es de mis favoritos en lo que a programación respecta, me recuerda mucho a uno que ví sobre animaciones procedurales, en el que en vez de mostrar el código y ya está, el autor explica como funcionan las cosas. Me encantan este tipo de videos porque te dejan tener un entendimiento más profundo de un tema y en base a eso podés generar un código en cualquier lenguaje de programación. Y lo más importante, entendés que es lo que hace el código. Por cierto, es impresionante que hayas hecho ese código en python para mostrar esto, se agradece mucho.
11:11 Cuando te das cuenta de que el algoritmo A* también se puede implementar para escapar de algo jajajajja Muchas gracias por compartir, haces que internet valga la pena
Es un video increíble. La facilidad con que explicas el algoritmo. Este algoritmo lo ví por primera vez en la universidad en la materia de Inteligencia Artificial.
Básicamente cda vez que avanza un nodo guarda la información de "donde proviene" y cuando llega a la meta le pregunta a cada nodo "hey, ¿De donde vienes?". Me pareció buena la explicación
no se que me parece mejor, si el hecho de que expliques un algoritmo que me ha llamado la atencion desde hace bastante o que lo hayas explicado con pseudocodigo en un archivo rust. desde ya me suscribo
No se como llegué a este video si no programo videojuegos, pero me pareció super interesante y muy bien desarrollado!! Muchas felicidades, gran contenido!
Solo he visto este video de tu canal, pero con esta calidad de explicación de algoritmos, me subscribí sin dudarlo. ¡En horabuena por semejante calidad! Espero sigas así.
casualmente hace unos dias hice una visualizacion de este algoritmo en angular, tuve que usar una clase para representar la cuadricula como una matriz de adjacencia, e iba guardando los mejores candidatos al camino mas corto con una cola de prioridad, cuando piensas que no usaras esas estructuras de datos y luego te encuentras en esa situación jajaja, te has ganado un suscriptor amigo.
Increíble video, espero que sigas haciendo videos así! Son muy buenos y logras enseñar matemáticas y las bases de programación utilizando los videojuegos como un medio.
Excelente video y explicacion de este algoritmo, es impresionante la forma en la que se omiten caminos costosos frente a rutas eficientes, aunque tambien esta el tema de que A* puede considerarse un algoritmo casi recursivo (evaluar un nodo mas de una vez), y que en casos MUY especificos sea menos eficiente que BFS u otros de crecimiento de area, por lo que en modelos mas complejos se suele implementar filtros que buscan patrones de forma o tamaño que seleccionan el algoritmo mas eficiente a utilizar antes de ejecutar la optimization. Tienes un nuevo sub :)
lo que vi en la carrera de ingeniería industrial con ejemplos aburridos ahora me colocan el ejemplo de videojuegos, gracias que buenos recuerdos viciar y entender lo que va atras del telon
Explicas de maravilla, gracias! Ahora, sería interesante un vídeo sobre su implementación en diferentes formas de medir distancias en contextos variados.
Me encanta tu contenido sobre algoritmos aplicados a videojuegos ayuda a dar una perspectiva histórica sobre cómo hemos llegado a los videojuegos de hoy. Me pregunto de dónde viene tu formación o qué te llevó a investigar sobre estas cosas.
Mis estudiantes estarán felices... Dios te bendiga... Ojala subas otros algoritmos qué se usan en video juegos... Que Dios te bendiga a ti y a tu familia... ❤❤❤
Wow amigo muchas gracias, en verdad me parece fascinante todo el tema matemático y ahora me doy cuenta que me gustaría investigar más el tema, gracias.
Me parece muy interesante e intuitiva tu forma de explicar esos algoritmos.😊 Actualmente estoy estudiando una licenciatura en matemáticas y guardaré el codigo por si me sea necesario en un futuro 😅.
No diseño videojuegos ni de lejos, pero soy ingeniero y me ha parecido muy interesante y entretenido. Felicidades por este pedazo de video, muy bien explicado
Ese algoritmo no funciona en el AOEII DefinitiveEdition porque ahí hasta se ponen a bailar cuando los mueve en bola, se regresan o se quedan como idiotas caminando contra los edificios
6:32 está equivocado el costo H sería calculado por Pitágoras, de otra manera sería calcular los caminos mas cortos en cada iteración y pues no tenemos esa info. Debería ser una línea recta del nodo a la meta, solo contando en x y y, para luego usar sqrt(x*x+y*y)
En realidad hay distintas formas de hallar la distancia en el costo H (Heurística), la que planteas tu se llama distancia Euclidiana (que es hacer un pitagoras y ya), la que use yo es una forma adaptada de la distancia Manhattan, ambas funcionan, ya depende de como quieras adaptar tu algoritmo. Sobre lo del camino mas corto, si tienes razón, en realidad SI es como hallar el camino mas corto PERO cuando no hay obstaculos, como es una distancia, no toma en cuenta obstaculos asi que en realidad no se puede usar para hallar el camino mas corto. Sobre lo de que no existe info, si hay, existe una formula para hallar la distancia que estoy usando sin mas info que la posicion del nodo analizado y la posicion del nodo final. Checate este link, esta con el nombre de "Diagonal distance". theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#diagonal-distance
Muy interesante tu vídeo, me gusta como explicas ese algoritmo que está detrás de muchos juegos. Igual me gustaría saber cómo se aplicaría en entornos más complejos como por ejemplo caminos con curvas o en tres dimensiones
Los caminos con curvas pueden igualmente volverse una cuadrícula, simplemente tendrías que hacer nodos/casillas mas pequeños y ya, asi simulas una curva. Para modelos 3d, se puede usar A* , pero de forma un poquito mas compleja, a traves de lo que se conoce como "Navmesh", puedes buscar eso para mas info.
buen video. tengo muchisima experiencia en computacion......pero nunca me habia puesto a analizar ese algoritmo de encotrar el camino mas corto. soy mas partidario de la recursion que de la iteracion. estoy aprendiendo love para hacer juegos, creo qeu voy a marcar este video, el juego que tengo en mente no usa realmente rutas, pero algunos de los que tengo pensados si, asi que esto me sera muy util. creo que lo hare con recursion. tenga su like.
Gracias a estas bases fue que comencé mucho antes que tú a desarrollar una ToolKit para Stride Engine de Pathfinding para juegos de RTS. La ToolKit que desarrolle se llama Northgard, y te preguntarás ¿por qué le puse ese nombre?, básicamente porque es uno de los juegos que paso gran parte de mi vida enviciado, un juego que a mi en lo personal está tan bien hecho mejor que el AoE, que no solo me genera nostalgia sus temas nórdicos sino, que es precisamente la inspiración que tuve a la hora de programar y producir la herramienta. Sin embargo, tuve que leer libros para entender funciones matemáticas, trigonometría y físicas de bajo nivel. Sin embargo tu vídeo lo resume de tal manera que parece simple pero no lo es. Programar no es lo mismo que desarrollar, desarrollar es cuando utilizas herramientas y funciones creadas por programadores, eso incluye los frameworks y el código scripting, los programadores creamos herramientas para que los desarrolladores lo utilicen, por eso el programador que sabe programar conoce las matemáticas, nunca se va a conformar con lo que le da el motor o framework, siempre buscará una forma de re-inventar la rueda aunque la rueda ya exista, precisamente se debe a esto: La programación es un Descubrimiento, el día de mañana puede existir un Z* del pathfinding por alguien que se animó a experimentar, probar nuevas cositas, el programador que sabe es un inventor por naturaleza, requiere de estudio constante y saber de matemáticas. S2 👨💻
Muy buen video y bien explicado, pero siento que faltó un par de cosas por mencionar. 1°. El algoritmo de Dijkstra si bien es algo lento porque como bien mencionas y muestras recorre cada nodo, pero esto tiene su propósito, pues este algoritmo no solo encuentra el camino más corto de un nodo inicial a uno final, lo que hace es encontrar el camino más corto desde un nodo inicial hacia cualquier otro nodo, o sea, es más fuerte y es por eso que demora más. De cualquier forma entiendo que a efectos del requerimiento entiendo que la mejor opción aquí es usar A*. 2°. Si mal no tengo entendido, A* no encuentra por lo general la solución óptima, sino que una seudo-óptima, o sea, una aproximada justamente por el uso de heurísticas, en cambio Dijkstra sí, siempre da la solución óptima. Aclaro igual sobre lo segundo no estoy del todo seguro, pues el A* solo lo había visto en un video en el que se mencionaba precisamente esto, de igual forma agradecería si me corrigen esto último
@llamaelitista hola acabo de ver el video, me gustó mucho como está explicado, me imagino que ya deben haber implementado una búsqueda de camino más corto que vaya del inicio al fin y del fin al inicio paralelamente que puedan compartir información cuando se lleguen a nodos intersectados por ambas búsquedas, eso debería reducir el tiempo a la mitad, pero no ví que se mencionara algo así en el video
El problema con este algoritmo es que para ser 100% eficiente necesita conocer TODOS los factores que influyen a la hora de lograr un objetivo. Se podría utilizar aun sin saberlo todo pero es probable que no sea tan eficiente. Eso si, en comparación con los algoritmos convencionales, sigue siendo la mejor opción ya que son casos bastante puntuales en los que no da mejores resultados que el resto
Recuerdo cuando estudiaba en la ingeniería, nos enseñaron este algoritmo pero hacíamos todos los cálculos a mano para programar cómo una paquetería repartiría los pedidos que tuviera y otros ejemplos asì
Excelente video! Finalmente entendí el algoritmo. No obstante tengo una duda: sería posible añadir un test de visibilidad (trace del nodo al jugador) en cada nodo del A* para que el camino no solo sea el más corto, sino también el más oculto a la vista del jugador? Estoy desarrollando un juego indie en UE5 y busco una forma de hacer que mis enemigos flanqueen de manera inteligente. He probado EQS, FSMs, y demás, pero parece que tendré que modificar el A* del engine para obtener buenos resultados. De ser posible, podría usar EQS para encontrar un punto en la espalda/laterales del jugador, y usar el A* modificado para que el enemigo se mueva hasta ese punto pasando por el camino con más coberturas. En cualquier caso, nuevo sub :) tienes contenido muy interesante, sigue así!
Mmmm, muy interesante, a si a primera prueba se me ocurre que podrías hacer que la vista del jugador se vuelvan nodos obstaculos, por ejemplo si tu jugador ve en línea recta todos esos nodos/casillas hasta choca su vista se vuelven obstáculos, en la realidad no son, pero para el algoritmo si serían por lo que tendría que calcular un camino que no implique pasar por esos nodos/casillas. Algo asi se me ocurre.
@@llamaelitista Una pena no poder poner imágenes por aquí, pero conseguido! Lo que he hecho es un trace desde cada nodo a un vector que llamo VigilVector, este puede ser la posición del jugador, el goal del path, lo que sea. Si hay un hit antes de llegar al Vigil, el nodo esta oculto, si no pues es visible. Si es visible, incurre un costo alto modificable. He metido parámetros para hacer offset variable también y que el trace no choque con el suelo. Me queda ajustar un poco los valores y meterle más parámetros para que se pueda aprovechar para más cosas que flanquear, pero funciona muy bien. No podría haberlo hecho sin ver este vídeo, me has ayudado a entender como funciona en muy poco tiempo y de forma sencilla, eternamente agradecido 🙏
Entonces, Tenemos años y años y años interactuando con algoritmos complejos de inteligencia artificial en base a modelos matematicos avanzados, pero las IA de hoy en día son mejores porque a una foto le puedes quitar la ropa a las personas. Pues así estamos
En el age 2 cuando querias enviar algo en barco, muchas veces el barco venia a ti antes que tu al barco quizas la IA detectaba que el barco era mas rapido y por eso hacia eso.
Por cierto, me olvide mencionar dos cosas:
-Cuando se halla los costos (como en 5:40 o 6:32), como son distancias pues se ignora la existencia de obstáculos.
-Si alguien se este preguntando en 6:32, porque simplemente no usar un pitagoras y ya (Osea dibujar una línea recta desde el nodo hasta el final y hallar esa distancia). Eso es porque hay varias formas de hallar la distancia, usar el pitagoras se llama distancia Euclidiana, la que use yo es una versión adaptada de la distancia Manhattan para mapas que permitan movimientos diagonales (Aunque puse en la notita al terminar la explicación que es una distancia Manhattan, en realidad en su forma mas pura esta NO se puede usar para mapas que permitan movimientos diagonales solo para mapas que permitan movimiento arriba abajo izquierda derecha), del material que me guíe a esa distancia la llaman "Distancia Diagonal". Sobre distancias y Heurísticas pueden guiarse más revisando este Link:
theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#diagonal-distance
excelente trabajo.
¿Sabes qué algoritmo se usan para juegos donde no se usan casillas?, o simplemente se hacen muchas casillas pequeñas?
@@MinombreesSergio Mmm, mientras sean casillas, aunque sean pequeñas se puede usar A*. En juegos donde no se usen, mmm dependeria que juego, en los juegos 3d si usan un enfoque distinto por ejemplo, ahi usan "navmesh".
@@llamaelitista mmm interesante, y es muy enredado ese o aguanta segunda parte con navmesh? :v
Me sirve porque quiero hacer un juego en 3D, con movimiento por click.
@@MinombreesSergio creo que se puede explicar con blinky (el fantasma rojo de Pacman) podría hacerse sin casillas y directamente que la "revisión" sea moverse unos pasitos, compara su distancia al nodo final (en este caso Pacman) y seguir revisando.
Es increìble que aprendí todo esto en la universidad y ahora viendo tu video me hiciste recordar y volver a entender todo pero de una manera más interesante
Tal cuál, yo me acuerdo de haberlo programado en C++ para encontrar un camino en el juego Mummy Maze. En ese caso no era necesariamente el más corto, ya que estábamos haciendo heurísticas que también tenían en cuenta la distancia a los enemigos y sus tipos de movimiento, pero fué muy interesante volver a ver la teoría
Que estudiaban ustedes?
@@chainsawmanblood1 en mi caso ingeniería de sistemas
@@chainsawmanblood1 Lo mismo, Ing. de Sistemas.
Que el algoritmo igual te bendiga tu video 🙏🙏🙏
Maravillosa explicación
Literal si jajaja
Qué bonitos deseos!
Y funcionó
Este video es de mis favoritos en lo que a programación respecta, me recuerda mucho a uno que ví sobre animaciones procedurales, en el que en vez de mostrar el código y ya está, el autor explica como funcionan las cosas.
Me encantan este tipo de videos porque te dejan tener un entendimiento más profundo de un tema y en base a eso podés generar un código en cualquier lenguaje de programación. Y lo más importante, entendés que es lo que hace el código.
Por cierto, es impresionante que hayas hecho ese código en python para mostrar esto, se agradece mucho.
11:11 Cuando te das cuenta de que el algoritmo A* también se puede implementar para escapar de algo jajajajja Muchas gracias por compartir, haces que internet valga la pena
Es un video increíble. La facilidad con que explicas el algoritmo. Este algoritmo lo ví por primera vez en la universidad en la materia de Inteligencia Artificial.
Básicamente cda vez que avanza un nodo guarda la información de "donde proviene" y cuando llega a la meta le pregunta a cada nodo "hey, ¿De donde vienes?".
Me pareció buena la explicación
Diste en el clavo!
Bro, estuve viendo tu vídeo por curiosidad, pero el ver que creaste un programa de manera libre me sorprendió. Increíble vídeo
no se que me parece mejor, si el hecho de que expliques un algoritmo que me ha llamado la atencion desde hace bastante o que lo hayas explicado con pseudocodigo en un archivo rust. desde ya me suscribo
Me preguntaba esto cuando jugaba de pequeño, me alegra saber un poco mas ahora
No se como llegué a este video si no programo videojuegos, pero me pareció super interesante y muy bien desarrollado!! Muchas felicidades, gran contenido!
Maquina, mostro, fiera , animal, mastodonte, sos el mejor, nuevo sub!
Solo he visto este video de tu canal, pero con esta calidad de explicación de algoritmos, me subscribí sin dudarlo.
¡En horabuena por semejante calidad!
Espero sigas así.
casualmente hace unos dias hice una visualizacion de este algoritmo en angular, tuve que usar una clase para representar la cuadricula como una matriz de adjacencia, e iba guardando los mejores candidatos al camino mas corto con una cola de prioridad, cuando piensas que no usaras esas estructuras de datos y luego te encuentras en esa situación jajaja, te has ganado un suscriptor amigo.
Increíble video, espero que sigas haciendo videos así! Son muy buenos y logras enseñar matemáticas y las bases de programación utilizando los videojuegos como un medio.
wow, increible. me gusta la explicacion de las matematicas yalgoritmos detras de los videojuegos. nuevo sub. ojala sigas asiendo videos asi
😮 Justo estoy interesado en el Warcraft y lansas video de Warcraft que coincidencia
Buen video hermano, crecerás mucho más sigue así con el contenido! 🇵🇪
Causa es la bandera de Canadá?? :V
¡Excelente video! Me encantó que usaste Pygame para mostrar el funcionamiento del algoritmo
Excelente video y explicacion de este algoritmo, es impresionante la forma en la que se omiten caminos costosos frente a rutas eficientes, aunque tambien esta el tema de que A* puede considerarse un algoritmo casi recursivo (evaluar un nodo mas de una vez), y que en casos MUY especificos sea menos eficiente que BFS u otros de crecimiento de area, por lo que en modelos mas complejos se suele implementar filtros que buscan patrones de forma o tamaño que seleccionan el algoritmo mas eficiente a utilizar antes de ejecutar la optimization. Tienes un nuevo sub :)
Exelente video amigo, muchas gracias por dedicarle tu tiempo.
Esta genial el video , muy buen trabajo promete el canal .
Excelente video y explicación, te ganaste un subscritor.
lo que vi en la carrera de ingeniería industrial con ejemplos aburridos ahora me colocan el ejemplo de videojuegos, gracias que buenos recuerdos viciar y entender lo que va atras del telon
Esto es incredible, Todo muy Bien explicado e interesante.. +suscribed
Explicas de maravilla, gracias! Ahora, sería interesante un vídeo sobre su implementación en diferentes formas de medir distancias en contextos variados.
Ha sido muy interesante!!
Justo estoy empezado en algoritmia y este video me ha ayudado a entender este algoritmo mucho mejor. Gracias! ❤
Tremendo trabajo amigo, muy buena explicación... Gracias algoritmo por traerme hacia acá....
Gran video, bro! Esta clase de contenido es muy interesante.
Se entiende muy bien. Gran video!
Súper vídeo.
Lo has explicado clarinete.
Felicidades!
Me encanta tu contenido sobre algoritmos aplicados a videojuegos ayuda a dar una perspectiva histórica sobre cómo hemos llegado a los videojuegos de hoy. Me pregunto de dónde viene tu formación o qué te llevó a investigar sobre estas cosas.
Soy ingeniero, pero me puse a investigar estas cosas por mi cuenta, por mi gusto por la programación y videojuegos.
Hace poco termine un proyecto para rules con nodos, y justo implemente graphos, que genial repaso
Gracias Dios te bendiga... Mi estudiantees estarán felices, con tu video... Ojala publiques otros videos de algoritmos de video juegos...
Increíble video amigo. Te ganaste un sub, un like, un follow en todo lado y un stalker a medio tiempo.
Esto si que me ha ayudado para el juego que estoy haciendo, muchas gracias!!!
Tremendo video, lo vi en la universidad, pero me habria encantado verlo asi graficamente
buen material! Lo voy a tener en cuenta en mis futuros proyectos
Que genial tu canal amigo, te admiro mucho.
Que buen video amigo, espero que estes mas activo, el algoritmo esta beneficiandote
Excelente explicación ❤
Eres un capo bro! Sigue así
Muy buen video, se entendió perfecto y de forma que sea interesante
Mis estudiantes estarán felices... Dios te bendiga... Ojala subas otros algoritmos qué se usan en video juegos... Que Dios te bendiga a ti y a tu familia... ❤❤❤
Gracias :)
Pero más bien.... Lokita!
amigo, te amo demasiado. por favor que estos vídeos nunca terminen 😭🙏🏻
Wow amigo muchas gracias, en verdad me parece fascinante todo el tema matemático y ahora me doy cuenta que me gustaría investigar más el tema, gracias.
Este algoritmo: *existe*
Los dragoons de starcraft 1: 💀💀💀💀💀☠️☠️☠️
Me parece muy interesante e intuitiva tu forma de explicar esos algoritmos.😊 Actualmente estoy estudiando una licenciatura en matemáticas y guardaré el codigo por si me sea necesario en un futuro 😅.
Bro, este año estas subiendo obras maestras 💅💅💄
Que buen video hermano🙌
Muchísimas gracias por este gran vídeo
Excelente video !!! Es muy útil !!
No diseño videojuegos ni de lejos, pero soy ingeniero y me ha parecido muy interesante y entretenido. Felicidades por este pedazo de video, muy bien explicado
Excelente video, a los que estamos aprendiendo programación nos da mucha ayuda.
El contenido que merezco
Genial video y explicación. Debo decir que la IA es una gran ayuda, al momento de intentar recrear el algoritmo
Nuevo Sub, muy buen contenido y excelente explicación
Ese algoritmo no funciona en el AOEII DefinitiveEdition porque ahí hasta se ponen a bailar cuando los mueve en bola, se regresan o se quedan como idiotas caminando contra los edificios
La verdad este algoritmo puede fallar en ciertos casos
Se merece su suscripción
6:32 está equivocado el costo H sería calculado por Pitágoras, de otra manera sería calcular los caminos mas cortos en cada iteración y pues no tenemos esa info. Debería ser una línea recta del nodo a la meta, solo contando en x y y, para luego usar sqrt(x*x+y*y)
En realidad hay distintas formas de hallar la distancia en el costo H (Heurística), la que planteas tu se llama distancia Euclidiana (que es hacer un pitagoras y ya), la que use yo es una forma adaptada de la distancia Manhattan, ambas funcionan, ya depende de como quieras adaptar tu algoritmo. Sobre lo del camino mas corto, si tienes razón, en realidad SI es como hallar el camino mas corto PERO cuando no hay obstaculos, como es una distancia, no toma en cuenta obstaculos asi que en realidad no se puede usar para hallar el camino mas corto. Sobre lo de que no existe info, si hay, existe una formula para hallar la distancia que estoy usando sin mas info que la posicion del nodo analizado y la posicion del nodo final. Checate este link, esta con el nombre de "Diagonal distance". theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#diagonal-distance
super buena explicacion!
muy didactico
Yo pensando que este concepto que ví en inteligencia artificial solo iba a estar en una clase, gran vídeo!
Muy interesante tu vídeo, me gusta como explicas ese algoritmo que está detrás de muchos juegos. Igual me gustaría saber cómo se aplicaría en entornos más complejos como por ejemplo caminos con curvas o en tres dimensiones
Los caminos con curvas pueden igualmente volverse una cuadrícula, simplemente tendrías que hacer nodos/casillas mas pequeños y ya, asi simulas una curva. Para modelos 3d, se puede usar A* , pero de forma un poquito mas compleja, a traves de lo que se conoce como "Navmesh", puedes buscar eso para mas info.
Muy buen video. Gracias por él. Saludos.
buen video.
tengo muchisima experiencia en computacion......pero nunca me habia puesto a analizar ese algoritmo de encotrar el camino mas corto.
soy mas partidario de la recursion que de la iteracion.
estoy aprendiendo love para hacer juegos, creo qeu voy a marcar este video, el juego que tengo en mente no usa realmente rutas, pero algunos de los que tengo pensados si, asi que esto me sera muy util.
creo que lo hare con recursion.
tenga su like.
Me acabas de recordar de un bot que hice para un viejo juego llamado Dofus, buen video
Hermoso ver la matematica aplicada :3
Entre por curioso y termine recordando Python, muchas gracias por el video
Excelente aporte, muchas gracias.
Hermosa , buenos videos , un saludo
que gran video y de calidad 🤓
Gracias a estas bases fue que comencé mucho antes que tú a desarrollar una ToolKit para Stride Engine de Pathfinding para juegos de RTS. La ToolKit que desarrolle se llama Northgard, y te preguntarás ¿por qué le puse ese nombre?, básicamente porque es uno de los juegos que paso gran parte de mi vida enviciado, un juego que a mi en lo personal está tan bien hecho mejor que el AoE, que no solo me genera nostalgia sus temas nórdicos sino, que es precisamente la inspiración que tuve a la hora de programar y producir la herramienta. Sin embargo, tuve que leer libros para entender funciones matemáticas, trigonometría y físicas de bajo nivel. Sin embargo tu vídeo lo resume de tal manera que parece simple pero no lo es. Programar no es lo mismo que desarrollar, desarrollar es cuando utilizas herramientas y funciones creadas por programadores, eso incluye los frameworks y el código scripting, los programadores creamos herramientas para que los desarrolladores lo utilicen, por eso el programador que sabe programar conoce las matemáticas, nunca se va a conformar con lo que le da el motor o framework, siempre buscará una forma de re-inventar la rueda aunque la rueda ya exista, precisamente se debe a esto: La programación es un Descubrimiento, el día de mañana puede existir un Z* del pathfinding por alguien que se animó a experimentar, probar nuevas cositas, el programador que sabe es un inventor por naturaleza, requiere de estudio constante y saber de matemáticas. S2 👨💻
Genial recomendación por parte de TH-cam. Gracias por el contenido. Por cierto, ¿como se llama el soundtrack inicial del video? Saludos.
@@MostVicious3d Buscalo como ".hack//infection Desktop theme"
Excelente video saca más así
Que buena explicación!!
muy interesante, gracias!
muy bien explicado
el desarollo de videojuegos es arte casi lloro
Muy buen video y bien explicado, pero siento que faltó un par de cosas por mencionar.
1°. El algoritmo de Dijkstra si bien es algo lento porque como bien mencionas y muestras recorre cada nodo, pero esto tiene su propósito, pues este algoritmo no solo encuentra el camino más corto de un nodo inicial a uno final, lo que hace es encontrar el camino más corto desde un nodo inicial hacia cualquier otro nodo, o sea, es más fuerte y es por eso que demora más. De cualquier forma entiendo que a efectos del requerimiento entiendo que la mejor opción aquí es usar A*.
2°. Si mal no tengo entendido, A* no encuentra por lo general la solución óptima, sino que una seudo-óptima, o sea, una aproximada justamente por el uso de heurísticas, en cambio Dijkstra sí, siempre da la solución óptima.
Aclaro igual sobre lo segundo no estoy del todo seguro, pues el A* solo lo había visto en un video en el que se mencionaba precisamente esto, de igual forma agradecería si me corrigen esto último
Muy buena explicación! Estudiaste algo relacionado a informática o programación? O aprendiste esto por tu cuenta?
Soy inge, no informatico aunque toque algunos temas en cursos, todo lo que sé de computer science y programación lo aprendí por mi cuenta.
@llamaelitista hola acabo de ver el video, me gustó mucho como está explicado, me imagino que ya deben haber implementado una búsqueda de camino más corto que vaya del inicio al fin y del fin al inicio paralelamente que puedan compartir información cuando se lleguen a nodos intersectados por ambas búsquedas, eso debería reducir el tiempo a la mitad, pero no ví que se mencionara algo así en el video
¡Muchas gracias, excelente video! Tengo una duda:
¿Cómo la unidad sabe cuál es la ruta cuando el mapa NO está explorado? ¿Aun así conoce el mapa?
El problema con este algoritmo es que para ser 100% eficiente necesita conocer TODOS los factores que influyen a la hora de lograr un objetivo.
Se podría utilizar aun sin saberlo todo pero es probable que no sea tan eficiente. Eso si, en comparación con los algoritmos convencionales, sigue siendo la mejor opción ya que son casos bastante puntuales en los que no da mejores resultados que el resto
Excelente video 👍
Increíble tu canal buen video
No estudio mada relacionado a esto perp igual vi el vídeo completo. Me atrapó el tema y lo entendí perfecto, gracias
En godot creo que estaba implementado y simplemente es ponerlo como miembro, como no sé pa que servía, me vi este video xd
Ni idea que hago aquí, pero me ha gustado bastante 🫶 gracias!
la mejor explicación del tema
Recuerdo cuando estudiaba en la ingeniería, nos enseñaron este algoritmo pero hacíamos todos los cálculos a mano para programar cómo una paquetería repartiría los pedidos que tuviera y otros ejemplos asì
Muy bueno! gracias
Muy buena esa H, la unifica
Excelente video! Finalmente entendí el algoritmo. No obstante tengo una duda: sería posible añadir un test de visibilidad (trace del nodo al jugador) en cada nodo del A* para que el camino no solo sea el más corto, sino también el más oculto a la vista del jugador?
Estoy desarrollando un juego indie en UE5 y busco una forma de hacer que mis enemigos flanqueen de manera inteligente. He probado EQS, FSMs, y demás, pero parece que tendré que modificar el A* del engine para obtener buenos resultados. De ser posible, podría usar EQS para encontrar un punto en la espalda/laterales del jugador, y usar el A* modificado para que el enemigo se mueva hasta ese punto pasando por el camino con más coberturas.
En cualquier caso, nuevo sub :) tienes contenido muy interesante, sigue así!
Mmmm, muy interesante, a si a primera prueba se me ocurre que podrías hacer que la vista del jugador se vuelvan nodos obstaculos, por ejemplo si tu jugador ve en línea recta todos esos nodos/casillas hasta choca su vista se vuelven obstáculos, en la realidad no son, pero para el algoritmo si serían por lo que tendría que calcular un camino que no implique pasar por esos nodos/casillas. Algo asi se me ocurre.
@@llamaelitista Una pena no poder poner imágenes por aquí, pero conseguido!
Lo que he hecho es un trace desde cada nodo a un vector que llamo VigilVector, este puede ser la posición del jugador, el goal del path, lo que sea. Si hay un hit antes de llegar al Vigil, el nodo esta oculto, si no pues es visible. Si es visible, incurre un costo alto modificable. He metido parámetros para hacer offset variable también y que el trace no choque con el suelo.
Me queda ajustar un poco los valores y meterle más parámetros para que se pueda aprovechar para más cosas que flanquear, pero funciona muy bien.
No podría haberlo hecho sin ver este vídeo, me has ayudado a entender como funciona en muy poco tiempo y de forma sencilla, eternamente agradecido 🙏
@@NekoDevX 🫡
Bro eres lo mejor 😘
Hace 1 mes me puse a aprender a programar juegos, el video me viene de 10.
Entonces, Tenemos años y años y años interactuando con algoritmos complejos de inteligencia artificial en base a modelos matematicos avanzados, pero las IA de hoy en día son mejores porque a una foto le puedes quitar la ropa a las personas. Pues así estamos
Como en el lol cuando le das a punto donde quieres ir en el mapa te marca el camino mas corto para llegar.
En el age 2 cuando querias enviar algo en barco, muchas veces el barco venia a ti antes que tu al barco quizas la IA detectaba que el barco era mas rapido y por eso hacia eso.
La matemática discretas es una rama de la matemática que me gustó mucho, incluso más que el simple hecho de querer programar.
Gracias causa
Excelente explicacion, un algoritmo me trajo aqui.