D * ist ziemlich involviert - ich empfehle nicht zu versuchen, es zu implementieren. Sogar bei Projekten, die gut finanziert sind und von klugen / erfahrenen Leuten entwickelt werden, wird D * lite verwendet, weil es so schwierig ist, mit D * richtig umzugehen.
Sie könnten an dieser Präsentation interessiert sein, die eine Diskussion über die Wegfindung von Left 4 Dead beinhaltet:
http://www.valvesoftware.com/publications/2009/ai_systems_of_l4d_mike_booth.pdf
Ein Ansatz besteht darin, eine grobe Suche der Ebene A * zu verwenden, um einen allgemeinen Pfad für einen Agenten abzurufen, und dann eine Feineinzelheitssuche der Ebene A * für die lokale Umgebung eines Agenten durchzuführen. Auf diese Weise können Sie die Suche nach Kursdetails A * schnell neu berechnen, wenn sich das Gelände ändert. Anschließend können Sie die Suche nach feinen Details A * schnell nach einem kleinen Segment der Umgebung neu berechnen. Das ist nicht perfekt. Dies funktioniert so lange, wie Ihre Hindernisse nicht mehrere Kursdetail-Diagrammknoten blockieren können, was für die meisten Spiele in Ordnung ist. Dies ist die Methode, die ich empfehle, wenn Sie weniger als 100 Agenten haben.
Wenn Sie Hunderte oder Tausende von Agenten unterstützen möchten, können Sie so etwas wie Continuum Crowds implementieren. Sehen Sie sich diese Studie an:
http://grail.cs.washington.edu/projects/crowd-flows/ Hier wird
eine rein CPU-basierte Methode beschrieben, die Tausende von Akteuren in einer dynamischen Umgebung unterstützen kann.
Wenn Sie Zehntausende oder Hunderttausende von Agenten unterstützen möchten, können Sie mit GPU-Unterstützung so etwas wie Continuum Crowds implementieren. Hier finden Sie relevante Informationen:
https://a248.e.akamai.net/f/674/9206/0/www2.ati.com/misc/siggraph_asia_08/GPUCrowdSimulation_SLIDES.pdf
Hier ist ein Video, in dem die Massen des Kontinuums in Aktion demonstriert werden:
http://www.youtube.com/watch?v=lGOvYyJ6r1c
(Fahren Sie mit 4:10 fort, um große dynamische Hindernisse wie Autos und Ampeln zu sehen, die Hunderte von Menschen betreffen, die in einer Stadt herumlaufen.)