o design tradicional do jogo , como eu o conheço, usa polimorfismo e funções virtuais para atualizar os estados dos objetos do jogo. Em outras palavras, o mesmo conjunto de funções virtuais é chamado em intervalos regulares (por exemplo, por quadro) em todos os objetos do jogo.
Recentemente, eu descobri, que há outro - sistema de mensagens orientado a eventos disponível para atualizar estados de objetos de jogo. Aqui, os objetos geralmente não são atualizados por quadro. Em vez disso, um sistema de mensagens de eventos altamente eficiente é construído e os objetos do jogo são atualizados somente após o recebimento de uma mensagem de evento válida.
A arquitetura de jogos orientada a eventos está bem descrita em: Game Coding Complete por Mike McShaffry .
Gostaria de pedir ajuda com as seguintes perguntas:
- Quais são as vantagens e desvantagens das duas abordagens?
- Onde é melhor um sobre o outro?
- O design de jogos orientado a eventos é universal e melhor em todas as áreas? Portanto, é recomendado para uso mesmo em plataformas mombile?
- Qual é mais eficiente e qual é mais difícil de desenvolver?
Para esclarecer, minha pergunta não é sobre remover o polimorfismo completamente de um design de jogo. Eu simplesmente desejo entender a diferença e me beneficiar do uso de mensagens orientadas a eventos versus chamadas regulares (por quadro) para funções virtuais para atualizar o estado do jogo.
Exemplo: Esta questão causou um pouco de controvérsia aqui, então deixe-me dar um exemplo: De acordo com o MVC, o mecanismo de jogo é dividido em três partes principais:
- Camada de Aplicação (Comunicação de Hardware e SO)
- Game Logic
- Visualização do jogo
Em um jogo de corrida, o Game View é responsável por renderizar a tela o mais rápido possível, pelo menos 30 fps. A Visualização do Jogo também escuta as informações do jogador. Agora isso acontece:
- Jogador pressiona o pedal do combustível a 80%
- O GameView cria uma mensagem "Pedal de combustível do carro 2 pressionado em 80%" e a envia para a Game Logic.
- A Game Logic recebe a mensagem, avalia, calcula a posição e o comportamento do carro novo e cria as seguintes mensagens para o GameView: "Draw Car 2 Fuel Pedal Pressed 80%", "Car 2 Sound Acceleration", "Car 2 Coordinates X, Y" .. .
- O GameView recebe as mensagens e as processa de acordo
update
-los). O segundo você pode fazer com as mensagens por vários motivos.