Posso creare un sistema multi-thread che gestisce gli eventi di un gioco e li ordina, indipendentemente, in diversi thread in base alla priorità, ed è una buona idea?
Ecco ulteriori informazioni:
Sto per iniziare a lavorare sul porting di un gioco di medie dimensioni da Flash / AS3 a Java, in modo da poter continuare lo sviluppo con funzionalità multi-threading.
Ecco alcuni dettagli sul gioco:
Il gioco contiene numerose attività asincrone, come "aggiornamento del mondo" (l'ambiente di gioco cambia continuamente in base a una serie di leggi e forze naturali), generazione procedurale di terreno, NPC, missioni, oggetti, ecc. e Inoltre, gli effetti di tutte le interazioni del giocatore con il suo ambiente sono calcolate in tempo reale, in base a un insieme di "statistiche" in continua evoluzione e, ancora una volta, leggi e forze naturali.
Tutte queste cose contemporaneamente, in modo asincrono, sembrano prestarsi molto bene al multi-threading.
La mia domanda è:
Posso creare una sorta di motore centrale che gestisce lo "stacking" di tutti questi eventi mentre vengono attivati e li ordina dinamicamente tra i thread disponibili e sarebbe una buona idea?
Ad esempio:
Essenzialmente, ogni volta che succede qualcosa (IE, un missile magico generato da un incantesimo, o un gruppo di piante ha bisogno di crescere fino allo stadio successivo), invece di elaborare proprio quell'attività proprio in quel momento e aggiungere il nuovo oggetto (s ) a un elenco di oggetti gestiti, invia un riferimento a tale evento a un "gestore di eventi" principale che lo getta in una pila di tutti gli altri eventi in coda, che poi li ordina e li ordina in base all'urgenza, li divide tra un numero di thread disponibili per l'esecuzione multithread più rapida possibile.