Bem, a minha intenção era ter começado pela MOAI, mas por ocasião do concurso de desenvolvimento que mencionei semana passada, acabei indo tirar a poeira do meu ActionScript 3 e ir brincar com a Flixel, pra ver se dá pra encarar ou não (ainda não decidi).
Depois de algumas horas de trabalho já consegui fazer quase tudo. Tenho uma splash screen, o menu principal, a tela de jogo e o gameplay (sem ajustes de level design), incluindo pontuação e condições de derrota. Mas ao invés de seguir as especificações que eu havia dito, resolvi trabalhar com o gênero “lobos e ovelhas”, que é consiste basicamente em separar dois grupos de personagens que vão aparecendo na tela (um bom exemplo desta mecânica é o minigame com os Bob-ombs que existe no Super Mario 64 para Nintendo DS).
Bom, o meu foco, por enquanto, é fazer para o desktop/web, e não me preocupar muito com as plataformas móveis. Porém, como consegui fazer o protótipo rapidamente, aproveitei que o processo para gerar o build para Android é bem simples com o FlashDevelop e dei uma testada.
De cara não consegui rodar o jogo num Galaxy Ace, mas não sei bem porque, pois o aparelho, em teoria, suporta o Air Mobile e tem um processador ARM11. Porém, também testei com um Galaxy S III e lá funcionou, apesar de que eu percebi um certo lag na hora de tocar e arrastar os personagens.
Ao chegar em casa pude testar em um G-Tablet e a coisa ficou séria. A responsividade do toque está péssima, não dá pra jogar, apesar de não dar nenhuma engasgada, eu imagino que seja problema de alocação da objetos. De toda forma, não pretendo parar para otimizar agora, só depois que o jogo estiver concluído, afinal, o importante é terminar o jogo, os ajustes ficam para depois.
Sobre o código do jogo, uma coisa que me ajudou bastante foi o uso da Flixel Power Tools, um plugin para a Flixel que adiciona várias funcionalidades bem úteis. As que usei até agora foram o componente FlxButtonPlus (que dá uma incrementada no botão padrão), o FlxExtendedSrpite (para usar a função de drag-n-drop) e o FlxBitmapFont (para usar no placar).
Ainda que não seja prioridade, uma coisa legal para a parte Android que estou usando no FlashDevelop é o seguinte, o meu projeto Air Mobile tem apenas a classe de ponto de entrada (document class) e todo o resto do código está referenciado como uma biblioteca, na pasta do meu projeto original.
Desta forma não preciso duplicar o código, e qualquer alteração no código do jogo está disponível para ambas as plataformas. Além disso, por ter pontos de entrada diferentes é possível fazer caminhos alternativos até começar o jogo para, por exemplo, configurar a resolução e o posicionamento dos elementos na tela. Inclusive achei até um código que faz justamente isto:
http://forums.flixel.org/index.php/topic,6031.msg34096.html#msg34096
Por fim, eu sei que o problema da performance é do meu código porque enquanto eu procurava dicas para usar a Flixel em Android, acabei esbarrando em alguns jogos feitos desta forma, e que rodaram muito bem no G-Tablet: