Ağırlıklı olarak gemi özelleştirmesine dayanan ağ bağlantılı bir sıra tabanlı 3D-6DOF uzay filosu savaş strateji oyunu tasarlıyorum. Soruyu ayarlamak için biraz bilmeniz gerektiğinden oyunu biraz açıklayayım.
Amacım, her gemiye avantajlar ve dezavantajlar sağlayacak olan özel şekiller ve ekli modüller (pervaneler, traktör kirişleri ...) ile kendi gemi filonuzu yaratma yeteneğidir , böylece birçok farklı filo dağıtımınız vardır. Örneğin, yanda iki pervanesi olan uzun gemi, geminin bu düzlem etrafında kolayca dönmesine izin verirdi, arka tarafa çok sayıda pervane yerleştirmedikçe daha büyük gemiler yavaşça hareket ederdi (bu nedenle hareket ederken daha fazla "inşaat" noktası ve enerji harcar ve sadece bu yöne doğru hızlı hareket edin.) Bu özelliği çevreleyen tüm oyunu dengelemeyi planlıyorum.
Oyun iki aşamada dönecekti: emirler ve savaş aşaması. Siparişler aşamasında farklı gemilere komuta edersiniz. Tüm oyuncular sipariş aşamasını bitirdiğinde, savaş aşaması başlar ve gemi emirleri bir süre gerçek zamanlı olarak çözülür, sonra eylem duraklar ve yeni bir emir aşaması vardır.
Sorun, oyuncu girişi hakkında düşündüğümde geliyor. Bir gemiyi hareket ettirmek için, yönlendirmek, ileri gitmek, fren yapmak, yerinde döndürmek istiyorsanız farklı pervaneleri açmanız veya kapatmanız gerekir ... Bu pervanelerin tüm güçlerinde çalışması gerekmez, böylece daha fazla hareket elde edebilirsiniz daha az pervane ile kombinasyonlar.
Bence bu yaklaşım biraz sıkıcı. Oyuncu motorlarla ya da başka bir şeyle uğraşmak istemiyor, sadece hareket ettirmek ve öldürmek istiyorsun. Bunları gemilere emir vermek oyuncu niyetinde yolu gereğidir hedefe ve bir rotasyon ve ardından AI bu hareket ve rotasyon başarmak için doğru pervane gücünü hesaplamak olacaktır. Tahrik, tüm dönüş hesaplaması (siparişler verildikten sonra) ile aynı olmak zorunda değildir, bu nedenle gemiler hareket ettikçe tepki verirse, pervanelerin güçlerini dinamik olarak ihtiyaçlara göre ayarlayabilirler. uygulamak çok zor ve oyunun çalışması gerçekten gerekli değil.
Her iki durumda da, yapay zeka hangi pervanelerin en iyi (veya en azından en kötü değil) yörünge için harekete geçeceğine nasıl karar verecek?
Bazı yaklaşımlar hakkında:
- AI Öğrenme: Gemi tipleri, hareketlerini deneme yanılma yoluyla öğrenir, davranışlarını daha fazla kullanımla ayarlar ve sonunda "akıllı" olur. AI kodlamasına bu kadar dahil olmak istemiyorum ve oyuncu için sinir bozucu olabileceğini düşünüyorum (oynatmadan öğrenmesine izin verseniz bile).
- Önceden hesaplanan zaman aşımı hareketi: Geminin oluşturulması üzerine, her pervane konfigürasyonu ve belirli bir delta zamanı için güç için TÜM olası hareketler hesaplanır. Bellek yoğun, çirkin, kötü.
- Önceden hesaplanmış yörüngeler: Yukarıdaki ile aynıdır, ancak her delta zamanı için değil, daha sonra mümkün olduğunca takılan tüm yörünge. Tüm savaş aşaması için sabit bir pervane yapılandırması gerektirir ve hala bellek yoğun, çirkin ve kötüdür.
- Sürekli kaba zorlama: AI, tüm savaş aşaması boyunca TÜM olası pervane yapılandırmalarını sürekli olarak kontrol eder, birkaç zaman adımını önceden hesaplar ve buna göre en iyisi olduğuna karar verir. Con: şimdi iyi olan şey daha sonra o kadar iyi olmayabilir ve çok fazla CPU yoğun, çirkin ve kötü.
- Tek kaba kuvvet: Yukarıdaki ile aynı, ancak simülasyonun başında sadece kaba kuvvet, bu nedenle tüm savaş aşaması boyunca sabit pervane yapılandırmasına ihtiyaç duyar.
- Sürekli açı kontrolü: Bu tam bir hareket yöntemi değildir, ancak "aptal" pervane konfigürasyonlarını atmanın bir yoludur. Mevcut pervanenin normal vektörü ve sonuncusu göz önüne alındığında, pervane için açıya göre gereken güce yaklaşık olarak ulaşabilirsiniz. Bunu tüm savaş aşaması boyunca sürekli yapmalısınız. Son zamanlarda bunu anladım, bu yüzden çok fazla düşünmedim. A priori, "şimdi iyi olan şey o kadar iyi olmayabilir" dezavantajına sahiptir ve daha iyi bir itiş yapılandırması yapmak için birlikte hareket edebilecek diğer pervaneleri umursamaz.
Burada gerçekten sıkışıp kaldım. Herhangi bir fikir?