Artigos

Técnicas empregadas no desenvolvimento de jogos – Parte 3

sábado, 29 de agosto de 2009 visualizações: 1.132

Esta publicação é continuação dos artigos:

Técnicas empregadas no desenvolvimento de jogos – Parte 1

Técnicas empregadas no desenvolvimento de jogos – Parte 2

2.7 – Blitting e Chaveamento de Cor

A técnica de Blitting consiste no processo de inserção de imagens de uma superfície em outra. No desenvolvimento de jogos, isso é freqüentemente realizado quando uma cena do jogo é montada. O frame corrente de cada Sprite é inserido na cena, lembrando que isso é realizado no Back Buffer (veja a primeira parte dessa série de artigos), para que posteriormente seja enviado à superfície primária.

Antes do frame de uma Sprite ser inserido, é verificado qual é a sua cor de transparência, a chamada cor chave (veja a segunda parte dessa série de artigos). Feito isso, a cor é eliminada, para que a imagem não apareça na cena com um retângulo em sua volta. Esse processo é chamado de Chaveamento de Cor, e geralmente é utilizado o tom rosa como cor chave, justamente por não ser muito freqüente sua presença nas imagens de um jogo. Claro que isso não é uma regra, visto que a cor de transparência pode ser qualquer uma que não seja utilizada na imagem principal.

blitting

Processo de Blitting e Chaveamento de Cor

2.8 – Detecção de Colisões

Praticamente todos os jogos existentes possuem a necessidade de verificar se os objetos apresentados na tela colidem entre si. Basicamente, são as colisões que geram interatividade entre os objetos em cena. Veja alguns exemplos, baseando-se no clássico Mario Bros:

  • Mario bate em blocos para quebrá-los ou descobrir itens escondidos;
  • Mario pega um cogumelo que o torna maior;
  • Mario salta sobre uma tartaruga, pegando posteriormente seu casco;
  • Mario cai sobre uma planta carnívora e perde uma vida.

Existem diversas formas de detectar colisões em um jogo, sendo que algumas envolvem complexos cálculos. Mas basicamente existem duas técnicas  tradicionais, as quais não são difíceis de entender. São elas:

Bounding Box: Também chamada de caixas de contorno, essa técnica define uma área retangular em torno de uma Sprite. Quando ocorre a intersecção entre duas dessas áreas, referente a Sprites diferentes, há uma colisão.

É um método simples e de certa forma eficaz, pois mantém um controle satisfatório de colisões, e não exige muito processamento. O único problema que ocorre é quando uma imagem possui formas muito sinuosas, dificultando a detecção real de uma colisão, principalmente nos cantos do retângulo que envolve a Sprite. Com isso, mesmo que os retângulos das Sprites existentes se toquem, visivelmente pode não ocorrer a mesma situação com as imagens.

Sobreposição de Pixels: Nessa técnica, após a intersecção das áreas retangulares, os pixels de cada Sprite são analisados para verificar se ocorreu sobreposição de uma imagem a outra.

Embora esse método seja aparentemente o mais eficaz, vale lembrar que sua utilização envolve uma rotina que consumirá mais recursos do hardware, devendo ser utilizado então quando há a necessidade de uma detecção precisa de colisões.

tecnicas_colisoes

Colisões com as técnicas Bounding Box e Sobreposição de Pixels

2.9 – Backgrounds

Sabe-se que todo o bom jogo 2D apresenta um cenário de fundo, seja estático ou animado, possibilitando uma atração visual a mais.

Não existem muitas diferenças para realizar a implementação de um cenário de fundo estático ou animado. Na realidade, a principal diferença consiste no fato de que um background estático não requisita nenhuma rotina além de sua devida inserção no jogo, enquanto que um background animado necessita de um método para tratar seus movimentos.

2.9.1 – Backgrounds em camadas (Layers)

A técnica de implementação de cenários em camadas ou layers consiste em exibir vários backgrounds sobrepostos, com variações de posicionamento e velocidade entre as imagens utilizadas, obtendo-se com isso um efeito de profundidade.

Para propiciar o funcionamento dessa técnica, são necessárias no mínimo duas imagens, sendo que a utilização de mais de quatro backgrounds pode acarretar em menor performance, visto a quantidade de objetos que requisitam processamento.

Nos jogos em 2D existentes, é comum encontrarmos duas camadas de imagens sendo utilizadas para a exibição do cenário. A primeira camada geralmente possui todas as características que interagem com o personagem, enquanto que as demais servem como complementos do cenário. Veja abaixo:

layers

Disposição de camadas em um jogo

Pode-se perceber que o chão onde o personagem se locomove, bem como os detalhes principais do jogo pertencem a primeira camada, sendo que alguns interagem com o jogador, outros não. A segunda camada é utilizada com o propósito de complementar o cenário do jogo, e são muito importantes quando o objetivo é propiciar elegância e profissionalismo. As duas camadas apresentadas movimentam-se com velocidades diferentes, dando a impressão que o cenário de fundo realmente está distante do personagem.

2.9.2 – Tiles Backgrounds

Você deve estar lembrado de algumas páginas de internet que utilizam imagens que se encaixam umas nas outras, preenchendo todo o fundo. Essas imagens são chamadas de Tiles (telhas, em inglês), e para proporcionar suavidade na apresentação, elas são trabalhadas para que seus lados se encaixem perfeitamente umas com as outras (lado esquerdo com lado direito, parte de cima com a parte de baixo). Embora existam programas que auxiliam nesse trabalho, dependendo da imagem o desenvolvedor deve possuir uma certa habilidade para tratar manualmente esse encaixe.

Essa técnica de Tiles é muito utilizada no desenvolvimento de jogos, pois o programador poderá elaborar grandes cenários, fazendo uso de poucas imagens. Também é utilizada concomitante às técnicas de layers.

tiles

Exemplo de utilização de uma Tile

No próximo (e último) artigo dessa série, falarei sobre alguns programas exclusivos para desenvolvimento de jogos. Até lá!

Roberto Tadeu Fauri

Veja também:

Tags: , , , , , ,

3 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.