Bir Haritadaki Ülkeler Arasındaki Bağlantıları Gösterecek Veri Yapısı


9

Bir müşteri için geliştirdiğim bir oyunda, anahtar oyun konsepti bir harita üzerinde hareket etmeyi içerir. Bu durumda, çeşitli ülkelerin boyutları ve şekilleri ve bu tür konular ilgisizdir: bir ülkeden bitişik bir ülkeye geçmek tek bir adım olarak sayılır.

Ülkeler arasındaki bağlantıları dahili olarak temsil etmek için en iyi veri yapısını anlamaya çalışıyorum. Belirli bir ülke için, oyunun hangi ülkelerin bitişik olduğunu bilmesi gerekir; hem oyuncuların hangi yollarla hareket edebileceğini bilmek hem de oyunun AI'sının rotaları çizmesine izin vermek ve bir ülkeden diğerine olası yolları belirlemek için. AI ayrıca, sadece hemen komşu komşularıyla değil, bu ülkelerin komşularıyla da bir ülkenin ne kadar iyi bağlandığını değerlendirmelidir.

Birkaç olasılık buldum ama onlar hantal ve verimsiz görünüyorlar. AI'nın hareketi hakkında iyi kararlar verebilmek için bir dizi olası rotayı hesaplaması gerekeceğinden, "verimsiz" oldukça sorunludur.

Bunun biraz yaygın bir CS bulmacası olduğundan ve ortak bir çözüm olduğundan şüpheleniyorum, ancak arayarak fazla bir şey bulamadım. Herhangi bir öneri bekliyoruz.


Bunu GameDev.StackExchange'te sormam gerekirse bana bildirin. Burada soruyorum çünkü her türlü kalkınma problemi için bu tür bir şeye ihtiyaç duyulduğundan eminim ve onun sadece "oyun" tarafında, sadece rota planlama kısmında yardıma ihtiyacım yok.
Matthew Frederick

Bir grafiğe veya bir bağlantı matrisine ihtiyacınız var (bu kullanışlı, çünkü kapanmanın hesaplanması kolaydır). Belki ikisine de ihtiyacınız vardır. Onlara bak.

2
Grafik veri yapılarına ve algoritmalarına göz atın: en.wikipedia.org/wiki/Graph_%28data_sttruc%29

1
Bu konu üzerine bana benzemiyor. GameDev ya da Stack Overflow'da olmalı, çünkü burada çok objektif bir konu var.

Yanıtlar:



6

Kesinlikle bir Grafik. Şuraya göz atın Grafik Teorisi , temelde düğümleriniz ve kenarlarınız var. Bir düğüm diğer düğümlere 0 veya daha fazla kenar içerebilir.

En kısa yolu (şerbetçiotu veya mesafe) hesaplamak, döngüleri kontrol etmek (bir kendine ulaşmanın birden fazla yolu), vb. İçin birçok algoritma vardır.

Şimdi, verimli çözümler uygulayabilmek için, bu biraz daha karmaşık, ama her zamanki gibi, yollar var.


Mükemmel teşekkür ederim. Bu tür algoritmaları nerede bulacağınız konusunda herhangi bir öneriniz var mı? Çok kısa bir yola ihtiyacım yok, ama çemberleri kontrol etmek gibi şeyler çok kullanışlı olurdu.
Matthew Frederick

2

Daha önce de belirtildiği gibi, ülkeler arasındaki tüm olası bağlantıları temsil eden bir grafiğe ihtiyacınız olacaktır. Her bağlantı aynı zamanda iki ülke arasındaki mesafeyi de koruyacaktır.

Daha sonra iki ülke arasındaki en kısa yolu belirlemek için A * gibi bir yol bulma algoritması kullanılabilir.

Oyun AI hakkında bazı iyi kitaplar da var: Oyun AI, örneğin Mat Buckland tarafından http://www.ai-junkie.com/books/toc_pgaibe.html

ya da AI Game Programming Wisdom serisidir. http://www.aiwisdom.com/ İlk kitabın yol bulma hakkında birkaç bölümü var.


Mükemmel, kitap işaretçileri için teşekkür ederim. Bir sürü AI kitabı var gibi görünüyor ve kişisel öneriler, aramadan elde ettiğim geniş sonuçlardan çok daha iyi.
Matthew Frederick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.