Il design del gioco tradizionale , per quanto ne so, utilizza il polimorfismo e le funzioni virtuali per aggiornare gli stati degli oggetti di gioco. In altre parole, lo stesso set di funzioni virtuali viene chiamato a intervalli regolari (es: per frame) su ogni oggetto nel gioco.
Di recente, ho scoperto che esiste un altro sistema di messaggistica guidato da eventi disponibile per aggiornare gli stati degli oggetti di gioco. Qui, gli oggetti di solito non vengono aggiornati in base al fotogramma. Invece, viene creato un sistema di messaggistica di eventi altamente efficiente e gli oggetti di gioco vengono aggiornati solo dopo aver ricevuto un messaggio di evento valido.
Event Driven Game Architecture è ben descritta in: Codifica di gioco completa di Mike McShaffry .
Potrei chiedere aiuto per le seguenti domande:
- Quali sono i vantaggi e gli svantaggi di entrambi gli approcci?
- Dov'è uno migliore rispetto all'altro?
- Il design dei giochi Event driven è universale e migliore in tutte le aree? È quindi raccomandato per l'uso anche su piattaforme mombili?
- Quale è più efficiente e quale è più difficile da sviluppare?
Per chiarire, la mia domanda non riguarda la rimozione completa del polimorfismo dal design di un gioco. Desidero semplicemente comprendere la differenza e trarre vantaggio dall'utilizzo della messaggistica guidata dagli eventi rispetto alle normali chiamate (per frame) alle funzioni virtuali per aggiornare lo stato del gioco.
Esempio: questa domanda ha suscitato un po 'di controversie qui, quindi lasciatemi offrire un esempio: secondo MVC, il motore di gioco è diviso in tre parti principali:
- Livello applicazione (comunicazione hardware e SO)
- Logica di gioco
- Vista di gioco
In un gioco di corse, la Vista di gioco è responsabile del rendering dello schermo il più rapidamente possibile, almeno 30 fps. Game View ascolta anche l'input del giocatore. Ora questo succede:
- Il giocatore preme il pedale del carburante all'80%
- GameView costruisce un messaggio "Car 2 Fuel Pedal Pressed to 80%" e lo invia a Game Logic.
- Game Logic riceve il messaggio, valuta, calcola la posizione e il comportamento della nuova auto e crea i seguenti messaggi per GameView: "Disegna pedale carburante auto 2 premuto 80%", "Accelerazione suono auto 2", "Coordinate auto 2 X, Y" .. .
- GameView riceve i messaggi e li elabora di conseguenza
update
). Il secondo è possibile fare con la messaggistica per vari motivi.