sexta-feira, 23 de março de 2007

Começando a Explorar a PAlib

O que seria de um video-game se não fossem as imagens. Hoje iremos começar a trabalhar com elas.

Um jogo 2D normalmente usa dois tipos de imagens: fundos e objetos. O DS tem 4 níveis de fundos (backgrounds) e 4 níveis de objetos (sprites)

O tipo de imagem mais comum para o fundo é o tiled background, a analogia da vida real são os azulejos: eu forro uma parede com azulejos que podem ser iguais ou diferentes. Para ilustrar, olhem este link. Ele é composto apenas de pequenas imagens que postas uma do lado da outra, repetidas ou não, aparecem como um fundo completo e coeso. As imagens estão neste link. Para termos uma melhor analogia, devemos comparar essa cena com aqueles azulejados portugueses, onde cada parte de uma imagem é pintada num azulejo, e todos dispostos juntos formam a imagem completa, como no caso desta imagem. Qual a utilidade de fazer a imagem com tiles (ajulejos)? Economia de memória de vídeo. Se houver dois ou mais tiles iguais, só é necessário armazenar um na memória, os outros são cópias.

Os sprites normalmente são desenhados também em forma de tiles, mas de uma forma um pouco diferente. Na memória de vídeo, eles são alocados em outra área e passam sobre o fundo. Então se eu tenho um sprite e um tiled background, o sprite sempre aparecerá sobre o tiled background. O Nintendo DS pode armazenar até 128 sprites de até 64x64 pixels com 256 cores na memória de vídeo. A ordem de sobreposição dos sprites depende primeiramente do nível do sprite e depois do número do sprite. O nível 0 é o mais da frente e o 3 é o mais ao fundo. Dois sprites no mesmo nível, o de menor número aparecerá na frente.

A PAlib tem um utilitário muito bom para transformar imagens de PC em tiled backgrounds ou sprites. Ele fica na pasta PAlib\Tools\PAGfx dentro da pasta do devkitpro. É necessário ter o .NET Framework instalado em seu computador.

Primeiro, baixe as quatro imagens a seguir para o seu computador:




Lembre-se não renomear as imagens, elas devem ser fundo5.gif, fundo4.gif, fundo3.gif e aviao.gif, respectivamente.

Agora, vamos rodar o "PAGC Frontend.exe". Clique na aba "Sprites" e clique no botão "Add File(s)". Selecione o aviao.gif e confirme. O programa irá listar o avião.gif. O ColorMode deve ficar em "256 colors" e a Palette "aviao". Agora clique na aba "Backgrounds". Clique novamente em "Add File(s)". Selecione os três arquivos fundo3.gif, fundo4.gif e fundo5.gif e confirme. Eles serão listados também. O BgMode dos três deve ser TileBg e a Palette de cada um deve ser o nome do arquivo sem o gif. Caso eu tivesse dois arquivos com a mesma palete de cores, poderia alterar o nome da paleta de um deles para o mesmo nome da do outro, economizando memória, mas este não é o caso aqui. Em Global Options, verifique que a Transparent Color seja Magenta. Clique em "Save Ini" e pode sair do programa.

Depois do ini pronto, rode o "PAGfx.exe". Ele irá criar diversos arquivos. Nós usaremos esses arquivos para fazer um fundo que se move em três níveis de velocidade. O fundo3 se moverá mais rápido e o 5 mais lento, dando efeito de profundidade. Tente procurar imagens de fundos que possam ser usados com essa finalidade, só lembrando que o tiled background deve ter tamanho de 256x256 ou 512x512 pixels. Pode-se recortar um pedaço de uma imagem e fazer. Eu cortei e espelhei, para dar continuidade quando fizesse o deslocamento, por isso as sombras das árvores ficaram todas voltadas para o centro da imagem. Depois cortei os três níveis e corrigi os espaços das montanhas no céu e preenchi tudo o que eu quisesse transparente com a cor magenta (magenta acho que é a cor menos usada, a não ser que eu estivesse fazendo um jogo da Barbie). O PAGfx permite apenas que magenta, verde, preto ou branco seja a cor transparente.

2 comentários:

Leonardo Zimbres disse...

Classy. Vou ver se termino aquele jogo em flash logo para poder levar algumas coisas dele logo para o ds também.
Valeu as aulas, estão muito boas.

Unknown disse...

Bom trabalho :)

Ficou bem fácil de se intender.