BUSCA: 


Se você encontrou algum artigo interessante mas não lembra sua localização, pode fazer uma pesquisa pelo seu nome, descrição ou categoria.

 

 

ALLEGRO

O Game Loop – parte 2


Oct 3rd 2007, 00:21

Explicações sobre o game loop - parte 2.

Bookmark and Share        

Conforme prometido, vamos começar a partir do básico o ensino dos conceitos. O “Game Loop” (Laço do jogo) é o principal deles.

Atenção: depois de entender o conceito do Game Loop, você poderá programar pequenas “animações”, terá uma noção geral de como se estrutura um jogo e principalmente terá um pouco de experiência. Mais tarde com esse conceito “dominado”, se você aprender um pouco de detecção de colisão e como pegar a entrada do jogador já poderá fazer jogos simples.

O foco deste artigo será no desenvolvimento de um Game Loop utilizando a linguagem C e a biblioteca Allegro. Não ensinarei como você poderá fazer para compilar o código fonte e nem instalar o ambiente (veja no final do artigo a seção de Referência para maiores detalhes).

Para estudar este artigo eu recomendo:

  • digitar os códigos fontes (ao invés de apenas ler e colar);
  • ler com calma e ir praticando (isso não fará sentido em um ou dois dias, você não pegará de imediato e conforme for experimentando (essencial) aprenderá muito mais do que o artigo ensinou);
  • se possível imprima o conteúdo para poder ir lendo e digitando.

O Game Loop é o coração de um jogo, nele se encontra a organização do fluxo que permite um jogo continuar rodando baseado nas condições em que foi programado & exposto. Para entender o Game Loop é necessário primeiro entender um outro conceito básico em programação de computadores:



Onde:
  • ENTRADA: constitui a parte em que o sistema recebe os dados do ambiente
  • PROCESSAMENTO: parte em que baseado nos dados que o sistema possui, ele irá processá-los
  • SAÍDA: parte em que após o processamento for concluído, o sistema emitirá uma saída com os resultados.

Simples? Sim, na teoria. Este conceito básico nos ajuda a visualizar o Game Loop que nada mais é do que este ciclo executando indefinidamente com uma diferença fundalmental: o ciclo continua executando mesmo que não haja uma entrada no sistema. Conseguiu visualizar? Esta diferença fundamental entre um jogo e um aplicativo convencional nos permite fazer a interatividade de um jogo.

Em um Game Loop temos:

  • ENTRADA: aqui temos a parte responsável por pegar todos os dados que o jogador envia via teclado, mouse, sensor ótico, tela touch-screen, etc. Aqui também temos que levar em consideração as limitações do dispositivo de entrada (se houver), tempo de leitura das informações, repetições, etc…
  • PROCESSAMENTO: aqui temos todo o processamento da lógica do jogo: detecção de colisão, física, carregamento de níveis, cálculos diversos, tomada de decisões baseadas na entrada, cálculo de inteligência artificial, leitura de arquivos e uma infinidade de outras coisas.
  • SAÍDA: nesta parte (em alguns casos chamada de renderização) temos todas as informações do jogo exibidos na tela, gravados em um arquivo, etc. Esta área é extremamente extensa e rica (John Carmack que o diga). Podemos ter gráficos 2D, 3D, etc, utilizando APIS gráficas como DirectX, OpenGL, SDL, Allegro… Hoje em dia é comum também a utilização de Shaders para incrementar ainda mais a gama de efeitos de visualização.

Agora que conhecemos como se estrutura um Game Loop, vamos ver na prática como podemos organizar estas informações e testar os nossos próprios conceitos.

O nosso Game Loop se dividirá em duas partes (além das partes descritas acima):

  1. uma parte responsável pela execução da lógica do jogo (o processamento deve ser totalmente executado antes de haver uma saída)
  2. uma parte responsável pela saída dos gráficos na tela (no nosso caso utilizaremos uma técnica chamada “Double Buffering”)

Além das partes citadas acima o nosso Game Loop também conterá:

  1. um contador simples de FPS
  2. double buffer

Vamos ao código (está comentado detalhadamente):

Após rodar o programa acima, você verá uma tela como a de baixo (observe o contador de fps no canto superior esquerdo):



Conclusão


Em um próximo artigo veremos algumas possiblidades com as funções básicas de renderização de “primitivas” no Allegro e em seguida estudaremos algumas técnicas para entrada, assim já será possível fazer jogos bem simples (mas divertidos).

Fique ligado.

Dicas


  • não tente decorar as funções do Allegro, entenda o conceito, você não conseguirá escrever sem olhar no manual (tive que olhar no manual várias vezes para escrever este código)
  • agora que você possui a estrutura básica de um Game Loop, estude as funções de desenho “primitivas” da biblioteca Allegro e tente desenhar alguma coisa que se mova (ou que não se mova)
  • se você estudar a função “rand” da biblioteca matemática “math.h” poderá incrementar ainda mais estas animações com efeitos aleatórios
  • lembre-se de testar e fazer diversos exemplos.
  • não se preocupe em entender todos os detalhes do código agora, o importante é entender o conceito e ir testando com cada parte para solidificar na mente, não perca tempo com decoreba de estruturas complicadas da linguagem e nome de funções (que você só lembrará as que mais utilizar, isto é, as que você digitou com mais frequência :)

Referências


  • Allegro Vivace: Um dos melhores tutoriais que eu já vi sobre Allegro, se você não viu, veja agora. Em inglês.
  • Allegro para Iniciantes: Artigo muito bom do site Unidev que ensina como instalar uma IDE para desenvolvimento em C++ com Allegro e ensina também o básico para desenvolver em Allegro (recomendado, este artigo ensina algumas coisas que ainda não comentei no blog).
  • Iniciação de Allegro em C++: Outro artigo, serve como complemento do primeiro.
  • BDJogos: Excelente site nacional com diversos tutoriais sobre Allegro. Altamente recomendado.

Espero que tenham gostado. Até o próximo artigo.






© 2010 - VSoftGames - Programação, jogos e um pouco mais