Sıra Tabanlı Strateji Oyunları için Karma Oyun AI


26

Bir sıra tabanlı Strateji oyunu projesi için araştırma yapıyorum ve bu konuda iyi kaynaklar arıyorum. Oyun, ülkelerin birbirleriyle savaşabilecekleri, birimler yerleştirebilecekleri ve bu birimlerin altıgen bir tilemap üzerinde hareket edebildikleri, birbirlerine saldırabilecekleri vb.

Özellikle Medeniyet V AI'nın nasıl organize edildiğiyle ilgileniyorum! Wikipedia'ya göre oyun, oyunun yapay zekasının farklı katmanları için dört farklı yapay zeka sistemi kullanıyor:

  • taktik AI, bireysel birimleri kontrol eder
  • Operasyonel AI tüm savaş cephesini denetliyor
  • Stratejik AI tüm imparatorluğu yönetir
  • Büyük stratejik AI uzun vadeli hedefler koyuyor ve oyunu nasıl kazanacağını belirliyor

Kavramsal olarak bu, karmaşık bir AI elde etmenin çok anlamlı olduğunu ve bu farklı AI sistemlerinin nasıl çalıştığını (ve birlikte çalıştığını) merak etmemi sağlıyor gibi görünüyor. Taktik bir AI muhtemelen tek bir ünite için karar vermeyi (hareket, saldırı, tamir, geri çekilme, vb.) Karar verdiğinden dolayı anlaşılması en kolay olanıdır ancak bence diğer AI sistemleri gerçekten ilginçleşiyor. Örneğin, operasyonel AI ne yapar ve bunu nasıl yapar? Bunların Firaxis Games'in en iyi saklanan sırları olduğuna eminim, ancak bunun hakkında daha fazla bilgi edinmek için biraz tartışmaya başlamanız iyi olurdu.

Ayrıca eğer birisi sıra tabanlı strateji oyunu AI ile ilgilenen herhangi bir iyi kitap biliyorsa, bilmek de iyi olurdu. Açıkçası bu web üzerinde seyrek ekilen bir konudur. "Örnekleme Oyunu AI'yı Örnekle" aldım ancak bu kitap, üst düzey hedef odaklı AI'dan ziyade tek ajan davranışı AI hakkında.

Yanıtlar:


19

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!


2
"Bunun muhtemelen grubun en basit olduğunu düşünüyorum ve gerçekte olduğundan daha etkileyici olduğu izlenimini veriyor." Çok emin olmazdım. Sadece bir fetih zaferine gitmeye karar vermek ile kimin savaş açılacağına karar vermek, fazla uzatılmamamız ve barış için dava açmamız gerekip gerekmediği, hangi hedefi saldırmanın en zayıf olduğu, hangi birimleri oluşturmamız, kazanmamız gerektiğine karar vermek arasında bir fark var. sağ stratejik kaynaklar birbirleriyle kavga iki düşman neden için bir yol bulma, ordumuz güçlü hale getirmek, vb Bu aşama bir olduğu yeri için kredi vermek daha karmaşık.
Nicol Bolas,

1
Vay, ve cevabımın biraz uzadığını sanıyordum. LOL. İyi gösteri.
DampeS8N

1
Kayda değer bir şey, Civ'in kesinlikle basit zafer şartlarına sahip olmamasıdır. Kazanmanın birçok yolu var. Harikalar inşa etmek, bilimi ilerletmek, fethetmek, diplomatik yapmak, vb. Hangi yoldan seçileceğini seçmek genellikle çok zordur ve haritanın koşullarına göre değişebilir. Örneğin, henüz tanıştığınız birisinin bilimde önünüzde olduğunu keşfedebilirsiniz ve bu yolu terk edip yeni bir yol almak zorunda kalacaksınız. Genellikle başarı, seçeneklerinizi olabildiğince açık tutmaya gelir.
DampeS8N

@NicolBolas bundan çok daha karmaşık olabilir, ancak yaptığınız tüm puanlar AI'nın düşük seviyeleri için sorumluluk gibi görünüyor. Savaş ilan edeceğine karar verme -> Operasyonel. Hangi hedef saldırıya en zayıf -> Operasyonel / Taktik. Doğru kaynakların alınması -> Operasyonel / Stratejik. Bu tamamen tahmin edilir, ancak alt sistemlerin en düşük eşleşme seviyesini sağlamak için belirli stratejilerden sorumlu olduğunu anlam ifade eder.
Ray Dey,

1
@ RayDey: En yüksek AI seviyesinin, kaynak edinme gibi şeylere dahil olması gerekir, çünkü nasıl elde edileceğine karar vermesi gerekir. Diplomasi alabilirdi. Kaynağa genişletmek onu alabilir. Operasyonel seviye, birinin diğer taktiklerin aksine onunla savaşıp mücadele etmeyeceğine karar vermek için uygun bir yer değil. Birleşme, Medeniyet gibi bir oyun için bir gerekliliktir; her şey o oyunda başka her şeyi etkiler. Çok fazla bağlama yapmadan karar veren etkili bir AI’ya sahip olamazsınız. Bu Civ V'in AI'nın neden ... parlak olmadığını
açıklasa da

