Jul 30th 2007, 19:34
Explicações sobre o game loop.
O
Game Loop é o conceito mais fundamental na programação de um jogo. Basicamente ele constitui-se do seguinte ciclo:

Onde:
- ENTRADA: nesta parte temos a entrada de dados no sistema que pode ser feita via teclado, joystick, sensores, gestos, etc.
- PROCESSAMENTO: com base nos dados (existentes no sistema e 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. Consulte
http://en.wikipedia.org/wiki/Thread_(computer_science) para maiores informações.
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 consultada 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 sua própria implementação do game loop.
Referências e recomendações
Até a próxima.