O loop principal do jogo lida com três tarefas principais:
- Obter entrada do usuário
- Atualize o estado do jogo
- Desenhe o jogo
Um loop de jogo simples apenas reúne essas três tarefas em um loop while. Isso tem alguns resultados indesejados:
- O jogo é executado em velocidades diferentes em computadores diferentes.
- CPU (pode ser desnecessariamente) vinculada a 100% de uso.
- Os menus "Estados do jogo" estão ausentes ou misturados ao código do jogo.
- O loop do jogo principal é muito longo e difícil de manter.
- É difícil estender o código / porta para outras plataformas.
Os loops gamed avançados solucionam os problemas listados acima. Aqui estão alguns artigos úteis:
Para um excelente exemplo de loop de jogo, dê uma olhada no jogo de demonstração do Allegro skater:
- O código do loop do jogo está em framework.c .
- Navegue pelo código fonte completo aqui .
Os loops de jogos geralmente fazem o mesmo tipo de trabalho para a maioria dos jogos, então eu tenho pensado em uma maneira de criar uma estrutura de jogo generalizada. É melhor escrever uma implementação de um loop de jogo e compartilhá-lo entre os jogos. Isso economiza trabalho ao criar um novo jogo, e as melhorias no loop do jogo compartilhado podem ser compartilhadas por todos os jogos (por exemplo, adicionando um contador de FPS ou recurso de captura de tela).