Bu biraz önemsiz bir soru olabilir, ama bunu anlamakta güçlük çekiyorum. Yardımınız için çok minnettar olurum.
Nesneye yönelik tasarım kullanarak oyun geliştirmede, AI-ajanlarının eylemlerini gerçekleştirmek için oyun dünyasından ihtiyaç duydukları bilgilere nasıl eriştiklerini anlamak istiyorum.
Hepimizin bildiği gibi, oyunlarda AI ajanlarının sıklıkla 'çevrelerini algılamaları' ve çevrelerinde olanlara göre hareket etmeleri gerekir. Örneğin, bir oyuncu oyuncuyu yeterince yaklaşırsa kovalamak, hareket ederken engellerden kaçınmak (Engellerden Kaçınma direksiyon davranışını kullanarak) vb. İçin programlanabilir.
Benim sorunum, bunu nasıl yapacağımdan emin değilim. Bir AI aracısı oyun dünyası hakkında ihtiyaç duyduğu bilgilere nasıl erişebilir?
Olası bir yaklaşım, ajanların ihtiyaç duydukları bilgileri doğrudan oyun dünyasından talep etmeleridir.
GameWorld adında bir sınıf var. Önemli oyun mantığını (oyun döngüsü, çarpışma algılama, vb.) Ele alır ve aynı zamanda oyundaki tüm varlıklara referanslar tutar.
Bu sınıfı Singleton yapabilirim. Bir ajanın oyun dünyasından bilgiye ihtiyacı olduğunda, onu doğrudan GameWorld örneğinden alır.
Örneğin Seek
, oyuncuya yakın olduğunda bir oyuncu programlanabilir . Bunu yapmak için ajanın oyuncunun pozisyonunu alması gerekir. Bu yüzden sadece doğrudan talep edebilirsiniz: GameWorld.instance().getPlayerPosition()
.
Bir ajan ayrıca oyundaki tüm varlıkların listesini alabilir ve ihtiyaçları için analiz edebilir (hangi varlıkların yakın olduğunu veya başka bir şeyi anlamaya): GameWorld.instance().getEntityList()
Bu en basit yaklaşımdır: Temsilciler doğrudan GameWorld sınıfına başvurur ve ihtiyaç duydukları bilgileri alırlar. Ancak bildiğim tek yaklaşım bu. daha iyisi var mı
Deneyimli bir oyun geliştiricisi bunu nasıl tasarlar? "Tüm varlıkların bir listesini alın ve ihtiyacınız olanı arayın" yaklaşımı naif midir? AI temsilcilerinin eylemlerini gerçekleştirmek için ihtiyaç duydukları bilgilere erişmesine izin vermek için hangi yaklaşımlar ve mekanizmalar vardır?