¿Qué papel tiene el desarrollo con eventos en los juegos?

9

La mayor parte del desarrollo de aplicaciones se basa en el desarrollo con eventos, pero teniendo en cuenta el estilo de desarrollo de juegos y la (a menudo) necesidad de alto rendimiento / rendimiento, ¿qué papel tiene el desarrollo utilizando eventos y cuáles son las compensaciones? ¿La sincronización / bloqueo que a menudo está involucrado tiene un mayor impacto?

Por ejemplo: - ¿Cómo notifica la red [capa] al bucle de juego de los datos recibidos? - ¿Cómo notifica el sistema físico sobre colisiones?

Pregunto, porque puedo recordar un momento en que el desarrollo del juego usando eventos era un estricto no-no. ¿Ha cambiado esto?

Steven Evers
fuente

Respuestas:

5

El sistema de eventos es poderoso y se puede hacer muy rápido.

También le permiten modular secciones de código en una estructura de acoplamiento muy flexible. Le permiten trabajar cosas por lotes y cerrar tareas. Funcionan bien con funciones multinúcleo y asíncronas.

Física: las devoluciones de llamada por colisión, la activación o el descanso de objetos se traducen bien en eventos. Redes: en la medida de lo posible, debe ser un evento (chat de voz, etc., la excepción) Game Logic: naturalmente, se presta a un modelo de evento Menús y UI: trabajo brillante en un sistema basado en eventos

También muchas consolas modernas y bibliotecas de middleware usan eventos.

El renderizador y el sondeo de los dispositivos de entrada pueden ser un poco confusos para adaptarse. Especialmente si está utilizando controles de movimiento, ya que los eventos pueden introducir una latencia notable y ser contra-intuitivo al formato de sondeo.

Kimau
fuente
4

Diría que todavía se recomienda usar el estilo de bucle principal: es rápido, te da control total sobre el orden de las acciones (esto es importante en un juego) y es más difícil cometer errores al codificarlo. Sin embargo, si la tecnología que está usando le permite usar eventos fácilmente, puede ser realmente útil para muchas cosas. Por ejemplo, los uso para notificar cuándo y dónde mueren los enemigos, cuando se presionan las teclas del teclado ...

En conclusión: use el bucle del juego para controlar la lógica principal del juego, pero tenga en cuenta que los eventos pueden ser útiles en otras situaciones.

miguelSantirso
fuente
No estoy de acuerdo con que se recomiende un estilo de bucle principal. Los juegos de estilo de bucle principal pierden ante un juego controlado por eventos bien escrito en varias áreas: 1) en un sistema multitarea, consumen una cantidad innecesariamente alta del procesador para un conjunto fijo de características, 2) en dispositivos portátiles, incluso en un solo dispositivo -sistemas de tareas: el uso adicional del procesador afecta negativamente la duración de la batería, 3) cuanto más simple es el juego, más grandes se vuelven estos problemas en comparación con un juego basado en eventos adecuado.
Sam Harwell