El diseño tradicional del juego , como lo sé, utiliza polimorfismo y funciones virtuales para actualizar los estados de los objetos del juego. En otras palabras, el mismo conjunto de funciones virtuales se llama en intervalos regulares (por ejemplo, por cuadro) en cada objeto en el juego.
Descubrí recientemente que hay otro sistema de mensajería controlado por eventos disponible para actualizar los estados de los objetos del juego. Aquí, los objetos generalmente no se actualizan por cuadro. En cambio, se crea un sistema de mensajería de eventos altamente eficiente , y los objetos del juego se actualizan solo después de recibir un mensaje de evento válido.
Event Driven Game Architecture se describe bien en: Game Coding Complete por Mike McShaffry .
¿Podría pedir ayuda con las siguientes preguntas?
- ¿Cuáles son las ventajas y desventajas de ambos enfoques?
- ¿Dónde está uno mejor que el otro?
- ¿Es el diseño del juego dirigido por eventos universal y mejor en todas las áreas? ¿Se recomienda su uso incluso en plataformas móviles?
- ¿Cuál es más eficiente y cuál es más difícil de desarrollar?
Para aclarar, mi pregunta no es sobre eliminar completamente el polimorfismo del diseño de un juego. Simplemente deseo entender la diferencia y beneficiarme del uso de mensajes dirigidos por eventos versus llamadas regulares (por cuadro) a funciones virtuales para actualizar el estado del juego.
Ejemplo: esta pregunta causó un poco de controversia aquí, así que déjame ofrecerte un ejemplo: según MVC, el motor del juego se divide en tres partes principales:
- Capa de aplicación (comunicación de hardware y sistema operativo)
- Game Logic
- Vista del juego
En un juego de carreras, Game View es responsable de renderizar la pantalla lo más rápido posible, al menos 30 fps. Game View también escucha las opiniones de los jugadores. Ahora esto sucede:
- El jugador presiona el pedal de combustible al 80%
- GameView construye un mensaje "Pedal de combustible del automóvil 2 presionado al 80%" y lo envía a Game Logic.
- Game Logic recibe el mensaje, evalúa, calcula la posición y el comportamiento del nuevo automóvil y crea los siguientes mensajes para GameView: "Dibujar el pedal de combustible del automóvil 2 presionado al 80%", "Aceleración del sonido del automóvil 2", "Coordenadas del automóvil 2 X, Y". .
- GameView recibe los mensajes y los procesa en consecuencia
update
). Lo segundo que puedes hacer con la mensajería por varias razones.