Risposte:
Se stai cercando di ricercare e conoscere il pathfinding in generale, suggerirei sicuramente di imparare più di un solo algoritmo. Ti consigliamo di comprendere i concetti generali ma di essere in grado di applicarli a qualsiasi cosa tu stia lavorando. La maggior parte degli sviluppatori di giochi che hanno bisogno di fare un serio pathfinding finiscono per scrivere i propri algoritmi personalizzati, anche se altamente basati su soluzioni note, ogni gioco è diverso e avrà requisiti diversi.
Comincerei leggendo alcuni dei metodi più conosciuti come A *, le ricerche Algorithm, Depth e Breadth-First di Dijkstra. Ci sono molte buone informazioni su Internet su ognuna di queste. ( http://en.wikipedia.org/wiki/Pathfinding )
Mentre li leggi, prendi nota degli aspetti positivi e negativi di ciascun approccio, nonché del tipo di dati su cui l'algoritmo può operare. Può essere applicato a percorsi tridimensionali? Può essere modificato per tenere conto della nostra IA umana che vuole evitare le mine antiuomo nella mappa?
Quando si tratta di pathfinding, A * è praticamente il biglietto d'oro che tutti usano. Dovresti assolutamente sapere come funziona. ( http://en.wikipedia.org/wiki/A*_search_algorithm )
Ecco un buon esempio di A * in quanto si applica a un gioco RTS, che deve prendere in considerazione entità di dimensioni diverse: http://aigamedev.com/open/tutorials/clearance-based-pathfinding/
In bocca al lupo!
Gli algoritmi di pathfinding sono sostanzialmente algoritmi di risoluzione dei problemi di ricerca di grafici.
http://en.wikipedia.org/wiki/Pathfinding#Algorithms
Il più noto è l'algoritmo di Djikstra: http://en.wikipedia.org/wiki/Dijkstra's_algorithm
e la sua variante A * algoritmo di ricerca: http://en.wikipedia.org/wiki/A*
Questa è una grande risorsa iniziale che prende in esame tutti gli aspetti della ricerca del percorso in un approccio molto facile da digerire.
Appunti di Amit sul Path-Finding
... Pathfinding risolve il problema di trovare una buona strada dal punto di partenza all'obiettivo ― evitando ostacoli, evitando nemici e minimizzando i costi (carburante, tempo, distanza, equipaggiamento, denaro, ecc.). Il movimento affronta il problema di prendere una strada e spostarsi lungo di essa. È possibile spendere i tuoi sforzi solo su uno di questi. Ad un estremo, un sofisticato pathfinder accoppiato con un banale algoritmo di movimento ...
Il pathfinding è un problema piuttosto risolto ... come menzionato in quasi tutte le risposte qui, alcune variazioni su A * saranno quelle che usi.
La sfida più grande per me è come vuoi rappresentare il tuo percorso . Utilizzo di una griglia, pathnodes, navmeshes, griglie gerarchiche o altre strutture complesse, ecc.
Non ho in mente riferimenti specifici, ma esplorare AIGameDev ti darà tutti i tipi di idee su cosa c'è là fuori.
Basta ricordare che ogni rappresentazione ha i suoi pro e contro; non si tratta di trovare il "migliore", si tratta di trovare quello che si adatta meglio al tuo gameplay .
C'è una buona lista su Wikipedia: Pathfinding
Per quanto ne so, A * e D * sono entrambi piuttosto popolari.
Esistono diversi algoritmi per la ricerca di percorsi.
Uno dei più popolari è probabilmente A * ( A-Star ). È un algoritmo molto utile se si dispone di una funzione euristica in grado di fornire costi stimati per raggiungere un obiettivo (ad esempio, la distanza della linea di mira dall'obiettivo). Un * è molto utile per trovare il percorso più breve da un punto iniziale a un punto finale.
Oltre a questo c'è anche l'algoritmo di Dijkstra che è molto utile per trovare l'elemento più vicino tra più oggetti. Per esempio. se vuoi scoprire quale potenziamento (o simile) è più vicino al tuo personaggio di gioco.
Ci sono molti altri algoritmi là fuori, ma immagino che A * sia di gran lunga il più popolare. Mat Buckland ha un eccellente capitolo su Path-Finding nel suo libro di programmazione AI per esempio . Ti incoraggio vivamente a procurartene una copia. Altrimenti troverai un sacco di informazioni online cercando "A Star search".
Ecco un tutorial sull'uso dell'algoritmo di Dijkstra per l'individuazione dei percorsi.
Ecco un buon esempio di A * utilizzato in un gioco con un codice psuedo: http://www.anotherearlymorning.com/2009/02/pathfinding-with-a-star/
Questo non è molto di base, ma abbiamo discusso ampiamente degli algoritmi grafici nella nostra classe di algoritmi lo scorso autunno 2009. Abbiamo usato questo libro,
Introduzione agli algoritmi, terza edizione di Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein
http://mitpress.mit.edu/algorithms/
e ha anche lezioni di accompagnamento su YouTube da una classe del MIT.
I capitoli 17, 18 e 19 hanno trattato dei percorsi più brevi.
Vedi [Algoritmi di ricerca di grafici e alberi] su Wikipedia 1 . Sono praticamente solo una variante di State Space Search, devi solo passare attraverso tutti questi e trovare dove differiscono.
C'è anche la diffusione collaborativa , che è uno degli algoritmi precedentemente menzionati fatto in modo interessante.
Questo sembra interessante:
http://www.codeproject.com/Articles/455 Mi chiedo sia meglio di A *?