DampeS8N'nin açılış paragrafına katılıyorum (yani oyun AI'nın sadece oyuncunun akıllı olduğunu düşünecek kadar akıllı olması gerekiyor ), bu sorunun biraz daha fazla detaylandırılması gerektiğini düşünüyorum. Kullanılan veri yapıları tüm seviyeler için FSM'ler olabilir, ancak bu bireysel sistemlerin nasıl çalıştığı sorusuna cevap vermez .
Feragatname: Uygarlık oyunlarını zor oynamıştım, bu yüzden oyun anlayışım sınırlı. Herhangi bir belirgin hata varsa, özür dilerim. Lütfen beni düzeltin, ben memnuniyetle düzenleyeceğim.
Orijinal IGN Makalesinden alıntılar alıyorum .
1. Taktik AI
En düşük seviyede, taktiksel AI, yerel ölçekte bir savaş kazanmak için eldeki kuvvetleri kullanır.
Bu muhtemelen alt sistemin en standart kısmıdır. Bunu FSM'leri, Davranış Ağaçlarını kullanarak (veya AI'nın zorluğuna bağlı olarak rastgele eylemler gerçekleştirerek) yapmanın sınırsız yolu vardır.
Ancak, bu bir sıra tabanlı oyun, Risk'e benzer olduğu için, daha muhtemel olan şey, her birime bir puan verilmesidir. Daha sonra farklı değişkenlere (bağlılıklar, arazi primleri, vb.) Bağlı olarak bu puana eklenen çarpanlar vardır.
Sonuç, şöyle bir şeyle hesaplanır:
If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit
Bu, AI'nın savaşta bu puanı en üst düzeye çıkarmaya çalışacağını ve mantıklı olacağı anlamına geliyor.
Bir epsilon değeri ekleyin (örneğin, küçük rastgele başarısızlık / başarı şansı) ve oldukça iyi görünümlü bir AI elde edersiniz (hiç kimse mükemmel bir rakip istemez, bu eğlenceli değildir!).
2. Operasyonel AI
Bundan bir adım ötede, operasyonel AI hangi mücadele için savaşacağını seçer ve gerekli kuvvetlerin mevcut olduğundan emin olur.
Bence bu konuda birkaç nokta var:
- Mevcut gücü değerlendirme
- Birimlerin güçlendirilmesi
- Hangi savaşın seçileceğini / kaçınacağının değerlendirilmesi
Mevcut Gücü Değerlendirmek - Bu sadece Etki Haritasını bana haykırıyor . Onaltılık bir ızgara üzerinde kolayca temsil edilebilir. Bu alt sistem savaş odaklı olduğundan, etki değerleri, bölgedeki her birimin güç değerlerini temsil edebilir. Küçük bir altıgen bölgeye odaklanmış büyük bir ordunuz varsa, etki değeri büyük olacak ve operasyonel AI seçim için verilen mücadeleleri değerlendirirken bunu dikkate alacaktır. Unutma, muhalif orduların etki değerleri de hesaplanacak. Bu, operasyonel AI'nın potansiyel gelen tehditleri tahmin etmesini sağlar.
Birimlerin güçlendirilmesi - Etki haritasından karşı taraflar hakkında bilgi alarak, AI hangi birimlerin en fazla tehdit altında olduğunu belirleyebilir. AI, daha sonra yaklaşmakta olan birimlere yaklaşmak ve tehdit altındaki tarafları güçlendirmek için bir komut verebilir.
Hangi savaşın seçileceğini / kaçınılacağını değerlendirme - Burada birkaç durum ortaya çıkabilir. AI bir ünitenin tehdit altında olduğunu tespit ederse VE buna yardım edecek yakındaki birimler yoksa, a) birimi feda etmeye karar verin (örneğin, yeri doldurulamaz bir genel yerine sadece piyade piyade çalıyorlarsa) veya b) Üniteyi sipariş edin geri çekilmek. Tersine, eğer AI bir ordunun yakınında zayıf bir düşman birimi tespit ederse, birimlerin bu düşmanı çıkarmasını emredebilir.
İşte Gerçek Zamanlı Strateji oyunlarında etki haritalarını kullanan iyi bir makale .
3. Stratejik AI
Daha da yükseğe çıkan stratejik AI imparatorluğu bir bütün olarak yönetir ve şehirlerin nerede inşa edileceğine ve onlarla ne yapılacağına odaklanır.
“Nerede bir şehir inşa etmeliyim?” sadece pozisyon değerlendirme gibi geliyor. Satranç programları ve diğer oyunlar, verilen bir pozisyonun arzu edilebilirliğini belirlemek için kullanır. Örneğin:
Hex A: Kaynaklara yakın, yüksek arazide, müttefiklere yakın, düşmana yakın Hex B: Kaynaklardan uzak, orta seviye arazide, müttefiklerden orta mesafe, düşmandan uzak
Konum değerlendirme fonksiyonu aşağıdaki gibi üç faktörü alabilir:
Score = Proximity to resources (closer yields a higher score) +
terrain elevation (higher yields higher score) +
proximity to allies (closer is better) +
proximity to enemies (farther is better)
Ve hangi altıgenin daha yüksek puanı varsa, kentin yapıldığı yer orası olacaktır. Değerlendirme fonksiyonları hakkında daha fazla bilgiyi burada bulabilirsiniz .
Stratejik AI'nın, AI'nın kazanacağı zaferin türüne bağlı olarak oyunda bir sürü sahte önceden belirlenmiş stratejileri olduğunu düşünüyorum.
4. Büyük Stratejik AI
Merdivenin en üstünde, oyunu nasıl kazanacağına karar veren büyük stratejik AI var.
Bence bu muhtemelen grubun en basiti ve gerçekte olduğundan daha etkileyici olduğu izlenimini veriyor. Bunun gibi bir oyunda, yalnızca sınırlı sayıda zafer türü olacak. Makale, aynı zamanda İttifak zaferleri olduğunu varsayarsak, bir fetih zaferinden bahseder; bu, türlerden birini rastgele seçmek ve daha sonra diğer sistemlere aktarmak kadar basit olabilir.
EDIT: Tabii ki, DampeS8N'in belirttiği gibi, haritanın türü, en iyi zafer koşulunu belirleyebilir; bu durumda, tasarımcılar veya farklı değişkenlerde faktoring yapan bir çeşit değerlendirme fonksiyonu faktörü tarafından kodlanabilir.
Özet
Bu tür bir sistem hakkında not almanın asıl önemli olduğunu düşündüğüm şey, alt sistemlerin katman biçiminin aslında birbirleriyle çok fazla iletişim kurmaları gerekmiyor. Gevşek bir şekilde bağlanmış bileşenleri ile yukarıdan aşağıya bir mimari gibi görünüyor. Teknik bir tasarım bakış açısından temiz ve esnektir ve muhtemelen Acil Davranış ve / veya Tüketim Mimarisinden ilham alır .
Gerçekten bu yazının uzunluğu için özür dilerim, bir canavara dönüştü :(
Her iki durumda da, yardımcı olur umarım!