Category Archives: Projetos

Notícias sobre meus projetos.

Global Game Jam ’11 e Rise of the Titans

Nos dias 28, 29 e 30 de Janeiro aconteceu o Global Game Jam. Como você deve imaginar, é uma competição de criação de jogos que acontece simultaneamente no mundo inteiro. Eu, como já era de se esperar, participei. Junto com @PotHix, @rmasoni e @_bojak.

Aqui em São Paulo, o lugar mais próximo que ocorreu o evento foi na Fatec São Caetano do Sul. E lá estávamos, às 20h de sexta-feira, abdicando nossas preciosas horas de sono e entretenimento do fim de semana.

Nossa equipe já estava formada algumas semanas antes do evento. Nessa ocasião discutimos, inclusive, qual ferramenta, biblioteca e linguagem deveríamos usar. Optamos por criar um game para o HTML5 Canvas, usando JavaScript e a biblioteca Akihabara, que tem como objetivo auxiliar a criação de jogos no estilo 8bits.

Desenvolvimento e Criação

O tema, extinção, embora aparentemente simples à primeira vista, foi complexo. Ideias abundavam. Dinossauros, raça humana, animais, luz. Pizza foi e as ideias foram ficando mais estreitas. Até que decidimos fazer um jogo em que você controla titãs, antiga forma de vida no planeta que estava adormecida, numa guerra contra a humanidade, cujas constantes destruições vêm abalando todo planeta Terra.

Enquanto Rafael Masoni fazia alguns conceitos de nossa ideia, começamos a preparar a estrutura do jogo, repositório Git e fazer alguns testes. Dividimos as tarefas e começamos a programar. Perto das seis horas da manhã, já tínhamos player e inimigo com movimentos básicos. Mas o cansaço já nos dominava, impedindo progressos. Decidimos, então, ir todos para casa dormir e voltar às sete da noite do sábado, para ficar até o fim.

Ao chegar, sabíamos que não haveria mais descanso até o fim. Teríamos que ter disciplina, correr e fazer quase o jogo todo em menos de vinte horas. Percebemos, também, que não seria possível implementar toda nossa ideia para entregar. Era realmente muita coisa, e nós nem sabíamos direito como funcionava a Akihabara. Resolvemos implementar só o gameplay, sem o sistema de estágios e dificuldade. Mas nem inteiro o gameplay ficou, faltaram elementos que mudariam muito o jogo.

Apesar da correria ao fim, conseguimos entregar o básico proposto.

Sucessos

Finalizar qualquer demo jogável em uma competição de 48h como essa já é um sucesso. O intuito da competição é apresentar desafios, e nós os superamos.

A escolha da biblioteca foi muito feliz. Akihabara é uma biblioteca simples, mas muito poderosa. Aliando o poder do Canvas do HTML5 com  a facilidade e a portabilidade, é possível criar jogos casuais em estilo retrô muito facilmente.

Problemas

Acredito que não saber muito da ferramenta que usamos seja a principal falha. Talvez nem seja uma falha em si, mas um problema que nos atrasou um pouco. Mas foi um desafio agradabilíssimo, em minha opinião.

Considerações Finais

Depois de ver o trabalho pronto, embora esteja realmente muito simples, eu acho que nossa equipe trabalhou muito bem. Fizemos o que nos propomos, apesar de nossas limitações. E, pessoalmente, digo que essa foi uma experiência muito agradável e instrutiva. Recomendo.

O jogo Rise of the Titans está online. Mas não terminamos ainda. Continuaremos desenvolvendo este game até o fim. O projeto também é totalmente aberto, o que significa que você pode ajudar o projeto. Dê dicas, sugestões, críticas. Faça como o @henrygosuen, com este belíssimo post dando sugestões ao nosso jogo. Ou coloque a mão na massa! Faça um fork do jogo no GitHub, edite o código e mande. :)

Google Buzz

AnimAllegro – Framework simples de animação

Há muito tempo não mexo com Allegro — biblioteca multimedia escrita em C –, mas fuçando em minhas coisas, encontrei algumas classes de suporte que eu utilizava em meus projetos em C++. Resolvi primeiro distribuir algumas classes que fiz para tratar sprites e animações (que eu já tinha postado sobre), então chamei tudo isso de AnimAllegro, um framework bem básico, e aqui vou falar sobre ela, brevemente.

A AnimAllegro é simples em dois sentidos:

  1. Ela está muito simples. Faltam alguns features para que ela possa ficar interessante. Entretanto, ela já é funcional.
  2. Ela é simples, porque fazer um sprite animado tem que ser simples. Vou mostrar alguns exemplos:
AnimSprite sprite;

sprite.AddFrame("standing.bmp");

sprite.AddFrame("walking1.bmp");
sprite.AddFrame("walking2.bmp");

sprite.AddState(new State(0, 0)); // Animações do sprite parado
sprite.AddState(new State(1, 2)); // Animações dos sprite andando
sprite.FitStates();
sprite.SetCurrentState(0); // Escolhe o estado parado.

sprite.SetPosition(10, 10);

Para que ele anime, basta chamarmos o método run, passando um bitmap por parâmetro para que ele exiba o sprite, no looping principal:

sprite.run(bitmap_buffer);

Sempre que precisar mudar de estado, basta chamar o método SetCurrentState. Você pode ver um exemplo completo aqui.

Dá para perceber que ainda ainda falta implementar algumas coisas essenciais, como por exemplo o suporte a spritesheets, aquelas imagem que contém todos os quadros da animação, bem como um suporte aos DATAFILES do Allegro; um melhor controle de velocidade; documentação; etc.

Então aproveitando, gostaria de dizer que o projeto é livre, você pode usar à vontade (de acordo com a licença LGPL), mas que também pode colaborar para melhorar. Basta dar um fork aqui no projeto no Codaset, fazer a alteração que achar conveniente e então enviar.

Ainda tenho muitos outros códigos interessantes em Allegro e C++ que eu criei aqui que gostaria de compartilhar, quem sabe depois eu compilo tudo num framework de jogos. :)

Google Buzz

E-Lixo – Como enfrentar isso com tecnologia

E-Lixo é definido pela Comunidade Europeia (2003) como um equipamento elétrico ou eletrônico que foi descartado. Se o lixo convencional já um problema sério que até hoje não há soluções definitivas, o que dizer de um lixo que contém inúmeras substâncias tóxicas em sua composição e que cresce estupidamente?

Esse foi o tema de um projeto desenvolvido por mim e mais alguns integrantes na disciplina de Resolução de Problemas, que eu já comentei aqui no post Acessibilidade e Software Livre.

Fomos convidados pela orientadora da pesquisa para apresentarmos esse projeto no Congresso Internacional PBL 2010, que ocorreu no período de 8 a 12 de fevereiro na unidade EACH da USP. Por isso ainda não tinha postado sobre ele aqui no blog, esperei então passar o congresso.

Não vou comentar sobre o assunto do projeto em si neste post, mas aguardem que em breve escreverei algo interessante acerca de nossa pesquisa. Por enquanto, fique com os slides da apresentação:

Se alguém se interessar, temos também uma versão em inglês.

Publiquei o trabalho escrito no Scribd, quem quiser conferir, basta acessar o link: E-Lixo – Como enfrentar este problema com a própria tecnologia.

Gostaria muito de agradecer aos principais envolvidos no trabalho:

  • Fernando Renato Matsunaga Marchiotto
  • Guilherme Augusto Machado
  • João Paulo Domingues dos Santos

Caso alguém tenha alguma dúvida, crítica ou sugestão, pode entrar em contato pelos comentários do post. Espero receber algum feedback. =)

Google Buzz