Yanıtlar:
Genel olarak yol bulma hakkında araştırma yapmak ve öğrenmek istiyorsanız, kesinlikle birden fazla algoritmadan daha fazlasını öğrenmenizi öneririm. Genel kavramları anlamak isteyeceksiniz ancak üzerinde çalıştığınız her şeye uygulayabilirsiniz. Herhangi bir ciddi yol bulma işi yapması gereken çoğu oyun geliştiricisi, bilinen çözümlere dayanmasına rağmen, her oyunda farklı ve farklı gereksinimlere sahip olacak olsa da, kendi özel algoritmalarını yazıyor.
A *, Dijkstra's Algoritması, Derinlik ve Genişlik-İlk aramaları gibi daha iyi bilinen yöntemlerden bazılarını okuyarak başlardım. İnternette bunlardan her biri hakkında birçok iyi bilgi var. ( http://en.wikipedia.org/wiki/Pathfinding )
Bunları okurken, aşağı ve yukarı tarafların her bir yaklaşım için ne olduğuna ve algoritmanın çalışabileceği veri türüne dikkat edin. 3 boyutlu yollara uygulanabilir mi? Haritadaki kara mayınlarından kaçınmak isteyen insan AI'mızı hesaba katabilecek şekilde değiştirilebilir mi?
Yol bulmaya gelince, A * hemen hemen herkesin kullandığı altın bilet. Nasıl çalıştığını kesinlikle bilmelisin. ( http://en.wikipedia.org/wiki/A*_search_algorithm )
Aşağıda, farklı büyüklükteki varlıkları hesaba katması gereken bir RTS oyunu için geçerli olan A * 'nın güzel bir örneği verilmiştir: http://aigamedev.com/open/tutorials/clearance-based-pathfinding/
İyi şanslar!
Yol bulma algoritmaları temel olarak bir grafik arama problemi çözme algoritmalarıdır.
http://en.wikipedia.org/wiki/Pathfinding#Algorithms
En bilinenleri Djikstra'nın algoritması: http://en.wikipedia.org/wiki/Dijkstra's_algorithm
ve değişken A * arama algoritması: http://en.wikipedia.org/wiki/A*
Bu, yol bulmanın tüm yönlerine, sindirimi çok kolay bir yaklaşıma bakarak harika bir başlangıç kaynağıdır.
Amit'in Yol Bulma Üzerine Notları
... Yol bulma, başlangıç noktasından hedefe doğru iyi bir yol bulma sorununu ― engellerden kaçınmak, düşmanlardan kaçınmak ve maliyetleri en aza indirmek (yakıt, zaman, mesafe, ekipman, para vb.). Hareket, bir yol alma ve onun üzerinde hareket etme sorununu ele alır. Çabalarınızı bunlardan sadece birine harcamak mümkündür. Bir uçta, önemsiz bir hareket algoritması ile birleşmiş sofistike bir patlayıcı ...
Yol bulma oldukça çözülmüş bir sorundur ... buradaki hemen hemen her cevapta belirtildiği gibi, A * 'daki bazı varyasyonlar kullandığınız şey olacaktır.
Bana karşı en büyük zorluk, yolunu nasıl temsil etmek istediğin . Bir ızgara, geçitler, navmeshes, hiyerarşik ızgaralar veya diğer karmaşık yapılar, vb kullanarak
Aklımda belirli referanslar yok, ancak AIGameDev'i keşfetmek , size orada olanlarla ilgili her türlü fikri verecektir.
Sadece her temsilin artıları ve eksileri olduğunu unutmayın; 'en iyisini' bulmakla ilgili değil, oyununuz için en uygun olanı bulmakla ilgili .
Wikipedia'da iyi bir liste var: Pathfinding
Bildiğim kadarıyla, A * ve D * ikisi de oldukça popüler.
Orada birkaç yol bulma algoritması var.
En popüler olanlardan biri muhtemelen A * ( A-Star ). Bir hedefe ulaşmak için tahmini maliyetler verebilecek sezgisel bir işleve sahipseniz bu çok kullanışlı bir algoritmadır (örneğin, hedefe görüş hattı mesafesi olabilir). A *, başlangıçtan bitiş noktasına kadar en kısa yolu bulmak için çok kullanışlıdır.
Bunun dışında Dijkstra'nın birkaç öğeden en yakın öğeyi bulmak için çok yararlı olan algoritması da var . Örneğin. Hangi karakterin (veya benzerlerinin) oyun karakterinize en yakın olduğunu bulmak istiyorsanız.
Orada başka algoritmalar da var, ama sanırım A * en popüler olanı. Mat Buckland'ın Örnek Programındaki Kitap Programlama Oyunu AI'da Yol Bulma ile ilgili mükemmel bir bölümü var . Bir kopyasını almanızı şiddetle tavsiye ediyorum. Aksi halde, "Yıldız Arama" aramak için çevrimiçi bilgi bulabilirsiniz.
İşte Dijkstra's Algoritmasını yol bulma için kullanma konusunda bir eğitim .
Bazı * Psuedo kodları olan bir oyunda kullanılan A * 'nın güzel bir örneği: http://www.anotherearlymorning.com/2009/02/pathfinding-with-a-star/
Bu çok fazla bir astar değil, ancak geçen sonbaharda geçen algoritmalar sınıfımızda grafik algoritmalarını yoğun bir şekilde tartıştık. Bu kitabı kullandık,
Algoritmalara Giriş, Üçüncü Baskı, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest ve Clifford Stein
http://mitpress.mit.edu/algorithms/
ve ayrıca bir MIT sınıfından youtube derslerine eşlik etti.
17., 18. ve 19. Bölümler en kısa yollarla ele alındı.
Wikipedia 1'deki [Grafik ve ağaç arama algoritmaları] bölümüne bakın . Onlar hemen hemen Devlet Uzay Aramasının bir çeşitlemesidir, sadece bunların hepsine girmeniz ve farklı oldukları yerleri bulmanız gerekir.
Daha önce ilginç bir şekilde yapılan algoritmalardan biri olan İşbirlikçi Yayılma da var .
Bu ilginç görünüyor:
http://www.codeproject.com/Articles/455 Acaba A * 'dan daha mı iyi?