segunda-feira, 14 de dezembro de 2009

carregando...

Semana passada eu descobri que a SDL foi portada para o Nintendo DS, então eu pensei que seria legal portar o Rockbot para ele - eu adoraria recriar o Rockman 0 e 10 para jogar no meu DS já que a Capcom decidiu não portá-lo. Na verdade, a primeira razão para eu decidir criar todo o projeto Rockbot foi por estar brabo com a Capcom que decidiu não portar um jogo que parece de NES para plataformas antigas como o Playstation, e eu não tenho dinheiro ou desejo de comprar um console de nova geração.
Mas bem, uma vez assentada a idéia, eu tinha que construir todo o SDK do DS e as bibliotecas SDL, o que se mostrou um desafio, porque a SDL foi baseada em uma evrsão antiga do kit de desenvolvimento e tive que corrigir alguns bugs antes de ter um ambiente funcional para compilar alguns testes. Uma vez terminado, eu teria que diminuir o uso de memória de 46MB para menos de 4MB, que é o limite do Nintedno DS.

Aí vem a parte divertida, a maioria dos programadores de hoje são simplesmente preguiçosos de otimizar o código e usam o quanto de memória conseguirem, e frequentemente as pessoas acham que os jogos mais legais são os que as obrigam a comprar um computador inteiro novo, então podem ter um PC super modificado com luzes de laser interno e resfriamento a água e outras tolices frescas. Felizmente, os videogames não estão infestados por essa moda de atualizações frequentes. Então, a primeira coisa a fazer é usar variáveis menores, já que estou lidando com valores abaixo de 64 mil, todos os inteiros foram convertidos para short. O próximo passo foi limitar o uso de cores a 256, usando paleta web-safe, o que no fim das contas é legal, por parecer mais com os jogos antigos de NES. Finalmente, não dá para carregar toda uma fase na memória de uma vez, pois é isso o que mais usa memória, já que o núcleo em sí é bem pequeno. Então, eu reduzi o tamanho do mapa, e agora o jogo usa cerca de 5.1MB de RAM!

Mas nós precisamos de mais, por isso eu planjeo usar os mesmos truques que jogos de NES antigos usavam: quebranco a fase em partes. Lembram-se como era lenta a transição de tela quando você estava em uma escadaria, ou alguns jogos tinham uma sala de chefe no meio? A razão é que, neste momento, vocês está liberando um mapa e carregando outro. Assim, acredito que será possível reduzir o uso de memória para 3MB.

O passo seguinte é aprender a editor os makefiles dos exemplos de SDL para DS para recompilar o Rockbot para o Nintendo DS e testar. Mas como o fim de ano está próximo, por enquanto planejo trabalhar em gráficos.

Outras notícias:
- você pode sair da introdução pressionanto start
- começado trabalho em um teileset para montar um cenário
- feito um build teste para PS2, funciona bem, mas ainda tem problemas com delay/waiters.
- O PS2 precisa de ajustes para carregar os drivers necessários de acordo com a unidade de onde o programa está rodando, e também setar o FILEPATH com ela
- precisa ser refeito o sistema de tempo para frame de animação- por alguma razão eu perdi parte do código
- devemos implementar escadarias e "teleporte" de um mapa para outro
- implementar som usando SDL_mixer e doomsdl_mixer (PS2)

Nenhum comentário: