quinta-feira, 26 de agosto de 2010

The Legend of Zelda: Oni Link Begins - Dingux



E aqui está o segundo jogo da trilogia feita por fãs da série Zelda. Todas as correções aplicadas no Zelda ROTH foram duplicadas aqui, por isso creio que não teremos muitos problemas, pelo menos com relação a vazamento de memória. A principal diferença em relação ao jogo anterior é que por este ser ligeiramente maior, o uso da memória swap  é obrigatório e, infelizmente, não vejo maneira de reverter essa situação.

O controle também está um pouco diferente, devido a adição de novas funcionalidades:

  • Mover Link - direcional
  • Correr - segurar A (se você possuir a bota)
  • Usar a espada - B (se você possuir a espada)
  • Grande Técnica - B para carregar, solte quando estiver totalmente carregada (depois de um som) para usar o ataque giratório
  • Olhar em volta - R + direcional (fora de dungeons)
  • Usar objeto selecionado - Y 
  • Usar luvas - A
  • Ver o mapa - X
  • Ver monstros derrotados - L (depois de achá-lo)
  • Teletransporte - R (dentro de dungeons na forma de  Oni Link)
  • Abrir baú/Ler/Conversar - B
  • Acessar/Sair da tela de seleção de itens - Start
  • Desistir/Salvar - Select

Link para download

quinta-feira, 19 de agosto de 2010

The Legend of Zelda - Return of the Hylian - Dingux V1.2


Mais uma vez com a ajuda do pessoal do fórum GP32X, especialmente o usuário hmn, foi possível remover os vazamentos de memória citados na liberação da versão anterior. Na verdade, eu até havia encontrado o problema, porém não conseguia pensar em uma solução.

Tudo era causado por um erro conceitual na herança das classes. Diversas classes, como as responsáveis por inimigos, personagens e objetos, eram derivadas de uma classe em comum, chamada Listable, que é uma lista ordenada

O problema acontecia quando um objeto da classe derivada era destruído, pois somente era chamado o destrutor da classe derivada do primeiro item da lista, posteriormente apenas o destrutor da classe base, no caso Listable, era invocado. Dessa maneira, muito espaço alocado em memória, como por exemplo a imagem dos personagens, ficava sem referência quando os objetos eram destruídos, caracterizando o vazamento de memória.

A solução foi simples, declarar o destrutor da classe base como virtual acaba forçando a execução de ambos os destrutores, tanto da classe base como da derivada. Fácil, não :P

O que realmente importa é que agora não é mais necessário ativar memória swap para evitar travamentos, mesmo com um longo tempo de jogo. Pelo menos teoricamente. Espero que essa seja a versão definitiva do Dingoo. Tentarei dar continuidade à trilogia em meados de setembro.



V1.2 (19/08/2010)

Melhorias/Correções
  • Corrigidos os vazamentos de memória menores, citados na versão anterior (agradecimento especial a hmn do fórum GP32X).


Links para download 

segunda-feira, 9 de agosto de 2010

The Legend of Zelda - Return of the Hylian - Dingux V1.1


Depois de muito trabalho e troca de ideias com os caras que estão portando a trilogia para Pandora e Wiz, conseguimos identificar a causa do infame congelamento aleatório. Tratava-se de um cast problemático na rotina de manutenção dos quadros por segundo, que forçava um delay de aproximadamente 50 dias para atualização do quadro seguinte! (Obrigado hmn) Por esse motivo a música continuava tocando.

Depois disso, foi identificado um grande vazamento de memória, que fazia com que o sistema inteiro travasse depois de carregar um jogo salvo algumas vezes. Como se tratava de vazamento de memória, isso demorava mais pra acontecer com quem usava a swap. Felizmente esse problema também foi resolvido.

Ainda existem vazamentos menores, que podem causar o travamento do sistema depois de um longo tempo de jogo. Mas se você usa memória swap, provavelmente isso nunca irá acontecer.

Vamos às alterações:

V1.1 (08/08/2010)

Melhorias/Correções

  • Finalmente consertado o bug do congelamento aleatório (agradecimento especial a hmn e sebt3 do fórum GP32X);
  • consertado grande vazamento de memória que travava o sistema após carregar um save;
  • os botões foram remapeados para parecer mais com a configuração do SNES (com mudanças mínimas no código).

Problemas conhecidos / lista do que fazer

  • Encontrar e consertar vazamentos de memória menores, que podem travar o sistema depois de um longo tempo de jogo.

Agora os botões estão mapeados da seguinte forma:
Start - Confirma;
Select - Abre menu para salvar jogo;
A - Corre / Levanta objetos;
B - Ataca / Conversa / Ler placas / Abrir baús (aperte e segure o botão);
Y - Usa item selecionado;
X - Mapa;
R + direcional - Olha redondezas;
L - Enciclopédia de monstros (não presente na versão anterior).



Links para download 
zeldaROTH_dingux_v1.1.bin.zip
zeldaROTH_dingux_v1.1.src.zip 


segunda-feira, 2 de agosto de 2010

The Legend of Zelda - Return of the Hylian - Dingux

