La conception de jeu traditionnelle , telle que je la connais, utilise le polymorphisme et les fonctions virtuelles pour mettre à jour les états des objets de jeu. En d'autres termes, le même ensemble de fonctions virtuelles est appelé à intervalles réguliers (ex: par image) sur chaque objet du jeu.
Récemment, j'ai découvert qu'il existe un autre système de messagerie basé sur les événements pour mettre à jour les états des objets de jeu. Ici, les objets ne sont généralement pas mis à jour image par image. Au lieu de cela, un système de messagerie d'événements très efficace est construit et les objets de jeu ne sont mis à jour qu'après avoir reçu un message d'événement valide.
L'architecture de jeu basée sur les événements est bien décrite dans: Game Coding Complete de Mike McShaffry .
Puis-je demander de l'aide pour les questions suivantes:
- Quels sont les avantages et les inconvénients des deux approches?
- Où est-on meilleur que l'autre?
- La conception de jeux basée sur les événements est-elle universelle et meilleure dans tous les domaines? Est-il donc recommandé pour une utilisation même sur les plateformes mombile?
- Laquelle est la plus efficace et la plus difficile à développer?
Pour clarifier, ma question n'est pas de supprimer complètement le polymorphisme d'une conception de jeu. Je souhaite simplement comprendre la différence et bénéficier de l'utilisation de la messagerie événementielle par rapport aux appels réguliers (par image) aux fonctions virtuelles pour mettre à jour l'état du jeu.
Exemple: Cette question a suscité un peu de controverse ici, alors laissez-moi vous donner un exemple: Selon MVC, le moteur de jeu est divisé en trois parties principales:
- Couche d'application (communication matérielle et OS)
- Game Logic
- Vue du jeu
Dans un jeu de course, la vue du jeu est responsable du rendu de l'écran le plus rapidement possible, au moins 30 ips. La vue de jeu écoute également les commentaires du joueur. Maintenant, cela se produit:
- Le joueur enfonce la pédale de carburant à 80%
- GameView construit un message "Pédale de carburant de la voiture 2 enfoncée à 80%" et l'envoie à Game Logic.
- Game Logic reçoit le message, évalue, calcule la position et le comportement de la nouvelle voiture et crée les messages suivants pour GameView: "Dessiner la pédale de carburant de la voiture 2 à 80%", "Accélération sonore de la voiture 2", "Coordonnées de la voiture 2 X, Y" .. .
- GameView reçoit les messages et les traite en conséquence
update
). La seconde, vous pouvez le faire avec la messagerie pour diverses raisons.