quinta-feira, janeiro 07, 2010

XNA Freeway - Remake

Quem acompanha o blog já deve ter percebido que eu gosto de fazer remakes. Que eu me lembre, já foi o Frogger, Pong, Breakout, Space Invaders (mais de um, na verdade), Pacman e Glug Glug. O motivo é bem simples: os remakes me permitem focar o estudo em uma linguagem, ferramenta ou técnica sem ter que passar por toda a parte de planejamento e game design. Como o meu foco sempre foi muito mais no desenvolvimento do que na criação, essa é uma boa maneira de aprender.

[Ainda assim a área de criação me atrai, com o tempo eu gostaria de criar mais jogos originais (como é o caso do Gosmotrix, feito em parceria com amigos da faculdade, e do Paraquedismo).]

Nos últimos dias eu criei um remake do jogo Freeway, do Atari, utilizando o XNA. A idéia foi recriar o jogo original e fazer somente algumas modificações menores que eu achei necessárias (como o menu na parte de baixo da tela para configuração do jogo). Se bem me lembro, comecei o projeto no último sábado e na terça-feira ele já estava praticamente concluído. De lá pra cá fiz apenas correções de uns bugs e a documentação do código.


Bem, para o desenvolvimento eu usei como base o original (jogado no emulador Stella), e o manual e o FAQ do jogo, que me ajudaram bastante a entender alguns de seus detalhes (especialmente o FAQ, que detalha a velocidade dos veículos, seu espaçamento, direção...).

Foram feitas somente as quatro primeiras fases. Segundo o FAQ, as fases seguintes são repetições das primeiras, apenas com diferença na velocidade dos veículos, portanto eu não cheguei a desenvolver esta parte.

Neste projeto deu pra brincar com algumas coisas legais do XNA, como o uso de GamePads, a utilização de GameComponentCollection e seus eventos, e alguns detalhes legais sobre como tirar screenshots usando Threads e o método EndDraw, baseado no código de Nick Gravelyn. Por isso só já vale a pena ter perdido umas horinhas no seu desenvolvimento.

Pra quem tiver interesse, eu estou disponibilizando juntamente com o jogo seu código-fonte completo. As instruções de como jogar estão em um arquivo de texto dentro do zip. O download pode ser feito aqui e comentários são sempre bem-vindos.

Por fim, uma questão filosófica: Por que mesmo a galinha atravessou a rua?! Talvez pra ganhar uns pontos...

quinta-feira, dezembro 31, 2009

Glug Glug - Remake

Em agosto deste ano eu fiz um remake do jogo Glug Glug (um jogo originalmente lançado na década de 80 para o ZX Spectrum) utilizando o XNA Game Studio. Para quem não conhece, no jogo você controla um mergulhador que deve ir até o fundo do mar resgatar alguns baús com tesouros e trazê-los de volta ao navio. Isto, é claro, evitando ser atacado por piranhas, tubarões e outras criaturas marinhas.

Menu principal do jogo. Clique para ampliar.
O jogo é bastante simples, mas tem uns conceitos legais (como o tubo de oxigênio ser cortado caso seja atingido por um tubarão). Ao invés de repetir as fases originais, eu criei uma forma das fases serem geradas aleatoriamente, onde cada tipo de inimigo tem uma chance diferente de aparecer. Nas últimas fases a porcentagem dos tubarões, por exemplo, é bem maior que nas primeiras. Ao todo foram criadas sete fases, mas é bem fácil adicionar novos níveis.

Eu me preocupei em fazer um jogo simples e rápido. A implementação de todo o jogo levou cerca de duas semanas, em seções esporádicas de programação, já que eu estava a todo vapor com o mestrado e o projeto da Direção Defensiva na época. Por isso mesmo, fora da tela de jogo a interface é bem pobre, ao invés de botões pressionáveis com o mouse, o usuário apenas tem que apertar os números correspondentes às opções. Não há grandes configurações possíveis, apenas se o jogo deve rodar em modo janela ou tela cheia.

Tela de jogo. Clique para ampliar.
Os gráficos foram todos reaproveitados do jogo original, tirados deste link, mas eles foram redimensionados (no Paint mesmo) para permitir trabalhar com uma resolução mais alta. É claro que são gráficos bem pobres, mas eu acho que esses jogos antigos pixelados têm seu charme. Segue um vídeo do jogo, feito durante seu desenvolvimento.



