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.

segunda-feira, janeiro 28, 2008

Paraquedismo - Primeira Demo

Estou liberando a primeira demo do jogo Paraquedismo.

Na verdade está é quase uma versão final, já que falta basicamente implementar um sistema de recordes e pronto. Agora que vocês vão poder testar o jogo, de repente alguém tem alguma idéia pra adicionar nele. Se for o caso, me conte sua idéia nos comentários.

O jogo é simples. Você deve pousar os paraquedistas no alvo que tem no chão e quanto mais perto do centro, mais pontos serão ganhos. Ao mesmo tempo, evite que os outros paraquedistas saiam da tela para não perder vidas.

Eu gostaria de saber se o jogo está fácil ou difícil demais. Se puderem, deixem seus recordes aqui.

Seguindo algumas sugestões que recebi, eu retirei o vento e coloquei umas bandeirinhas indicando a direção do vento. Também implementei um menu principal que visualizar as instruções, recordes (ainda não implementado), jogar ou fechar o jogo.

Veja algumas novas telas:

Menu principal do jogo.
Nova tela de jogo sem a imagem do vento. As bandeiras indicam a direção do vento agora.


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

Download: aqui.

Observação sobre o tamanho da tela: de acordo com as regras com Unidev Mobile Contest, o tamanho da tela máximo permitido é 176x220. Eu estou trabalhando com este tamanho, porém o emulador exibe uma tela maior e eu não sei mudar isso. Mas ainda assim eu estou dentro das regras, já que tudo está sendo desenhado dentro desse limite máximo e o meu jogo deve rodar perfeitamente em uma tela de 176x220.

Apenas o contador de quadros por segundo está sendo desenhado fora desse limite para não poluir demais a tela de jogo, mas na versão final o contador será retirado.

sábado, janeiro 26, 2008

Tutorial: Temporizador no J2ME

Eu escrevi um tutorial ensinando como controlar a velocidade de execução dos jogos no J2ME e como visualizar a velocidade em que o jogo está sendo executado.

Por problemas de formatação, eu preferi colocar o tutorial numa outra página ao invés de publicá-lo diretamente aqui. Apesar disso, a formatação no Google Pages também não ficou como eu gostaria, então tentem não reparar ;P

O tutorial pode ser visualizado aqui e o código-fonte com um projeto de exemplo pode ser baixado aqui.

Espero que o tutorial seja útil. Até mais.

sexta-feira, janeiro 25, 2008

Unidev Mobile Contest - Paraquedismo

Muito bem, como eu disse anteriormente, eu estou participando da competição de jogos pra celular da Unidev.

Eu estou fazendo o meu jogo desde segunda-feira e quero terminá-lo rápido pra ver se ainda dá tempo de fazer minha inscrição no Game PDJ Contest 2007, que vai até o dia 31/01.

Pra esse concurso eu pensei em fazer algo simples, um jogo casual que não fosse muito trabalhoso pro jogador. Existem várias re-invenções de jogos conhecidos, como Breakout e Pong pra celulares, e eu tentei evitar repetir alguma dessas fórmulas conhecidas no meu jogo.

Depois de muito matutar, me veio a idéia de fazer um jogo de paraquedismo. Eu não conheço outros jogos deste tipo, exceto um jogo que tinha num antigo programa da TV Bandeirantes onde o jogador (geralmente um artista convidado) gritava um comando e o paraquedista pulava em direção ao alvo. Porém, apesar do objeto central ser o mesmo (um pára-quedas), o meu jogo é bem diferente deste.

Primeiramente, vamos dar nomes aos bois. Num lapso de criatividade incrível, eu chamei meu jogo de Paraquedismo. Muito original, não concorda? Mas tudo bem, o nome ainda não é definitivo e de repente eu penso num nome mais legalzinho antes do lançamento nos concursos.

No jogo, você controla o curso do paraquedista desde os céus até uma plataforma colorida no chão. Dependendo de onde o personagem pisar ao tocar no solo, você ganha uma certa quantidade de pontos.

Essa idéia é simples e pode até ser divertida (ou não), mas não oferece nenhum desafio real. Então, pra dificultar as coisas, uma ventania empurra o paraquedista e se ele sair da tela, perde-se uma vida. Com isso, eu matei dois problemas do jogo: aumentei o desafio e incluí uma maneira fácil de dar game over.

Mas espere, você não achou o jogo desafiante o suficiente ainda? É, nem eu. Por isso, pra dificultar ainda mais, você não controla só um paraquedista, mas sim dois ou três. Agora, o jogador deve empurrar o personagem pra longe dos cantos da tela (pra evitar perder vidas) e posicioná-lo de forma a ganhar o máximo de pontos no pouso, mas ainda tem que alternar entre os outros paraquedistas pra tentar salvar todos de serem levados pelo vento.

O jogo está praticamente pronto (como eu disse, estou meio que correndo por causa do concurso do PDJ), faltando basicamente a criação de um menu principal (pra dar um ar mais profissional ao jogo), a adição de efeitos sonoros (que eu ainda não decidi se vou fazer) e um sistema de recordes.

Uma novidade pra mim nesse jogo é que eu fiz todas as (poucas) imagens utilizadas nele. Como eu sou um péssimo artista gráfico, normalmente eu uso e/ou altero imagens retiradas de outros jogos ou utilizo imagens feitas especialmente para um jogo por amigos (como o David), mas desta vez decidi que iria fazer tudo eu mesmo. São poucas imagens e não foi nada muito trabalhoso de se fazer. O resultado também não é lá grandes coisas, mas também não ficou tão ruim assim.

Uma coisa na qual eu ainda estou trabalhando é o sprite que representa o vento. Minha idéia é ter umas particulas voando pra indicar em qual direção a corrente de ar está se movendo no momento (eu não disse acima, mas existem três correntes de ar independentes e com o tempo elas mudam de direção e velocidade). Eu fiz uns rabiscos que ficaram bem toscos e não tenho a menor idéia de como melhorá-los. Se alguém puder me dar umas dicas ou quiser participar do jogo fazendo este gráfico, é só entrar em contato.

Quanto à essa imagem do vento, eu ainda estou na dúvida se ela deve ou não aparecer. Ela não é realmente necessária, já que o jogador pode sentir a direção e força do vento vendo os paraquedistas sendo empurrados, mas eu acho que a tela fica muito limpa sem as partículas de vento. De qualquer forma, abaixo seguem duas telas, uma com e outra sem o vento. O que vocês acham, qual fica melhor?














Falando um pouco do desenvolvimento do jogo. Ele está sendo feito em J2ME com o NetBeans 5.5. Eu cheguei a testar o 6.0, mas sobre ele só tenho uma coisa a dizer: LEEEERDO. Pra se ter uma idéia, um código que demora dois ou três segundos pra ser compilado no NetBeans 5.5, chegou a demorar quase três minutos na versão 6.0. Eu não sei o motivo, mas parece que realmente erraram a mão nesse novo NetBeans.

Pra desenhar as imagens eu usei o Paint e o Fireworks (aqui fica uma dica: o paint salva as imagens como ".PNG" e o Fireworks como ".png", e no código isso faz uma grande diferença. Se você não escrever com a caixa certa, a imagem não será encontrada).

Conforme descrito nas regras, os jogos do concurso devem ter seu código aberto. Aproveitando isso, eu quero deixar meu código bastante comentado, pra ver se ele pode ser seguido como se fosse uma espécie de tutorial. Futuramente talvez eu faça uma série de posts mostrando e comentando pequenas partes do código, até montar o jogo completo (ou então faça isso com outro jogo mais simples).

É isso. Se tudo der certo, eu termino o jogo antes do fim do mês e publico ele aqui assim que terminar minha inscrição no PDJ. Mas se meus planos falharem, o jogo aparece por aqui no mês que vem.

Até a próxima.

domingo, janeiro 20, 2008

Unidev Mobile Contest #1

O Bruno Croci (ou CrociDB para o pessoal da Unidev) teve a idéia de criar um concurso de jogos pra celular pra animar o fim das férias. Eu já estou dentro e você, o que está esperando para entrar?

Conheça as regras:
-- Desenvolvimento com CLDC 1.1 e MIDP 2.0;
-- Tamanhos de Tela: 128x128, 128x160 e 176x220
-- Ferramenta: Sun Wireless Toolkit;
-- IDE Livre;
-- Código Fonte Liberado (Open source);
-- Distribuição final em dois pacotes, um com o JAR e o JAD e outro com os fontes;
-- Criação de um tópico (no fórum da Unidev) com o título [UniDev Mobile Contest #1] - NOME DO JOGO;
-- Atualização constante do tópico com Imagens e dados;
-- O Jar final tem que ser menor que 200kb;
-- Estilo e Tema LIVRES.

Se interessou mas não sabe por onde começar? Não tem problema.

O Ney Estrabelli post em seu blog um link para um outro blog cheio de tutoriais do J2ME.

E tem mais. Faz um tempo eu liberei o código de um joguinho da memória desenvolvido em J2ME. Não é muito, mas pode ajudar. Confira aqui.

Então é isso. O concurso começa oficialmente na segunda-feira (21/01) e terá duração de um mês. Contamos com a sua participação :)

sexta-feira, janeiro 18, 2008

AllegroNet - Primeira versão

Pois é, conforme eu falei anteriormente, estou fazendo um wrapper do Allegro para .Net e a primeira versão acaba de sair do forno com o nome de AllegroNet.

Neste primeiro lançamento eu coloquei apenas as funções principais do Allegro, mas já há um número bem alto de funções disponíveis e eu acredito que as funções mais importantes já estão todas aí.

Duas ausências sensíveis são o suporte a joysticks (que estão no topo da lista pras próximas versões) e o som (que eu não pretendo portar, já que não vou usar o som do Allegro no meu TCC, mas se houver interesse de outras pessoas eu posso fazer).

Uma lista completa das funções já disponíveis, das que estão na fila e das que deram problema estão no arquivo "Funções.txt" que acompanha o projeto. As funções que não são citadas nesta lista são as que eu não pretendo portar, a menos que haja interesse de outras pessoas.

O projeto, com código-fonte incluso, pode ser encontrado aqui. Nele há uma solução do Visual C# 2005 que contém, além do projeto AllegroNet, um outro projeto que demonstra o funcionamento do wrapper, e alguns arquivos com instruções.

O AllegroNet é de uso livre e se encaixa sob a mesma licença do Allegro (gift-ware). Se você fizer algo usando meu wrapper, não é necessário nem mesmo me avisar, mas se quiser me avisar seria legal pra que eu saiba que meu trabalho foi útil pra outras pessoas.

Qualquer dúvida, sugestão, comentário ou crítica, é só entrar em contato.

Download: clique aqui.

Cardoso e Stallman - Free Software Song

O David é um amigão meu da faculdade e feliz proprietário de uma mente criativa pra cacete.

Desta vez, em resposta a um desafio do Carlos Cardoso no Meio Bit, ele criou um videozinho com o Stallman e o Cardoso cantando canção do Software Livre. Assista e tenha boas risadas.

domingo, janeiro 13, 2008

Portando o Allegro para o C#

Antes de mais nada, eu quero dizer que eu adoro reinventar a roda quando se trata de programação. Apesar de existir muita coisa pronta e muito bem-feita por aí, ás vezes eu gosto de fazer minha própria versão. Isso me dá um controle maior sobre o que a biblioteca está fazendo e serve como uma boa base pra estudos.

Mas pra que eu estou falando sobre isso? Como eu disse anteriormente, eu estou desenvolvendo meu projeto de TCC e andei tendo problemas com algunas bibliotecas testadas. Agora eu resolvi usar o Allegro, uma boa biblioteca com a qual eu já trabalhei e testes mostraram que ele tem um bom desempenho.

