Я хотел реализовать игру Pacman. Для ИИ я думал об использовании алгоритма A *, увидев его на многочисленных форумах. Тем не менее, я реализовал Breadth First Search для некоторого простого поиска пути (от точки a до точки b с определенными препятствиями между ними) и нашел, что он дал оптимальный путь всегда. Я думаю, это может быть потому, что в игре, такой как pacman, которая использует простое отслеживание пути, нет понятия затрат на графике. Итак, будет ли ОК, если я использую BFS вместо A * для поиска пути в Pacman?Алгоритм Pathfinding для Pacman
ответ
Для пути по установлению фактов, обратите внимание на следующее
- BFS будет выглядеть на много больше узлов, чем A * Будет, что делает его гораздо медленнее
- A * придумает тот же ответ, как BFS
- A * действительно легко осуществить
- Используйте Manhattan Distance как ваш эвристики - это безумно легко реализовать, и приводит к очень эффективные поиски
- Посмотрите на http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html для получения дополнительной информации (вся серия действительно интересно)
Если вы говорите о призраке AI, проверьте страницу Чад отметил: The Pac-Man Dossier - призраки на самом деле просто использовать евклидовой когда вы определяете, как сделать это с их целевыми плитами, что делает их очень плохими в поиске Pac Man в некоторых случаях.
BFS всегда укажет кратчайший путь, если не используются никакие веса. Если вам не нужны весовые коэффициенты, я бы это использовал. Вы всегда можете переключиться позже.
спасибо! У меня была догадка, что это может быть так. – Karan
bfs излишне медленный, хотя – user151496
Для простой игры pac-man вряд ли это будет иметь значение. – rlbond
Ну, это зависит от того, действительно ли вы хотите, чтобы призраки работали так же, как в Pac-Man?
Here's a description of how the ghosts' chase AI works (каждый из них работает по-разному). Обязательно прочитайте вышеприведенную главу о том, как они на самом деле пытаются добраться до своего target tile. Эта страница представляет собой удивительно подробный анализ Pac-Man, интересного чтения.
спасибо за ссылку! – Karan
Спасибо, Чад. Раньше я не читал эту статью. – Audie
Ссылка мертва ... – GingerPlusPlus
Связанные вопрос, который, вероятно, ответ на ваш вопрос: Path finding in a Java 2d Game?
Это зависит от многого. BFS является полным и оптимальным (в том смысле, что он находит оптимальное решение)
Недостатком? Это может занять много времени, долгое время, чтобы найти его! Кроме того, в зависимости от коэффициента ветвления вашей проблемы вы можете быстро разрядиться.
Если у вас нет проблем с производительностью, тогда держите BFS, но если вы хотите попробовать его в огромном лабиринте, то для получения решения может потребоваться некоторое время.
Предлагаю вам попробовать A *, лучшую стратегию поиска IMHO. Даже если у вас нет проблем с BFS, A * - хороший алгоритм для реализации, и вы узнаете много классных вещей.
Возможно, вы захотите рассмотреть подход, основанный на использовании антиобъектива, который использовали оригинальные дизайнеры Pacman, вы можете прочитать об этом here и here.
Однако, чтобы ответить на ваш вопрос, используйте то, что работает! Если вы получаете хорошие результаты от BFS, используйте его. Не забудьте полностью отследить путь, который вы можете заменить позже, если найдете что-то лучше.
Удачи вам!
- 1. Pacman pathfinding heuristic
- 2. Алгоритм Pathfinding для 2 Pacmans
- 3. Алгоритм поиска для Pacman
- 4. Алгоритм Pathfinding для робота
- 5. Как создать алгоритм трассировки пути для pacman?
- 6. Алгоритм PathFinding в этой реализации сетки
- 7. Алгоритм PathFinding: как эффективно обрабатывать изменяющиеся весы
- 8. BFS для призрака pacman
- 9. Optimal Pathfinding
- 10. Реализация iPhone Pathfinding
- 11. Star Pathfinding
- 12. PHP A * Pathfinding не может работать для сложного лабиринта HackerRank
- 13. В Pacman делают призраки самостоятельно выбирают пути для поиска pacman?
- 14. Pathfinding с разрушаемыми препятствиями
- 15. Randomize AI pathfinding в игре
- 16. A * Pathfinding java не работает должным образом
- 17. A * Алгоритм Pathfinding - поиск пути, но не оптимальный лучший путь
- 18. помощь для pacman в android?
- 19. Pathfinding на большой карте
- 20. A * pathfinding slow
- 21. A * Алгоритм Pathfinding, дающий странный путь (Текстовая карта - Нет GUI)
- 22. Pacman maze в Java
- 23. AI Pathfinding в Lode Runner
- 24. Pathfinding - StackOverflowError
- 25. Mass astar pathfinding
- 26. Pathfinding с решениями
- 27. A * Pathfinding данных Структура
- 28. Visual Pathfinding между визуальными узлами
- 29. PrologSWI - PathFinding
- 30. A * Pathfinding очень медленно
К сожалению, демонтаж Pac-Man был удален. –
A * не является оптимальным в общем случае, как вы говорите. Гарантируется только поиск оптимального решения с допустимой и последовательной эвристикой. – b3bop
@ b3bop Вы правы для общего случая; Я говорил о случае использования Манхэттенского расстояния на сетке (т. Е. Лабиринте Pac-Man). В этом случае эвристика является допустимой и последовательной, а A * будет иметь тот же ответ, что и BFS. –