Ficaram faltando alguns detalhes, especialmente uma música e outros efeitos sonoros (atualmente só o tiro faz algum barulho). Também seria interessante colocar algum tipo de ranking, mas eu não cheguei a mexer nessa parte.

O download, para quem se interessar, pode ser feito aqui. O arquivo inclui o executável do jogo e seu código-fonte completo. Qualquer observação que queiram fazer sobre o jogo, sintam-se à vontade.

Importante: para jogar, é preciso ter ao menos o XNA 3.1 Redistributable instalado. Quem não tiver, pode fazer o download aqui.

terça-feira, dezembro 29, 2009

Meme: Os melhores de 2009

Eu fui convidado pelo Bruno Croci para participar deste meme (iniciado pelo Tiago Frossard) sobre os melhores jogos que joguei esse ano. Como no meio do ano eu comprei um PC novo, com uma placa de vídeo decente, pude curtir alguns bons jogos nesse segundo semestre. Também joguei algumas coisas legais no PS2. Vamos à lista:

Mirror's Edge
A jogabilidade do Mirror's Edge realmente é muito inovadora e chega a dar um frio na barriga ao pular entre os prédios e andar em lugares muito altos - melhor nem olhar pra baixo. Os gráficos são muito bonitos e a direção de arte dá um show. Sem falar em "Still Alive", a música do final do jogo que ficou grudada na minha cabeça por mais de mês.

Fallout 3
Infelizmente fui apresentado à série Fallout muito tarde. Eu simplesmente não consigo jogar os jogos antigos, acho limitados demais. Mas o terceiro episódio é fantástico, a ambientação é perfeita (vide as músicas de época, os cartazes instrutivos...) e as possibilidades, os caminhos são os mais diversos. Você pode resolver as missões de várias maneiras (explodir Megaton ou não? Eis a questão!) e tem quests enormes que podem ou não ser feitas. Alto fator replay.

Fallout 3
Mass Effect
Esse eu terminei ontem à tarde, numa maratona desde a última quinta-feira quando ele chegou aqui em casa (o que pra mim é um tempo bem curto pra terminar um jogo, ainda mais um RPG, já que não costumo ter paciência para jogar muito tempo direto). Inicialmente lembra um pouco Star Wars, por causa dos Aliens, das viagens espaciais e tal, mas a falta do sabre de luz e da Força fazem muita diferença. O suficiente pro jogo ter uma cara própria. É um shooter misturado com RPG, mas diferente do Fallout, aqui os combates são bem mais intensos. Que venha o 2.

Call of Duty: Modern Warfare 2
Esse é chover no molhado, mas eu não podia deixar de citar. O primeiro jogo já era demais e as coisas só melhoraram nesse segundo capítulo. Ação cinematográfica do começo ao fim, uma verdadeira mega produção.

Ico
Um dos melhores jogos que joguei no PS2. Ico é legal por ser simples, nada de campanha épica, nada de salvar o mundo. Você é um garotinho com chifres tentando escapar do castelo enquanto protege a mocinha que você conhece no começo. Algumas surpresas e outras decepções no seu caminho dão ao jogo um gosto especial. Podia ter uma continuação... (se bem que The Last Guardian vai ser quase isso).

Bem, eu joguei muitas outras coisas esse ano, alguns jogos eu joguei bastante e outros só um pouquinho, mas esses são os que vieram à cabeça agora pra recomendar. Detalhe: resolvi listar somente jogos que eu terminei esse ano, ou seja, deixei de fora bons jogos que por um motivo ou outro eu não cheguei até o fim.

Como já está tarde e eu estou com preguiça de verificar pra ver que já foi convidado, deixo o convite aberto a quem quiser participar do meme. Postem seus melhores jogos ai!

quarta-feira, dezembro 23, 2009

Jogo - Direção Defensiva

Este ano, ao entrar no mestrado, eu comecei a trabalhar em meu primeiro jogo profissionalmente. Em uma parceria entre a T&T (uma empresa de treinamento em jogos no Rio de Janeiro) e a UFF, nós tivemos financiamento da FAPERJ para a construção de um jogo sobre educação no trânsito, chamado provisoriamente de Direção Defensiva.

O projeto é pequeno, contando com uma equipe de menos de dez pessoas, sendo apenas eu e mais um aluno do mestrado como programadores. Ainda assim, é um projeto importante, não só por seu objetivo (educar motoristas), mas também por ser um jogo financiado por um órgão de fomento, algo não tão comum, infelizmente.

Para o desenvolvimento nós utilizamos o Unity e ficou sob nossa responsabilidade a elaboração de componentes que definem as funcionalidades do jogo, como o controle do carro, verificação se ultrapassou o sinal vermelho e etc. Este paradigma de programação orientada a componentes foi novidade pra mim, mas acho muito interessante. Tudo o que desenvolvemos é reutilizável, tanto em uma eventual continuação do jogo quanto em outros jogos de carro. Este processo foi muito facilitado pelo próprio Unity, que oferece uma maneira bem simples de se trabalhar com componentes.

A idéia central é apresentar uma cidade ao jogador onde ele deve realizar entregas dentro de um determinado limite de tempo. Ao contrário de jogos que seguem esta linha, como Crazy Taxi, aqui o jogador deve seguir as leis de trânsito, andando sempre na mão correta, não ultrapassando sinais vermelhos, respeitando os limites de velocidade, entre outras. O objetivo é oferecer diversão, mas ao mesmo tempo mostrar estas regras que não podem ser desrespeitadas.

É interessante notar como o jogador pode ficar tentando em alguns casos. Às vezes acontece da bússula apontar que o ponto de entrega está logo à sua frente, mas a rua é contra-mão, então o jogador tem que dar a volta por todo quarteirão para entrar no sentido correto. É algo similar ao que ocorre na vida real, embora de vez em quando a gente veja um espertinho entrando na contra-mão em uma rua menos movimentada para cortar caminho.

A medida que o jogo progride, a dificuldade aumenta. O cansaço faz com que o motorista tenha que parar em bares ou padarias para repor as energias e nessas paradas ele pode ser tentado a beber, o que o fará dirigir sob influência do alcóol (com um efeito bem legal de direção bêbada).

Este projeto já apareceu bastante na mídia, incluíndo esta reportagem no Jornal do Brasil: Game da UFF ensina direção defensiva. E este vídeo no G1:


O jogo ainda não tem data de lançamento definida, mas deve sair em algum momento de 2010. A distribuição, através de parceiros, deve ser feita gratuitamente.

Obs.: as imagens do jogo mostradas no vídeo ainda não representam sua versão final. Algumas alterações ainda devem ser feitas.

quarta-feira, outubro 28, 2009

Apresentação no RioGDUG e Artigo do SBGames

Durante o SBGames deste ano, eu fui convidado pelo Hamilton para repetir minha apresentação na reunião mensal do RioGDUG, onde eu teria mais do que os quinze minutinhos que nos são dados nas seções técnicas do SBGames.


Então, na semana passada eu realizei a palestra "Ginga Game : A Framework for Game Development for the Interactive Digital Television" e o Hamilton fez o favor de gravar a apresentação para a posteridade, como vocês podem conferir no vídeo abaixo (desculpem as piadinhas sem graça):



Como os anais do congresso ainda não estão disponíveis online, eu coloquei o meu artigo no 4Shared para quem quiser dar uma olhada. O download do pdf está disponível em: http://tinyurl.com/yhoks46.

Os slides do vídeo também estão disponíveis nos seguintes endereços:
4Shared: http://tinyurl.com/ylfev8e
SlideShare: http://tinyurl.com/ykpwl32

Qualquer dúvida, é só falar nos comentários.

quarta-feira, outubro 14, 2009

Apresentação no SBGames 2009

No último sábado eu apresentei o full paper "Ginga Game: A Framework for Game Development for the Interactive Digital Television" na trilha de computação do SBGames. Para quem se interessar, segue os links para o arquivo que usei na apresentação.

Os dois arquivos são o mesmo, mas no SildeShare é possível visualizá-lo online, no entanto é preciso fazer login para baixar. No 4Shared é possível baixar sem fazer login.

4Shared: http://tinyurl.com/ylfev8e
SlideShare: http://tinyurl.com/ykpwl32

Assim que os artigos estiverem disponíveis online eu coloco o link aqui também.

segunda-feira, setembro 21, 2009

Assassin's Creed, I can't quit you

