Bazı fonksiyonlara hizmet eden, her biri sürekli olarak ihtiyaç duyulmayan veya her çerçevede göz önünde bulundurulması gereken birçok varlığın olduğu bir oyununuz olduğunu varsayalım. Bu meselenin üzerinde durduğum somut problem, organlarını içeren bir bedenin ayrıntılı bir simülasyonudur.
Oyunda, her yaratığın daha küçük parçalara (gövde, bacaklar vb.) Ayrılmış kendi vücudu vardır ve bazen bu parçalar vücutta belirli bir fonksiyona hizmet eden organları içerir. Bir organın şu anda bir amaca hizmet edip etmediği veya aktif olup olmadığı hiçbir zaman net değildir. Sonuçta, bir hayvan boş bir mideye sahip olabilir, bu nedenle herhangi bir şeyi sindirmesi gerekmez. Her karedeki her nesneyi kontrol etmek veya simüle etmek oldukça saçma ve dünyadaki birçok yaratığa sahip olduğunuzda çok masraflı olacaktır. Bu yüzden, güncellenmesi gereken nesnelerle akıllıca farklılaşmanın bir yolu olduğunu düşünüyordum.
Karşılaştığım en azından tamam bir çözüm gibi görünüyor. Basit bir sıra / yığın oluşturur (zorunludur, her eleman okunur okunmaz kaldırılır; sıra önemsizdir), simüle edilmesi gereken nesnelerin bulunduğu “dikkat yığını” olarak adlandırılır. Dikkat edilmesi gereken nesneler basitçe kendilerini yığına koyar veya başka nesneler tarafından oraya konur. Bu nesneler muhtemelen bir simulate () - fonksiyonuyla basit bir arayüz oluşturur.
Önceki sindirim örneğime uygulandığında bu şu anlama gelir:
Oyuncu, envanterden yiyecek bir şeyler seçer (ekmek olduğunu varsayar) ve karakterinin ağzına sokar ve ağız dikkat yığınına yerleştirilir. Bir sonraki çerçevede, ağız istiften alınır ve simule () - fonksiyonu çağrılır. Ağız olduğu için burada çiğnenmeyi taklit etmek mantıklı olacaktır. Bu, yemeğin yutulmaya hazır olduğuna karar verene kadar ağzın kendisini istifin üzerine koymaya devam ettiği birkaç çerçeve için devam edebilir. Bu durumda, ağız çiğnenmiş ekmeği mideye koyar (doğrudan oraya gitmediğini biliyorum, ancak yemek borusu basitleştirmek için dışarıda bırakılır). Bir sonraki çerçevede, sindirim sürecinin simülasyonu başlatıldı. Ve böylece gerekli organların geri kalanı için.
Bununla ilgili öngörülebilir bir sorun boşta kalan nesnelerdir. Uyuyan bir hayvan buna iyi bir örnektir. Uyuyan hayvanı istifte tutarak ve uyanması gerekip gerekmediğini her seferinde kontrol ederek daha önce tarif edildiği gibi yapılabilir, ancak yapılan tek şey bu çünkü israf gibi görünüyor. Boşta nesneleri daha verimli hale getirmek için, belirli bir zamanda gerçekleştirilecek işleri depolayan bir tür zamanlama eklemeyi planlıyordum. Eğer bir hayvan uyumaya başlarsa, hayvan uyumadan sonra belli bir süre için programlanmış olan bu programa bir iş koyar. Bu iş daha sonra uyuyan hayvanı tekrar dikkat yığınına koymakla ilgilenirdi. Şimdi, dikkat yığınında olmayan uyuyan bir hayvanın AI tarafından simüle edilmediğinden bir şey tarafından saldırıya uğramayacağını özleyebileceğini söyleyebilirsiniz.
Şimdi, bunun, deneyim eksikliğinden dolayı bu sorunun zarif bir çözüme yakın olup olmadığını bile bilmiyorum. Kullanılabilir bir şeye yakın mıyım? Bu genellikle nasıl yapılır veya herhangi bir önerisi veya daha iyi çözümü olan var mı?