sexta-feira, 30 de outubro de 2009

Desenvolvendo para Playstation 2 - ROUND 2, FIGHT!

Cerca de um ano e meio atrás eu brinquei um pouco de converter um pequeno game que estou desenvolvendo, parecido com Rockman (Megaman) para o Playstation 2 usando o SDK PS2DEV disponível em  http://www.ps2dev.org. Este SDK, além de um toolkit próprio, chamado gsKit, tem suporta a uma biblioteca gráfica, muito utilizada para jogos em Linux mas também utilizada em Windows e Mac, chamada SDL, e para o qual eu já havia desenvolvido pequenos games. Após ligar com diversos problemas de compilação, consegui instalar todo o ambiente em meu Duron 1.6/512MB RAM rodando Ubuntu Linux e comecei a desenvolver.

O problema é que, do modo como eu estava desenvolvendo, eu tinha que copiar o executável (.elf) para um memory card ou pendrive USB, e toda vez ir5 do computador em um quarto, até o PS2 na sala. Isso até não era o maior problema, o problema é que desta forma, você não tem a mínima idéia se o seu programa deu um erro, você simplesmente fica olhando para uma tela escura, ou a tela do seu jogo travado. Utilizando códigos de cores para debugar (desenhando retângulos coloridos como forma de indicar por onde o programa passou), consegui algum sucesso, mas a dificuldade acabou me fazendo desistir.

Chegamos ao presente. Agora com um computador bem mais rápido (Core 2 Duo 2.2/2GB RAM), lá fui eu tentar um segundo método: rodar o programa via emulador de Playstation 2, chamado PCSX2. No linux este emulador mostra as mensagens de output (printf para quem sabe C) do processador IOP (entrada e saída do PS2), e então eu poderia finalmente debugar e corrigir os problemas do jogo, certo? Errado! O emulador simplesmente quebra com o OpenGL da minha máquina...

Bom, nesse ano e meio que se passou, eu adquiri um eeePC 701 e um roteador wifi. Com isso, um segundo método se abriu para mim: programar para o PS2 via rede. Na verdade sem o roteador eu poderia ter feito o trabalho usando um cabo USB ou um cabo cross ethernet, mas nunca me dispus, já com o cabo de rede e o roteador, eu posso também colocar o PS2 em rede, o que é um grande incentivo.

O sistema funciona basicamente assim, você grava um CD com um programa chamado ps2link e um arquivo de configuração que determina o endereço IP quie o PS2 irá requisitar ao seu roteador, e depois um cliente no Windows ou Linux, para acessar o PS2 e enviar para ele o seu programa via rede, ou seja, nada mais de atravessar a sala com o pendrive. Também permite dar um soft-reset - que já descobri não funciona direito com a SDL por alguma razão que ainda não tive tempo de achar.

Mas enfim, comprei um CD para gravar o programa e um cabo de rede de 6 metros, que se mostrou um metro mais curto do que seria recomendável... ninguém manda eu não usar o metro apra medir a distância antes. Gravei o programa, liguei o PS2 com ele e foi pura emoção no momento que consegui dar um ping ao endereço 192.168.1.10 e obeter respota! :D
A seguir comecei a fuçar no código, recolocando todos os printfs que eu havia retirado já que não apareciam mesmo, e rodar. Em uma hora eu consegui consertar o meu embrião de jogo, adicionei suporte ao joystick direito (esse era um dos bugs, o outro era ter muitos acessos aos arquivos, no PS2 ele tem poucos file pointers simultâneos) e unifiquei o sistema de sprites em uma variável única, otimizando a execução um bocado.
O resultado está nesta screenshot abaixo:



Os gráficos estão com alguns bugs porque eu não tive tempo de arrumar o mapa após criar o novo sistema de tiles/sprites, mas dá para ter uma idéia vendo o protoman lá na parte superior esquerda da tela.
Resumindo, se você tem paciência para fazer as configurações iniciais do SDK, programar para o Playstation 2 usando a SDL é uma grande barbada, e altamente recomendável pela diversão Nerd que irá gerar ;)

terça-feira, 13 de outubro de 2009

[GBA] Megaman & Bass

Na época do declínio do Super Nintendo [SNES], uma das produtoras de jgoos que mais resistiu a abandoná-lo foi a Capcom, que fez vários jogos inclusive após lançar similares para Playstation [PSX]. Megaman & Bass (Rockman & Forte no Japão) é um destes jogos, lançado nos EUA somente em sua versão para Gameboy Advance, uma pérola produzida após o Megaman 8 de PSX.
O jogo é muito parecido com o 8, inclusive usando vários gráficos iguais, mas conseguiu melhorar algumas falhas do primeiro, como jogabilidade e dificuldade de algumas fases - quem é que já não amaldiçoou a fase do skate? Uma das principais mudanças é a inclusão de um segundo personagem, Bass com habilidades diferentes de Megaman, e que seria o equivalente a dificuldade easy, já que possui duplo pulo, apesar de seu tiro ser bem mais fraco.


[ reutilizaram até os chefes de Megaman 8]


[ quase igual ao 8, mas com o Forte jogável]

De diferente também, o jogo vai abrindo caminhos após derrotar um chefe, ou seja,após derrotar um chefe, um caminho se abre atrás para que você possa acessar outras fases. O que ajuda bastante a descobrir a ordem de uso das armas. De igual, o velho esquema de loja de upgrade, iniciado em Megaman 7, Rush e o cão Forte basicamente ausentes, sem toda a importância que já tiveram como em Megaman 3 e 4 e a boa resposta dos controles, que alavancou a Capcom ao sucesso na época do NES e Super NES.


[ caminhos vão se abrindo]

Este sem dúvida é um jogo que vale a pena ser terminado, mesmo que em um emulador no PC, pois é superior a Megaman 8 apesar de ter gráficos ligeiramente inferiores, ausência de vozes, é bem mais divertido e menos burocrático que o 8. Além disso tem uma database de personagens de TODOS os jogos, mostrando que este é o derradeiro encerramento da série clássica, e o fato de poder jogar com dois personagens, faz com que você queira revisitar as fases diversas vezes. Bem que a Capcom poderia ter colocado o Protoman como personagem secreto também...


[ jogar com protoman é o sonho de muitos]

Gráficos: 8 [conseguir gráficos de PSX no SNES foi uma proeza]
Som: 6 [na média, não ajuda nem atrapalha]
Diversão: 8 [jogar com o Bass e depois com o Megaman vale a pena]
Dificuldade: 5/7 [com o Bass é mais fácil]

sábado, 3 de outubro de 2009

Reboot!

Estou integrando o blog com meu site principal (http://www.upperland.net), e por isso vou voltar a utilizar ele para postar informações, novidades e reviews de jogos. Aguarde muitas coisas sobre Playstation 2 e Nintendo DS!