quarta-feira, 2 de fevereiro de 2011

EasyRPG - Suporte a Caracteres em UTF-8

Há mais ou menos uma semana me deparei com um problema chato no port do EasyRPG para o Dingux: a não disponibilidade das classes std::wstring e std::wstringstream, que tornaria a tarefa de exibir caracteres especiais de algumas línguas, como o japonês e até mesmo português muito mais fácil. Além disso, todo o código do projeto já estava usando as classes citadas, por serem praticamente padrão absoluto, mas por algum motivo, que ainda desconheço, a versão que possuo da toolchain não as inclui.

Eu recebi a sugestão, do membro Zhek, de recompilar a biblioteca libstdc++ para assim ativar o que fosse necessário, porém não consegui de jeito nenhum! Acabei pedindo "arrego" e simplesmente desabilitei o suporte a esses caracteres especiais. O código ficou feio, mas pelo menos os jogos em inglês funcionariam sem problemas.

Porém, ontem, o membro Ghabry deu uma força tremenda e arrumou um jeito de exibir tais caracteres sem a dependência das classes STL. Depois de fazer alguns pequenos ajustes, aqui estão algumas amostras do resultado:

Jogo em japonês
Jogo em russo
Jogo em português
Ufa, finalmente :P

Há boatos de uma versão alfa em breve, acredito que o que esteja faltando para isso seja a cena de batalha, pois o restante está caminhando muito bem. Vejam, por exemplo, como está ficando a cena de compra de items, onde tive uma pequena participação na implementação do código:

Tela de compra de itens com indicação de mudanças do equipamento

Enquanto isso, que tal dar um apoio moral à equipe de desenvolvimento? Ou mesmo dizer o quão importante é a versão do Dingoo? Basta visitar o site oficial e deixar uma mensagem :)

2 comentários:

  1. Opa, isso é muito bom. Será que daria apra colocar o suporte a wstrings no SDK do Dingux?

    Tá ficando bem bacana esse Easy RPG, estou louco para jogar :)

    ResponderExcluir
  2. Fala Iuri!

    Cara, se eu tivesse conseguido recompilar a libstdc++ daí sim eu poderia disponibilizar a biblioteca com seus includes para qualquer pessoa poder usar. Mas do jeito que está fica complicado. Se você puder olhar o código, tem partes definidas:
    #define wstring basic_string

    já em outras, é redefinido
    #undef wstring
    #define wstring string

    É um vai e volta desgraçado, mas foi a única forma que encontramos até agora.

    Até agora, não sei o real motivo da não implementação de wstring e wstringstream no SDK do dingux, talvez para economizar memória...

    Um grande abraço!

    ResponderExcluir