O Game Loop
July 30th, 2007
Antes de começar, o leitor deve ser capaz de fazer um pequeno jogo do tipo “adivinhe o número” em modo console utilizando C, C++ ou qualquer outra linguagem de sua preferência.
Preencheu os requisitos? OK, então vamos começar por um conceito fundamental na programação: um programa geralmente constitui-se do seguinte ciclo:

Onde:
- ENTRADA: nesta parte temos a entrada de dados no sistema que pode ser feita via teclado, joystick, sensores, etc.
- PROCESSAMENTO: com base nos dados (existentes no sistema ou vindos da entrada), será feito o processamento, em um jogo isto significa detectar se houve ou não colisão, atualização de informações, posições, física, etc.
- SAÍDA: depois que temos os dados prontos, podemos exibir as informações na tela, aqui temos toda a parte de conversões, apis gráficas, etc.
Um jogo nada mais é do que um aplicativo que possui este ciclo mas de uma maneira “infinita”, isto é, o processamento é efetuado mesmo que não haja uma entrada. Quer um exemplo? Quando você está jogando Mário e uma tartaruga vem em sua direção, se você ficar parado a tartaruga continuará vindo do mesmo jeito, o processamento não parou porque você não deu mais uma entrada.
A maneira como você organiza esse processamento “central” constiui o “game loop”. Depois que você dominar o game loop poderá fazer pequenas animações, etc, assim que dominar a “entrada” e “saída” e um pouco de “detecção de colisão” será capaz de fazer jogos simples.
O game loop pode ser tão simples ou tão complexo quanto quisermos. Hoje em dia é muito comum utilizar programação “multithreaded” onde cada “thread” executa uma parte deste processamento. Não entendeu? Consulte http://en.wikipedia.org/wiki/Thread_(computer_science) para maiores informações (apenas para os mais avançados, matéria punk :).
No próximo post entraremos na parte prática onde postarei com detalhes o exemplo de um game loop em C e Allegro e esmiuçaremos cada um dos processos assim começaremos a fazer jogos simples.
Lição de casa:
- de uma pincelada no manual do allegro para verificar as funções disponíveis (sem decoreba, saiba apenas o que existe)
- analise a implementação de game loops em outros ambientes & linguagens (não precisa compilar nada, é só tentar identificar onde se realizam as entradas, processamentos, saídas)
- faça o download de jogos com código fonte no site www.allegro.cc e estude como eles organizam o game loop
- faça sua própria implementação do game loop (está preparado?)
Referências e recomendações:
- http://www.mvps.org/directx/articles/writing_the_game_loop.htm: possui uma implementação do game loop em ambiente windows
- Game Loop com Directx: game loop com managed directx e c#
- http://en.wikipedia.org/wiki/Game_programming#The_game_loop: definição da Wikipedia sobre game loop
- o mais importante de tudo é fazer a lição de casa, leia e pratique. NUNCA fique apenas na leitura, se você NÃO TENTOU, NÃO APRENDEU.
- fazer jogos não é impossível, é apenas difícil e exige que a pessoa ESTUDE (aprenda a estudar, faz muita diferença, aprenda o que funciona para você).
Até a próxima.
Dúvidas? Sugestões? Pode mandar.
Posts Relacionados
Entrada preenchida em: Tutoriais sobre programação de jogos

1 Comentário Adicione um comentário
1. VSoftGames » Trigon&hellip | November 13th, 2007 em 2:35 pm
[...] a parte prática, recomendo a leitura dos artigos “O game loop parte 1″, “O game loop parte 2″ e “Dicas para aprender a programar jogos [...]
Deixe um Comentário
HTML permitido:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Rastreie este post | Se inscreva para receber os comentários via RSS