Acontece que não há uma versão oficial do Allegro para .Net, então a saída normal seria buscar um wrapper que alguém já fez e pronto. Ao invés de fazer isso, eu resolvi criar meu próprio wrapper do Allegro (chamado AllegroNet). Você deve estar pensando "etâ cara doido, procurando mais trabalho!". Sim, é mais trabalho. Mas eu gosto :P

Fazer um wrapper no .Net para uma DLL nativa é bem mais simples do que eu pensava. Você só precisa mapear cada função da DLL no .Net usando o DllImport. Além disso, basta re-declarar as structs no seu código, já que elas não podem ser importadas diretamente.

Eu começei a mexer com isso no sábado de tarde e agora (uma e pouco da manhã de domingo) já é possível carregar e desenhar uma imagem com meu wrapper. É pouca coisa, mas o tempo que demorou pra fazer isso também não foi muito grande.

Eu pretendo portar apenas as principais funções do Allegro pro .Net, ou melhor, pretendo portar apenas as funções que eu vou usar no meu framework. Mas se alguém por aí tiver interesse em usar o Allegro com .Net e quiser que eu porte mais coisas, é só me avisar que eu posso aumentar a tradução.

Como sempre, ao invés de dar o link pro download, eu vou prometer que em breve eu libero a DLL pra vocês testarem e também o código, pra quem tiver interesse. Eu sei que isso é chato, mas realmente não dá pra liberar o projeto no pé que ele está agora.

Aguardem novidades.

sábado, janeiro 05, 2008

Livro - Video Game Arte

Hoje fui numa loja de jogos e tive uma grata surpresa ao encontrar (na verdade minha namorada encontrou, então fica aqui o agradecimento :)) um livreto de distribuição gratuita chamado Video Game Arte - Pacote de Expansão. E é claro que tratei de pegar o meu.

O livreto é um material promocional do livro Video Game Arte, de Arthur Bobany, e traz pitadas do que será encontrado no livro completo. São dois capítulos (que eu acredito não estarem na íntegra), "A Arte nos Games" e "Crítica de Games", mais um bônus que fala sobre as etapas de desenvolvimento de um jogo.

O livro em si (192 páginas, R$32,00), discute a relação entre os jogos e a arte e a cultura (é, eu sei... pelo nome nem dava pra perceber né!). O interessante é que ele foi escrito com a colaboração de gente que entende do assunto (como o Professor Esteban Walter Gonzalez Clua, que deu uma palestra lá onde eu estudo em 2006 e acreditem, o cara é fera) e o material parece ser de alta qualidade.

Pelo que deu pra ver no livreto o texto flui muito bem e é complementado por muitas imagens e caixas de texto laterais que justificam a presença dessas imagens, mostrando que elas foram escolhidas por sua relevãncia no mundo dos jogos, e não porque eram "bonitinhas".

Uma coisa que me agradou muito foi a brincadeira que fizeram com termos e ícones comuns aos jogos no livro. Por exemplo, o livreto traz as palavras "Pacote de Expansão", uma referência óbvia aos pacotes de expansão dos jogos de PC. Outro exemplo interessante é que, na contra-capa, vários selos imitam avisos de classificação etária e tipo de conteúdo, algo que a gente está acostumado a ver nas caixinhas dos jogos, mas com um texto que faz chamadas ao conteúdo do livro.

Outro destaque está para o fato do livro ser patrocinado pela AMD. Não que surpreenda a AMD estar patrocinando um projeto relacionado a jogos, ainda mais depois da compra da ATI, mas a AMD estar patrociando um projeto brasileiro, isso sim é notável.

O livro já deve estar à venda nas livrarias por aí, mas não posso confirmar se está ou não, já que o site da editora não dá mais detalhes. Ainda não procurei por aqui, mas devo tentar comprar o meu em breve.

Pra que quiser mais detalhes, eu fiz uma rápida pesquisa no google e achei algumas informações. O Uol Jogos explica mais ou menos do que se trata o livro aqui, e um texto maior e mais explicativo saiu na Rede RPG (site no qual o autor do livro atua como colaborador) e pode ser lido aqui.