Qual o papel do desenvolvimento com eventos nos jogos?

9

A maior parte do desenvolvimento de aplicativos baseia-se no desenvolvimento de eventos, mas considerando o estilo de ciclo de jogo de desenvolvimento de jogos e a (geralmente) necessidade de alto desempenho / taxa de transferência, qual o papel do desenvolvimento de eventos usando e quais são as compensações? A sincronização / bloqueio frequentemente envolvido tem um impacto maior?

Por exemplo: - Como a [camada] da rede notifica o ciclo de jogo dos dados recebidos? - Como o sistema de física notifica as colisões

Eu pergunto, porque me lembro de uma época em que o desenvolvimento de jogos usando eventos era estritamente não-não. Isso mudou?

Steven Evers
fonte

Respostas:

5

O sistema de eventos é poderoso e pode ser feito muito rápido.

Eles também permitem modular seções de código em uma estrutura de acoplamento muito flexível. Eles permitem que você faça tarefas em lote e encaminhe tarefas. O trabalho funciona bem com funções multinúcleo e assíncronas.

Física - Retornos de chamada de colisão, Ativar ou Descansar objetos se traduzem bem em eventos. Rede - O máximo possível deve ser um evento (ect de bate-papo por voz. A exceção) Lógica do jogo - Naturalmente se presta a um modelo de evento Menus e interface do usuário - Trabalhe de maneira brilhante em um sistema baseado em eventos

Muitos consoles modernos e bibliotecas de middleware também usam eventos.

O renderizador e a sondagem dos dispositivos de entrada podem ser um pouco confusos para se encaixar. Especialmente se você estiver usando controles de movimento, pois os eventos podem introduzir uma latência perceptível e ser contra-intuitivo ao formato de sondagem.

Kimau
fonte
4

Eu diria que o uso do estilo de loop principal ainda é recomendado: é rápido, fornece controle total sobre a ordem das ações (isso é importante em um jogo) e é mais difícil cometer erros ao codificá-lo. No entanto, se a tecnologia que você está usando permite que você use eventos facilmente, ela pode ser realmente útil para muitas coisas. Por exemplo, eu os uso para notificar quando e onde os inimigos morrem, quando as teclas do teclado são pressionadas ...

Conclusão: use o loop do jogo para controlar a lógica principal do jogo, mas lembre-se de que os eventos podem ser úteis em outras situações.

miguelSantirso
fonte
Não concordo que um estilo de loop principal seja recomendado. Os jogos principais em loop perdem para um jogo controlado por evento bem escrito em várias áreas: 1) no sistema multitarefa, eles consomem uma quantidade desnecessariamente alta do processador para um conjunto fixo de recursos; 2) em dispositivos portáteis, mesmo em um único sistemas de tarefas, o uso extra do processador afeta negativamente a vida útil da bateria; 3) quanto mais simples o jogo, maiores esses problemas se tornam em comparação com um jogo adequado orientado a eventos.
Sam Harwell