Olay işleyicilerini gerçekten sevdiğime karar verdim sanırım. Analiz felçinden biraz acı çekiyor olabilirim, ancak tasarımımı kararsız hale getirmekten veya tasarım kararlarımda öngörülemeyen başka bir sonuçla karşılaşmaktan endişeliyim.
Oyun motorum şu anda yatay kaydırma tepegöz kamera ile temel hareketli grafik tabanlı görüntü oluşturma yapıyor. Tasarımım şöyle:
SceneHandler
SceneListener arabirimini uygulayan sınıfların bir listesini içerir (şu anda yalnızca Sprite'lar). Çağrılar her işaret için bir kez render () olur ve onCameraUpdate (); SceneListeners'a mesajlar.
InputHandler
Girişi işaret başına bir kez yoklar ve InputListeners'a basit bir "onKeyPressed" mesajı gönderir. Bir SceneHandler örneği tutan ve updateCamera () tetikleyen bir Camera InputListener var; girdinin ne olduğuna bağlı olaylar.
AgentHandler
Herhangi bir Aracıdaki (AI) varsayılan eylemleri her onaylamada bir kez çağırır ve kayıtlı olan yeni olaylar için bir yığını kontrol eder ve gerektiğinde belirli Aracılara gönderir.
Bu yüzden bir sahne etrafında hareket edebilen ve seyahat için temel direksiyon davranışlarını kullanabilen temel hareketli grafik nesnelerim var. Çarpışma tespitine girdim ve burası tasarımımın gittiği yönün iyi olduğundan emin değilim. Çok sayıda küçük olay işleyicisine sahip olmak iyi bir uygulama mı? Bir çeşit CollisionHandler uygulamak zorunda olduğum gibi gidiyorum.
AI, çarpışma güncellemeleri ve diğer varlık etkileşimlerini tek bir sınıfta işleyen daha konsolide bir EntityHandler ile daha iyi olur muyum? Yoksa sadece ne tür bir olaya bağlı olarak birbirlerine mesajlar ileten birçok farklı olay işleme alt sistemi uygulamak iyi olacak mı? Tüm bu alt olay işleyicilerini koordine etmekten sorumlu bir EntityHandler yazmalı mıyım?
Benim InputHandler ve SceneHandler gibi bazı durumlarda, bunların çok özel olaylar olduğunu anlıyorum. Oyun kodumun büyük bir kısmı girdi ile ilgilenmez ve büyük bir kısmı tamamen sahnenin oluşturulmasında meydana gelen güncellemeleri umursamaz. Böylece bu sistemleri tecrit etmemin haklı olduğunu hissediyorum. Ancak, bu soruyu özellikle oyun mantığı türü olaylara yaklaşırken soruyorum.