Quería implementar el juego Pacman. Para la IA, estaba pensando en usar el algoritmo A *, habiéndolo visto en numerosos foros. Sin embargo, implementé la primera búsqueda de amplitud para buscar caminos sencillos (yendo del punto a al punto b con ciertos obstáculos intermedios) y encontré que daba la ruta óptima siempre. Supongo que podría ser porque en un juego como pacman que utiliza una ruta simple, no hay ninguna noción de costos en el gráfico. Entonces, ¿estará bien si uso BFS en lugar de A * para la búsqueda de caminos en Pacman?Algoritmo de identificación de ruta para Pacman
Respuesta
para la trayectoria de investigación, cuenta lo siguiente
- BFS mirará mucho más nodos que A *, que hace que sea mucho más lento
- A *, vienen con la misma respuesta que BFS
- a * es muy fácil de implementar
- uso Manhattan Distance como su heurística - esto es increíblemente fácil de implementar, y conduce a búsquedas muy eficientes
- Mira http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html para obtener más información (toda la serie es realmente interesante)
Si estamos hablando acerca del fantasma AI, echa un vistazo a la página de Chad mencionó: The Pac-Man Dossier - los fantasmas en realidad sólo tiene que utilizar la euclidiana distancia al determinar cómo llegar a sus casillas objetivo, lo que los hace muy malos para encontrar Pac Man en algunos casos.
BFS siempre dará la ruta más corta si no se utilizan los pesos de borde. Si no necesitas pesas de borde, usaría eso. Siempre puedes cambiar más tarde.
gracias! Tuve la corazonada de que ese podría ser el caso – Karan
bfs es innecesariamente lento, aunque – user151496
Para un juego simple de pac-man, es poco probable que importe. – rlbond
Bueno, esto depende, ¿de verdad quieres hacer que los fantasmas funcionen como lo hacen en Pac-Man?
Here's a description of how the ghosts' chase AI works (cada uno funciona de manera diferente). Asegúrate de leer también el capítulo anterior sobre cómo intentan llegar a su target tile. Esa página es un análisis maravillosamente profundo de Pac-Man, lectura interesante.
gracias por el enlace! – Karan
Gracias Chad. No había leído ese artículo antes. – Audie
El enlace está muerto ... – GingerPlusPlus
pregunta relacionada, lo que probablemente responde a su pregunta: Path finding in a Java 2d Game?
Depende. BFS es completo y óptimo (en el sentido de que encuentra la solución óptima)
¿La desventaja? ¡Puede llevar mucho, mucho, mucho tiempo encontrarlo! Además, dependiendo del factor de ramificación de su problema, puede quedarse sin memoria rápidamente.
Si no tiene problemas de rendimiento, guarde BFS, pero si quiere probarlo en un gran laberinto, puede llevar un tiempo obtener la solución.
Le sugiero que pruebe A *, la mejor estrategia de búsqueda en mi humilde opinión. Incluso si no tiene problemas con BFS, A * es un buen algoritmo para implementar, y aprenderá muchas cosas interesantes.
Es posible que desee considerar el enfoque antiobjetivo que utilizaron los diseñadores originales de Pacman, puede leer sobre él here y here.
Sin embargo, para responder a su pregunta, utilice lo que funciona. Si obtiene buenos resultados de BFS, úselo. Solo recuerde resumir el pathfinding lo suficiente como para poder reemplazarlo más adelante si encuentra algo mejor.
¡Buena suerte!
- 1. En Pacman, ¿los fantasmas eligen caminos independientes para encontrar pacman?
- 2. Cómo crear un laberinto de pacman aleatorio
- 3. laberinto Pacman en Java
- 4. ruta de raíles a la identificación específica
- 5. ¿Cómo implemento un algoritmo de identificación de ruta A *, con los costos de movimiento para cada lenguaje de programación?
- 6. Algunas preguntas con pacman path finding
- 7. Algoritmo para encontrar una 'ruta de expansión mínima'?
- 8. Algoritmo para seguir la ruta con una cierta inercia
- 9. Algoritmo para encontrar la ruta más corta, con obstáculos
- 10. Enfoques de un algoritmo de detección de ruta dinámica
- 11. ¿Es A * el mejor algoritmo de determinación de ruta?
- 12. Ruta de búsqueda de algoritmo en un árbol no dirigido
- 13. Búsqueda de ruta en un juego Java 2d?
- 14. Weighted Quick-Union con el algoritmo de Compresión de ruta
- 15. creé un pacman modificado, ¿cómo hacerlo respirar?
- 16. Algoritmo de ruta k-shortest (alternativo), implementaciones Java
- 17. ¿Por qué es solo una identificación en la ruta de URL una mala idea para SEO?
- 18. ruta más corta utilizando el algoritmo de Dijkstra
- 19. Cómo ver las notas de la versión/changelog con pacman
- 20. ¿Cuáles son las aplicaciones del algoritmo de ruta más corta?
- 21. Encontrar la ruta más corta usando el algoritmo de Dijkstra
- 22. Búsqueda de ruta para juegos
- 23. Algoritmo para generar colores únicos
- 24. Exploración de tabla inesperada para identificación! = Id
- 25. ¿Qué es un algoritmo rápido y estable para una ruta aleatoria en un gráfico de nodo?
- 26. En búsqueda de ruta: una descripción detallada para un lego del algoritmo D *
- 27. asp.net mvc parámetro de identificación de enrutamiento
- 28. ¿Tecnología de identificación de contenido de Youtube?
- 29. Algoritmo para comparación de voz
- 30. Algoritmo de búsqueda de gráficos
Desafortunadamente, el desmontaje del Pac-Man ha sido removido. –
A * no es óptimo en el caso general, como dices. Solo se garantiza que encontrará la solución óptima con una heurística admisible y consistente. – b3bop
@ b3bop Estás en lo correcto para el caso general; Estaba hablando sobre el uso de la distancia de Manhattan en una grilla (es decir, el laberinto de Pac-Man). En este caso, la heurística es tanto admisible como consistente, y A * obtendrá la misma respuesta que BFS. –