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:

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 :).