Eu cheguei a comentar no Twitter que eu havia comprado o Assassin's Creed pra PC em uma promoção do Walmart umas duas semanas atrás.

Apesar de ter jogado muito pouco, o jogo me parece bastante interessante. Os gráficos são bons, a arte é ótima, os movimentos do Altair são muito bem feitos e tal.

Mas nem tudo são flores. Uma coisa bizarra é a quantidade de passos que leva pra sair do jogo. Isso me faz pensar o que os designers beberam antes de fazer um troço desses. Confira:



Por um lado, essa maluquice acabou me ajudando. Eu usei o vídeo em uma aula sobre interfaces ruins no mestrado e a professora adorou!

sexta-feira, agosto 14, 2009

Meme: Game Design ao extremo

Fui chamado pra esse meme já faz quase dez dias e ainda não tinha visto [vergonha]. Vamos às regras:

  • Liste quantos jogos em Flash quiser. Preferencialmente aqueles que, por algum motivo de design chamaram sua atenção.
  • Diga o que desses jogos te chamou a atenção, seja em quantas linhas quiser.
  • Repasse para outros blogs.

Eu não jogo muito jogos em flash, mas tem alguns que eu acho muito interessantes:

  • Cursor * 10: um jogo cooperativo com você mesmo. Nunca vi algo parecido em outro jogo. Merece a citação pela enorme criatividade na mecânica de jogo.
  • Double Wires: os gráficos são bem bobos, mas isso serve pra mostrar que uma boa mecânica vale muito mais que gráficos ultra-perfeitos. Nesse jogo você controla um ragdoll num jogo que lembra o Homem-aranha.
  • Excit: um puzzle que brinca com a idéia de jogar dentro do Excel pra enganar o chefe durante o trabalho. Bem divertido.
  • Fly Guy: esse não é bem um jogo, mas é muito legal. A trilha sonora é bem bacana e o tal 'cara voador' interage de uma forma diferente com cada personagem ou objeto encontrado no seu caminho.

Convido pra continuar o meme o Luan e o Ney.

terça-feira, agosto 04, 2009

Iluminação

Bem, o jogo que eu comentei no post anterior continua sem nome. Mas isso não importa por enquanto. Tenho novidades.

Eu integrei a demonstração anterior ao protótipo do jogo e a iluminação já funciona sobre o personagem e o cenário. É claro que estes componentes são só pra testes, mas dá pra ver que a luz funciona.

Pra fazer esse efeito, eu desenho toda a cena em um RenderTarget do XNA (uma espécie de backbuffer) sem o shader e depois aplico o shader diretamente na textura que será jogada na tela. Dessa forma o pixel shader só é processado sobre uma textura, eliminando o processamento desnecessário que ocorreria se uma imagem fica na frente da outra, por exemplo.

A idéia é que a luz siga o personagem, como se estivesse presa a um capacete. Nos vídeos aparece uma lâmpada só pra ter uma idéia de onde está a fonte de luz.

Abaixo a mesma cena com e sem o shader de iluminação.



sexta-feira, julho 31, 2009

Meu novo projeto

Nesses últimos dias eu estive bastante ocupando terminando o último trabalho do mestrado pra esse semestre. Tratava-se sobre um estudo sobre bump mapping em GPU.

Pra implementar o trabalho eu tive que aprender programação de shaders, algo que até então eu nunca tinha feito. Posso dizer que valeu a pena escolher esse tema, porque deu pra aprender uma tecnologia nova que eu pretendo usar no meu próximo jogo.

O trabalho em si eu vou publicar aqui assim que o professor liberar a correção e a nota final. Daí publico aqui o artigo e a demonstração que eu fiz com meu grupo.

Enquanto isso, quero falar do meu novo projeto. É um jogo que eu estou criando e pretendo mandar pro Festival de Jogos Independentes do SBGames, se der tempo. Ainda falta muita coisa a se definir, mas ele fará um bom uso da iluminação.

Abaixo um vídeo de um shader que eu implementei (em HLSL + XNA) pra iluminar um cenário em duas dimensões. A idéia é atenuar a iluminação à medida que o objeto se afasta da fonte de luz. No vídeo o raio de iluminação aumenta e diminui conforme o alcance da luz é modificado via teclado.



Vou tentar fazer um diário de desenvolvimento desse jogo. Vamos ver se dá certo. Mais detalhes em breve.