9

Genel olarak oyunlarda yapay zeka 'karmaşık' olarak düşünülmemelidir, hepsi istediğinizi en az çabayla almaktır. Oyunun adı Çıkış'tır.

Bu durumda, temel kavramsallaştırma yanlıştır. Bu 4 sistemin birlikte çalışması gerekmez. Sadece onlar gibi bakmak gerekir. Ayrıca, olması gerektiğini düşündüğünüzden daha fazla soyulmuş olabilirler.

Ayrıca zorluk derecesini tersine çevirdiniz. Civ AI'nin en zor bileşeni taktik AI'dir ve ardından Operasyonel yakından takip edilir. Stratejik muhtemelen çok basittir ve büyük AI muhtemelen hala daha basittir.

Bileşenler arasında iletişim daha çok bir homurdanma sistemi gibi ve daha az gerçek iletişim gibidir. Yüksek seviyeden düşük seviyeye kadar şöyle görünür:

Büyük AI

Haritanın durumunu değerlendirir. AI'nın sahip olduğu bilgiler göz önüne alındığında (ki her şey olabilirdi veya sadece bir oyuncu olsaydı ne olurdu), hangi son hedefine ulaşmanın en hızlı olduğuna karar verir. Büyük olasılıkla bir miktar çatırtı yapan ve bir hedef seçen bir Sonlu durumlu makinedir . Muhtemelen daha egzotik bir şeydir; bir Genetik Algoritma veya muhtemelen bir Bayesian tabanlı doohickey . Daha sonra "daha fazla bilim" gibi bir mesajı homurdanıyor.

Strat AI

sonra aynı bilgilerin çoğunu kullanarak neler yapabileceğini inceliyor. Bu genel hedefe ulaşmaya çalışmakla devam eder, aynı zamanda oyunun daha ayrıntılı yönleri hakkında da endişelenir. Savaşta mıyım? Açlıktan ölmek üzere olan insanlar var mı? yakında. Muhtemelen bir Sonlu durumlu makine , muhtemelen Fuzzy Logic (bir FSM'deki gerçekten bir evrimdir.) Basit bir FSM olduğunu varsayalım. Yukarıdaki soruları, belirli kriterler göz önüne alındığında, bu turda gerçekleşmesi gereken farklı şeylere karar vereceği bir sırada soracaktır. Savaştayım, askerleri eğitmek için para tahsis ediyorum. Halkım açlıktan ölüyor, burda bir tahıl ambarı inşa etmek yerine tahıl ambarı inşa ediyor.

Hangi birimleri inşa edeceğimizi seçmek, işleri nasıl paylaştırdığımıza bağlı olarak Strat AI veya Op AI'nın bir parçası olabilir.

Op AI

mevcut olan birimleri alacak ve farklı savaş cephelerine taşınmaları için onları atayacak. Yeni birimlerin konuşlandırıldıkları zaman başlayacağı çatışmanın genel şekline karar verecek. Muhtemelen bir FSM'dir. Ön cephedeki düşmanın, B Birimine karşı zayıf birimlere saldırdığını ve B Birimine karşı kuvvetli olan diğer Cepheye ziyade oraya daha fazla Ünite Bs göndereceğini fark edebilir. İsteğe bağlı saldırı. Geri çekilmek. Yakında.

Taktik AI

üniteye özgüdür. Her bir ünite tipi genel siparişe farklı tepki verecektir. İntihar amaçlı bir birim bir geri çekilme emrini görmezden gelebilir. İhtilaf olan birimler savaşması söylense bile geri çekilebilirler. Civ tipik olarak bu tür şeyler üzerinde çok hafif. Genellikle Civ'deki tüm birimler emirlerine uyuyor. Sahip oldukları daha büyük siparişler göz önüne alındığında, (burada bir resme bakın mu?) Bir FSM. Yaralı mıyım? Geri çekilip iyileşmeliyim. Bu konumda bir avantajım var mı? Saldır. Saldırıya çok yakın mıyım? Geri bas. Ve bu FSM'nin karmaşıklığının, bu kadar zeki ve inandırıcı olması gereken 3 şeyden daha fazlasına ihtiyacı yoktur.

Bu geliştirilebilir mi?

Evet tabi ki. Soru, oyuncuların farkına varacaklarıdır. Ve zamanın% 99'unu yapmayacaklar.

Şimdi, hepsi bu AI karar verme. Burada oyunda başka AI alt sistemleri var. Birimlerin bir konuma en kısa yolu bulmalarını sağlayan A * veya başka bir yol bulma algoritması vardır. Yeni şehirlere başlamanın en iyi yolunu bulmak için algoritmalar var. Yakında. Genellikle AI ile gruplandırılmış ve AI'nın 'düşünme' kısmından sonra genellikle daha karmaşıktır. Aslında, FSM'nin sorması gereken soruların cevaplarını bulma kodu genellikle FSM'nin kendisinden daha karmaşık büyüklükteki emirlerdir. Buna tam olarak nasıl karar verilir?


Bayesian merkezli doohicky - harika
Brian Broom
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.