Posts de 08/2006

Os nerds de amanhã

20/08/2006 - 16:21 PM - 9 pessoas não foram à escola.

A tirinha abaixo é baseada em fatos reais.
Os erros de português foram cometidos intencionalmente, para deixar o relato ainda mais verídico. :)

Tirinha

Apesar de já ter programado em Java e gostar do Flash, acho que são duas tecnologias que dão margem para muitos erros, se praticadas por quem não tem muita noção. Não posso falar tanto de Java porque meu conhecimento é mínimo, porém sei que existem linguagens como Pascal e Python, mais indicadas para o aprendizado de programação.

Já em relação ao Flash, quantos de vocês usuários do GNU/Linux, não ficaram furiosos ao abrir algum site de vídeos ou animações que exigiam o Flash Player 8, ou viram algum site totalmente em Flash que deixava o browser lento? E menus em Flash? E os famigerados banners extensíveis que cobrem o conteúdo no Firefox? Argh!

Também entrei no mundo da informática aprendendo as coisas do modo errado (como fazer páginas HTML com tabelas no DreamWeaver, fazer sites em Flash, etc), mas depois notei a importância dos padrões Web, da acessibilidade em páginas e outras metodologias e técnicas que facilitam a vida dos desenvolvedores Web, mas vou deixar para falar sobre esses assuntos legais em outros posts. :)

Obs: Gostei do desenho. Acho que vou começar uma série do tipo:
“As aventuras do Nerd Karlisson” :D

9 pessoas não foram à escola.

Sprites de jogos com Inkscape e Animate

19/08/2006 - 19:30 PM - 5 pessoas não foram à escola.

Certa vez procurei um software para GNU/Linux que facilitasse o maçante processo de desenhar e testar sprites de jogos 2D. Não achei nada.

Já fiz isso no Windows usando o Flash, em um jogo (Anacroz Tactics) que desenvolvi com um colega de faculdade. O Flash facilita bastante o processo com o uso de frames, separando cada posição da animação em um frame diferente, e a pré-visualização da animação no próprio programa, onde os sprites são desenhados.

No entanto, eu pretendo criar a continuação desse jogo totalmente no GNU/Linux, sem o uso de ferramentas proprietárias. Pensei num modo de criar e testar os sprites de forma que não seja necessário executar o jogo toda vez que eu quiser testar a animação, nem criar gifs animados, além de outros trabalhos desnecessários, como por exemplo, mudar a cor de um sprite e ter que mudar em todos os outros (sic).

Para desenhar os sprites, usei o Inkscape, um excelente software de ilustração vetorial que vem evoluindo bastante, e na minha humilde opinião, equivalente ao Corel Draw em muitos recursos. ;)

Criei uma imagem de teste de 180 x 180 pixels, dividida em 9 quadros, cada um sendo um sprite:

Sprites alinhados na imagem

Mas e se eu tivesse que mudar a cor do pingüim, teria que mudar em todos? Não!
O Inkscape, assim como vários outros softwares de ilustração vetorial, possui o recurso de clonagem, ou seja, eu só precisei desenhar* o pingüim uma vez, depois criei vários clones e os posicionei na imagem. Graças a isso, uma possível alteração nos sprites ao longo do projeto não custaria quase nada, pois se o original for alterado, todos os clones são automaticamente alterados.

Embora não seja necessário criar uma imagem para cada sprite, devido ao fato das bibliotecas de jogos implementarem funções de leitura e mapeamento de imagens, eu precisei gerar imagens temporárias de cada sprite para visualizar a animação com o programa animate, da suíte de aplicativos Imagemagick. Antes, eu precisei saber como.

Felizmente, o Inkscape não é somente um aplicativo com uma interface gráfica. É possível executar algumas funções via linha de comando. A opção que usei simplesmente “corta” e exporta partes da imagem em arquivos PNG:

inkscape -e imagem1.png -a 0:0:60:60 modelo.svg

Através da opção -a, definindo uma área retangular com os pontos x0, y0, x1 e y1, ele exporta somente essa região da imagem num arquivo PNG especificado com a opção -e. Criei então um pequeno script em Python para automatizar esse processo, gerando todas as imagens necessárias, passando como parâmetros o arquivo SVG, as dimensões da imagem e a quantidade de sprites na imagem.

Agora basta executar o comando animate especificando o delay entre cada imagem e o conjunto de imagens a serem exibidas:

animate -delay 10 *.png

E uma janela aparece exibindo a animação.

Bem, espero ter mostrado um pouco do poder do Inkscape e uma boa técnica para facilitar o desenvolvimento de jogos para GNU/Linux, que pode ser aplicada em vários outros casos. Agradeço os comentários, sugestões e críticas construtivas!

*Na verdade eu não o desenhei, apenas o adaptei :).

5 pessoas não foram à escola.

Starting up system…

15/08/2006 - 12:17 PM - 4 pessoas não foram à escola.

Como todo bom nerd, dou o pontapé inicial neste blog em grande estilo:

print
“Hello world!”

E como todo bom blogueiro, falo do que se trata este blog: design, programação, cultura digital e jogos, entre outros assuntos bem nerds que rendem muitos posts.

E como todo bom web designer, é evidente que não me contento com esses layouts padrões, então mais cedo ou mais tarde mudarei.

Por enquanto é só, e obrigado pela visita!

4 pessoas não foram à escola.