Artigos

Técnicas empregadas no desenvolvimento de jogos – Parte 2

quarta-feira, 26 de agosto de 2009 visualizações: 1.190

Esta publicação é continuação do artigo:
Técnicas empregadas no desenvolvimento de jogos – Parte 1

2.4 – Clock em Tempo Real

Quantas vezes você não se deparou com um antigo jogo que, ao ser executado sobre uma arquitetura mais robusta (um computador moderno, por exemplo), praticamente impossibilitava seu controle, devido à velocidade surreal que o game apresentava? É muito comum encontrarmos tal situação quando tentamos executar um jogo realmente arcaico, ou mesmo em alguns emuladores que não estão preparados para tecnologias atuais.

Os efeitos indesejados na performance ocorriam porque, antigamente, o andamento de um jogo era disponibilizado somente pela velocidade do hardware. Com isso, a execução de uma aplicação projetada sobre uma plataforma inferior acabava se tornando inviável em arquiteturas superiores (por exemplo, um jogo criado para a plataforma 386, rodando em um Pentium ou superior).

Atualmente, os jogos são baseados no Clock em Tempo Real (Real Time Clock), técnica empregada para que a velocidade de uma aplicação não seja alterada durante seu andamento. Quando um jogo é executado sobre plataformas que apresentam desempenhos diferentes, ocorre uma mudança no Frame Rate, influenciando somente na suavidade de apresentação dos quadros (em um computador com menor performance ocorrerá o efeito chamado “quadro-a-quadro”).

Ao utilizar uma tecnologia que acessa diretamente o hardware (como o DirectX e OpenGL, por exemplo), o desenvolvedor não precisa se preocupar com a implementação da técnica de Clock em Tempo Real, pois existem rotinas que cuidam desse detalhe automaticamente (veja também: APIs gráficas: Desmistificando o DirectX e OpenGL ).

2.5 – Sprites

Para que um objeto utilizado no jogo possua um desempenho aceitável, são necessários alguns quadros contendo variações de movimentos, ou seja, as diversas ações que o personagem realizará.

Uma ação possui um limite de movimentos, os quais serão repetidos inúmeras vezes durante o decorrer de um jogo. Portanto, pode-se concluir que cada objeto dentro de um jogo conterá um número finito de quadros com suas respectivas ações no ambiente.

Esses conjuntos de quadros são organizados dentro de um mesmo arquivo, formando as chamadas Sprites, e consistem em um dos principais alicerces de jogos 2D (a técnica também é utilizada em vários jogos 3D). Cada quadro possui um tamanho fixo, facilitando sua localização e posterior utilização através de um simples cálculo de coordenadas (ou seja: embora permaneçam em um mesmo arquivo de imagem, os quadros são separados durante sua utilização dentro do jogo, onde sobrepõem-se em um determinado ritmo, criando o efeito de animação).

Geralmente é criada uma Sprite para cada personagem em cena, podendo variar conforme a necessidade da aplicação. Como exemplo, podemos avaliar um jogo com naves espaciais, onde uma Sprite conterá todos os movimentos do objeto, e outra conterá todos os quadros de sua destruição (geralmente uma explosão).

Essa técnica de manter vários quadros de uma animação dentro de um mesmo arquivo é fundamental para a organização dos objetos em cena. Não seria muito viável a existência de um arquivo para cada quadro dos inúmeros objetos que estarão atuando no jogo.

Existem ainda algumas considerações a serem abordadas em relação às Sprites. São detalhes idênticos aos encontrados em arquivos GIF:

  • Se os quadros de uma Sprite realizarão um loop infinito, então é necessário que o último quadro seja semelhante ao primeiro, para que haja harmonia no encaixe de cenas. Claro que existem Sprites que são animados apenas uma vez, sem possuir um loop (uma explosão, por exemplo).
  • Praticamente toda a Sprite possui a chamada cor de transparência. Essa cor poderá ser qualquer uma que não esteja sendo utilizada na figura principal, sendo substituída pelos pixels que estiverem no background (atrás dela). Sem ela, os quadros seriam visualizados com um retângulo em sua volta.
sprite
Sprite de um objeto. No exemplo, a cor de transparência é rosa
sprite_animada
Resultado da animação do sprite

2.6 – Cores

As cores são características marcantes dentro de um jogo, possibilitando efeitos deslumbrantes, mas sua utilização envolve uma grande complexidade. No desenvolvimento de jogos, são utilizados basicamente dois modos: Paleta de Cores e modo RGB.

O Modo paletizado possui apenas 256 cores disponíveis, trabalhando, portanto com 8 bits. Sua principal vantagem é a de que a aplicação consumirá menos memória, e como resultado, disponibilizará de uma grande performance. O maior problema na utilização de paletas consiste no fato de que podemos trabalhar apenas com 256 cores simultâneas na tela. Mas o que isso significa? Bom, significa que todas as Sprites que serão apresentadas na tela do computador devem utilizar a mesma paleta de cores, ou seja, fazer uso dos mesmos 256 tons. Isso exige um competente trabalho de design no momento da confecção das imagens.

O Modo RGB é encontrado praticamente em todos os jogos atuais. Geralmente oferece modos em 16 bits (65.536 cores) e 24 bits (16.777.216 cores). Obviamente, esse modo de utilização consumirá mais recursos do hardware, mas elimina em grande parte o complexo trabalho de planejamento das cores no momento da confecção de uma imagem. Além disso, devido à grande possibilidade de cores, a qualidade dos gráficos aumenta consideravelmente.

No próximo artigo, falarei das técnicas de “Blitting e Chaveamento de Cor”, “Detecção de Colisões” e “Layers”. Fique no aguardo!

Roberto Tadeu Fauri

Veja também:

Tags: , , , , , ,

4 comentários »

Deixe seu comentário!

Adicione seu comentário, ou faça um trackback de seu próprio site. Você pode também inscrever-se via RSS.