Відповіді:
Якщо ви шукаєте дослідження та дізнаєтесь про загальну перевірку маршрутів взагалі, я б точно запропонував вивчити більше, ніж один алгоритм. Ви хочете зрозуміти загальні поняття, але зможете застосувати їх до того, над чим ви працюєте. Більшість розробників ігор, які потребують будь-яких серйозних прослуховувань, закінчують написання власних власних алгоритмів, хоча на основі відомих рішень кожна гра є різною і матиме різні вимоги.
Я б почав з читання деяких більш відомих методів, таких як A *, Алгоритм Дейкстри, Глибина та Шіст-Перший. В Інтернеті є багато хорошої інформації про кожне з них. ( http://en.wikipedia.org/wiki/Pathfinding )
Читаючи їх, зверніть увагу на те, які переваги та недоліки мають кожен підхід, а також тип даних, якими може працювати алгоритм. Чи можна його застосувати до тривимірних контурів? Чи можна його змінити, щоб врахувати наш людський ШІ, який хоче уникати мін на карті?
Що стосується шляху пошуку, A * - це майже золотий квиток, яким користуються всі. Ви обов'язково повинні знати, як це працює. ( http://en.wikipedia.org/wiki/A*_search_algorithm )
Ось хороший приклад A *, як це стосується гри RTS, яка повинна враховувати об'єкти різного розміру: http://aigamedev.com/open/tutorials/clearance-based-pathfinding/
Удачі!
Алгоритми Pathfinding - це в основному алгоритми вирішення задач пошуку графіків.
http://en.wikipedia.org/wiki/Pathfinding#Algorithms
Найбільш відомий алгоритм Джикстри: http://en.wikipedia.org/wiki/Dijkstra's_algorithm
та його варіант A алгоритм пошуку: http://en.wikipedia.org/wiki/A*
Це чудовий початковий ресурс, який розглядає всі аспекти пошуку шляху в дуже легкому для засвоєння підході.
Примітки Аміта про пошук шляху
... Pathfinding вирішує проблему пошуку хорошого шляху від вихідної точки до мети ― уникнення перешкод, уникнення ворогів та мінімізація витрат (палива, часу, відстані, обладнання, грошей тощо). Рух вирішує проблему проходження шляху і руху по ньому. Можна витратити свої зусилля лише на одне з них. В одному крайньому випадку, витончений дорожник у поєднанні з тривіальним алгоритмом руху ...
Pathfinding є досить вирішеною проблемою ... як згадується майже у кожній відповіді тут, деяка зміна на A * буде тим, що ви використовуєте.
Велике завдання для мене - це те, як ви хочете представляти свій шлях . Використання сітки, коди шляху, навмеші, ієрархічні сітки або інші складні структури тощо.
Я не маю на увазі конкретних посилань, але вивчаючи AIGameDev дасть вам усілякі ідеї щодо того, що там є.
Просто пам’ятайте, що у кожного представництва є свої плюси і мінуси; справа не в пошуку «найкращого», а в пошуку того, який найкраще підходить для вашого ігрового процесу .
У Вікіпедії є хороший список: Pathfinding
Наскільки я знаю, A * і D * обидва досить популярні.
Існує кілька алгоритмів пошуку шляхів.
Один з найпопулярніших - це, мабуть, A * ( A-Star ). Це дуже корисний алгоритм, якщо у вас є евристична функція, яка може забезпечити ваші передбачувані витрати для досягнення мети (наприклад, відстань прямої огляду до цілі). * * Дуже корисно, щоб знайти найкоротший шлях від початку до кінцевої точки.
Крім цього, існує також алгоритм Діккстри, який дуже корисний для пошуку найближчого елемента з декількох елементів. Напр. якщо ви хочете дізнатися, яке джерело живлення (або подібне) найближче до вашого ігрового персонажа.
Існує декілька інших алгоритмів, але я думаю, що A * є на сьогодні найбільш популярним. Мат Бакленд має чудову главу про пошук шляху у своїй грі програмування AI за прикладом . Я настійно рекомендую вам отримати його копію. Інакше ви знайдете безліч інформації в Інтернеті, шукаючи "Зоряний пошук".
Ось підручник із використання алгоритму Діккстри для наведення маршруту.
Ось хороший приклад використання A * у грі з кодом psuedo: http://www.anotherearlymorning.com/2009/02/pathfinding-with-a-star/
Це не багато грунтовки, але ми обговорили графічні алгоритми в нашому класі алгоритмів минулої осені 2009 року. Ми використовували цю книгу,
Вступ до алгоритмів, третє видання Томаса Х. Кормена, Чарльза Е. Лейерсона, Рональда Л. Рівеста та Кліффорда Штейна
http://mitpress.mit.edu/algorithms/
а також він має супровідні лекції youtube з класу MIT.
Глави 17, 18 та 19 розглядали найкоротші шляхи.
Див. [Алгоритми пошуку графіків та дерев] у Вікіпедії 1 . Вони в основному є лише варіантами державного космічного пошуку. Вам просто потрібно пройти все це і знайти там, де вони відрізняються.
Існує також спільна дифузія , яка є одним із згаданих раніше алгоритмів, зробленим цікавим способом.
Це виглядає цікаво:
http://www.codeproject.com/Articles/455 Цікаво, що це краще за A *?