Tela título do Zelda ROTH
Eu sei que havia dito que não iria mexer em programação pro dingoo por pelo menos um mês, mas isso aqui caiu no meu colo e não pude me negar :P

Acabei de compilar para Dingux "The Legend of Zelda - Return of the Hylian", que é um jogo criado por fãs da série Zelda, desenvolvido em C++ e SDL.

Na verdade, trata-se de uma trilogia seguida por "The Legend of Zelda - Oni Link Begins" e "The Legend of Zelda - Time to Triumph". Ainda não pude ver o código desses outros, mas se seguir o mesmo padrão será traquilo fazer rodar no Dingoo.


Os botões estão mapeados da seguinte maneira:

Start - Confirma;
Select - Abre menu para salvar jogo;
A - Abre baús / lê placas;
B - Corre;
Y - Ataca;
X - Usa item selecionado;
R - Mapa;
L + direcional - Olha redondezas.

Atenção: o jogo está apresentando um bug muito chato, congelamentos aleatórios. Ele trava mas a música continua tocando e é necessário desligar o aparelho para sair. Infelizmente, até agora não tenho ideia do que possa estar causando o problema. [Corrigido na versão 1.1]

Links para download
zeldaROTH_dingux_v1.bin.zip
zeldaROTH_dingux_v1.src.zip


Observação: como o jogo usa arquivos mid para música, pode ser que em alguns momentos você perceba uma "engasgada" na trilha, mas isso é devido ao alto processamento necessário pra rodar esse formato com a SDL_mixer. Isso pode ser resolvido aumentado o clock do seu aparelho.

quinta-feira, 29 de julho de 2010

SDL SLiDing - Beta Release

Estou liberando uma versão para testes do SDL SLiDing, como dito anteriormente não se trata de nenhum jogo revolucionário, porém com regras muito simples.

Da atualização anterior pra cá foram implementados os modos Easy e Impossible, além de uma tela bem tosca de créditos, como vocês podem ver abaixo:

Tela de Créditos
Próximas alterações planejadas:
  • melhorar tela de créditos;
  • implementar caixa de mensagem (vitória);
  • adicionar modo challenge;
  • melhorar interface do jogo em si.

Aceito sugestões, porém só poderei dar prosseguimento às atividades de desenvolvimento para o Dingoo em meados de setembro, daqui até lá estarei mais ocupado do que de costume...

Seguem links para download:
SDL_SLiDing_v0.1b_bin.zip
SDL_SLiDing_v0.1b_src.zip

Notas para os desenvolvedores
O código-fonte contém projetos para CodeLite, para utilizá-lo é necessário configurar o IDE para o compilador do Dingux. Caso não tenha configurado, siga este tutorial. Como o SDL SLiDing depende da biblioteca CBixo, existe um projeto nomeado CBixo e outro nomeado Teste, que na verdade é o SDL SLiDing em si.

sexta-feira, 23 de julho de 2010

SDL SLiDing - Atualização 1

Opa, já temos uma tela de menu principal:

Menu principal do SDL SLiDing

Já a tela do jogo não mudou muito visualmente, apenas foram inseridas algumas informações diferentes, mas falta dar uma ajeitada em tudo:
Tela do jogo em si


O que mais foi feito:
  • definidas músicas do menu principal e do jogo;
  • efeitos sonoros do menu adicionados;
  • modo normal de jogo implementado.

Próximos passos:
  • adicionar tela de créditos;
  • implementar dificuldades easy e impossible;
  • melhorar interface do painel esquerdo durante o jogo;
  • implementar caixa de mensagens (vitória).

quarta-feira, 21 de julho de 2010

SDL SLiDing para Dingux

"Portar" as coisas pro Dingoo é legal e tal, até acho que em algumas vezes você acaba recebendo um reconhecimento maior do que deveria, tudo isso pelo impacto do programa em si. Pensando nisso, creio que eu não me sentiria satisfeito sem criar algo do zero pro Dingoo, mesmo que o resultado final não fosse uma obra notável

Pois bem, com isso em mente, aqui está a resposta :P

SDL SLiDing
SDL SLiDing é uma implementação em C++/SDL do quebra-cabeça também conhecido internacionalmente como sliding puzzle, sliding tile puzzle ou sliding block puzzle. O objetivo do jogo é simples, colocar todos números em ordem crescente, a partir do canto superior esquerdo, deslizando as peças para o espaço vazio.

Se você tem mais de vinte anos, com certeza já o jogou alguma vez na vida. Eu jogava muito esse jogo quando era criança e até hoje não sei qual seu nome no Brasil, eu só chamava de quebra-cabeça...

Estou utilizando a biblioteca CBixo para acelerar um pouco as coisas. Sei que não é nada do outro mundo, trata-se de um jogo muito simples, mas de início a ideia é essa, tentarei adicionar outras funcionalidades com o passar do tempo. Primeiramente irei liberar a versão pra Dingux e depois pretendo disponibilizar a versão para Linux e Windows, se houver demanda :P

Maiores informações e uma possível release em breve...