quarta-feira, janeiro 30, 2008

Paraquedismo - Nova Versão

Implementei algumas novidades e estou liberando uma nova versão do Paraquedismo. Sem enrolação, vamos às novidades:

- Sistema de recordes: as dez maiores pontuações agora ficam registradas usando o sistema de arquivos do J2ME.

- Barra de pontos: eu coloquei uma barra no topo da tela onde ficam exibidos alguns dados, melhorando a visualização.

- Limite de pára-quedistas: ao invés de jogar infinitamente, agora há um limite de trinta pára-quedistas, o que pode tornar o jogo menos chato. O grande desafio agora é somar o máximo de pontos dentro deste limite de tentativas. O jogo termina ao fim das trinta tentativas ou das dez vidas e caso termine com vidas sobrando, elas são convertidas em um bônus na pontuação.

Estatísticas:
Tamanho do Jar: 44,1 KB
Tamanho do Jad: 252 Bytes
Tamanho total das imagens (descompactado): 28,4 KB
Tamanho total das classes (descompactados, em formato .class): 26 KB

Download: aqui.

Segue uma imagem mostrando a barra que foi colocada no topo da tela:

Imagem mostrando a tela de jogo com uma barra de informações no topo.

4 comentários:

André Kishimoto disse...

Olá Diego,

Em primeiro lugar, parabéns pelo desenvolvimento do jogo! Por enquanto você é o único que já concluiu (ou quase concluiu) o jogo pro contest da Unidev né?

Não cheguei a jogar bastante, quis mais ver a idéia do jogo mesmo. Aqui vão algumas críticas construtivas para o seu jogo:

- Detalhe que deixa seu jogo com cara mais profissional: adicione um ícone (que tal um pedaço da imagem do para-quedista?) e seu nome na Midlet ao invés de deixar o padrão "Vendor";

- Obfusque seu jogo. Além de uma certa proteção nos arquivos, os arquivos são compactados, deixando o jar final com tamanho menor;

- Você não precisa usar o arquivo fundo.png no jogo: limpe a tela com a cor azul, desenhe a barra e quadrado vermelho com fillRect e faça imagens separadas das nuvens;

- Sobre as bandeiras, dá pra economizar espaço: ao invés de 17x21, você consegue usar uma imagem 15x10 e ainda assim obter o mesmo resultado, já que a barra preta é desenhada no fundo.png (ou via fillRect);

- Você também não precisa usar uma imagem menu.png de quase 23kb: já que o fundo é igual o do jogo. Além disso, os botões podem ficar em arquivos separados. Sabe, dividir os componentes do menu e montar via código;

- Arquivos selecao.png e menu_selecao.png podem ser otimizados (muito espaço não utilizado) ou mesmo divididos;

Instalei o jogo num SE W200 e Motorola K1:

- W200 possui tela real 128x160 e K1 tela real 176x220

- Mas como você não usou modo tela cheia, o K1 não mostra toda a tela. Mesmo que você usasse modo tela cheia, apesar da especificação do K1 ser 176x220, o que você consegue é 176x205, pois 15 pixels são usados para barra de info do aparelho (sinal, bateria, etc)

- Ou seja, as especificações nem sempre são reais para aplicações;

- Com isso, não vejo nem a última opção do menu nem a url do seu blog;

- No K1, bizarramente eu só consigo selecionar opção do menu com a tecla 9 ou #;

- Bug: o jogo travou meu K1, tendo que desligar e ligar o telefone, pois aparentemente não há suporte para resume do jogo (por ex, estou jogando, recebo uma ligação, pauso o jogo pra falar e depois volto a jogar);

- Se você alterar o tamanho das imagens e adaptar o código, você consegue fazer um jogo que roda em qualquer aparelho, até mesmo 128x128!

Essas foram as coisas que percebi ao instalar e rodar seu jogo por uns minutos. Não cheguei a testar a parte de pontuação.

Como último conselho, nunca confie em emuladores hehe!

Diego disse...

Oi André, primeiro quero agradecer pelas ótimas dicas. Esse tipo de informação é sempre útil, ainda mais vindo de um profissional :)

A única observação que eu tenho a fazer é que eu não liguei muito para o tamanho das imagens e a redundância (no caso da imagem do menu e o fundo do jogo), porque o jogo ainda está dentro dos limites que o regulamento propôs (200 KB).

Ainda assim, são dicas importantes que certamente devem ser levadas em conta.

Sobre esse tratamento por causa da falta de suporte ao resume, realmente eu não programei nada neste aspecto e nem sei como fazê-lo. Mas vou pesquisar e corrigir esse problema.

Quanto ao ícone e o nome, eles estarão na próxima versão.

Eu estou querendo adaptar o jogo com uma resolução menor e neste caso vou aproveitar pra aplicar os pontos apontados por você.

Valeu e volte sempre.

André Kishimoto disse...

Ah, esqueci de outro detalhe: todos os textos (você está usando Graphics.drawString()?) foram mostrados erroneamente (sobreposição). E como o texto de instruções ocupa mais pixels que a altura da tela do aparelho (lembre-se que cada aparelho possui um tamanho diferente para os caracteres quando usamos o padrão com drawString()), não dá pra ler toda a instrução (aplicar scroll de texto ou sistemas de 'paginas' é o mais comum).

Sobre sua observação, entendo que o jogo está dentro dos limites do contest e tudo mais, mas acho extremamente válido pegar o jogo e, já que ainda faltam uns 20 dias até o fim do contest, dar uma polida nele. Ou mesmo que passar do contest, deixa ele com cara mais profissional, pois vai ser um jogo no seu portfólio e com uma cara mais profissional as pessoas vão notar que você não fez 'nas coxas' porque era um jogo pra aprender, entende? Com certeza pesa numa entrevista.

E quanto ao tamanho, se você for comparar com jogos profissionais... pega o Splinter Cell Chaos Theory, pro w200 por ex. menos de 200kb incluindo dados dos settings e savegame do jogo. E com som!

É isso aí. Quero ver novas versões do jogo hehe!

Diego disse...

Eu estou escrevendo os textos com drawString sim e no emulador eles aparecem direito. Esse é o problema de fazer um jogo sem ter um celular pra testar, acabo tendo que confiar somente no resultado do emulador.

As instruções também cabem direito no emulador. Talvez eu mude para uma caixa de texto e aplique um scroll, assim ele vai aparecer certo independente da resolução.

E você tem razão no caso de ter um jogo mais bem acabado. Hoje mesmo eu estava testando uns jogos de celular que peguei na internet e tava falando mal de alguns errinhos bobos que os programadores deixaram passar.