Immagino di aver deciso che mi piacciono molto i gestori di eventi. Potrei soffrire un po 'di paralisi dell'analisi, ma sono preoccupato di rendere il mio progetto ingombrante o incorrere in qualche altra conseguenza imprevista delle mie decisioni di progettazione.
Il mio motore di gioco attualmente esegue il rendering di base basato su sprite con una telecamera panoramica panoramica. Il mio design è un po 'così:
SceneHandler
Contiene un elenco di classi che implementano l'interfaccia SceneListener (attualmente solo Sprites). Chiama render () una volta per tick e invia onCameraUpdate (); messaggi a SceneListeners.
InputHandler
Esegue il polling dell'input una volta per tick e invia un semplice messaggio "onKeyPressed" a InputListeners. Ho un Camera InputListener che contiene un'istanza di SceneHandler e attiva updateCamera (); eventi basati su ciò che è l'input.
AgentHandler
Chiama le azioni predefinite su qualsiasi agente (AI) una volta per tick e controllerà uno stack per eventuali nuovi eventi registrati, inviandoli a specifici agenti secondo necessità.
Quindi ho oggetti sprite di base che possono muoversi in una scena e usare comportamenti di guida rudimentali per viaggiare. Sono arrivato al rilevamento delle collisioni, ed è qui che non sono sicuro che la direzione in cui sta andando il mio progetto sia buona. È buona norma avere molti piccoli gestori di eventi? Immagino che dovrei implementare una specie di CollisionHandler.
Starei meglio con un EntityHandler più consolidato che gestisce l'intelligenza artificiale, gli aggiornamenti delle collisioni e altre interazioni di entità in una classe? O starò bene solo implementando molti diversi sottosistemi di gestione degli eventi che si scambiano messaggi in base al tipo di evento? Devo scrivere un EntityHandler che è semplicemente responsabile del coordinamento di tutti questi gestori di eventi secondari?
Mi rendo conto in alcuni casi, come il mio InputHandler e SceneHandler, che sono tipi di eventi molto specifici. Una grande parte del mio codice di gioco non si preoccuperà dell'input e una grande parte non si preoccuperà degli aggiornamenti che avvengono esclusivamente nel rendering della scena. Quindi ritengo che il mio isolamento di questi sistemi sia giustificato. Tuttavia, sto ponendo questa domanda in particolare riguardo agli eventi di tipo logico di gioco.