Bug das setas direcionais do jogo Egoboo [Resolvido]

Publicado por Lucas em 07/11/2012

[ Hits: 3.269 ]

 


Bug das setas direcionais do jogo Egoboo [Resolvido]



O Egoboo é um jogo Open Source estilo "roguelike".

A maioria dos jogos roguelike open source que temos por aí, não têm interface gráfica, são para terminal. Ou ainda, mesmo sendo para terminal, tem alguma front-end gráfica baseada em tiles.

Dos jogos deste estilo, um dos que tem o melhor gráfico (2D) que eu já conheci, foi o Vulture, que na verdade é apenas um front-end gráfico para os jogos NetHack, Slash'EM e UnNetHack.

Mas voltando ao Egoboo, ele tem um diferencial: é 3D!

Quando fui jogar o Egoboo pela primeira vez, percebi logo de cara um comportamento bem estranho: as setas direcionais do teclado não funcionavam direito. Ao apertar para cima, o personagem ia para baixo, ao apertar para baixo, o personagem também ia pra baixo. Ao apertar para esquerda, o personagem ia pra direita, e ao pressionar para a direita, o personagem também ia para a direita.

Pesquisando um pouco no Google, descobri que é um bug de código mesmo.

Compartilho com vocês a solução que eu utilizei para poder jogar o Egoboo sem o bug mencionado.

Esta solução foi testada no Ubuntu 12.10 e usa o gerenciador de pacotes APT e o DPKG.

1. Crie um diretório qualquer, para trabalhar nele:

mkdir codigofonte

2. Entre no diretório criado e baixe o código fonte do seu repositório:

cd codigofonte
$ apt-get source egoboo


3. Após terminar de baixar os fontes, entre no diretório criado pelo apt-get:

cd egoboo-2.8.1

4. Altere o arquivo ./src/game/game.c usando o Gedit ou qualquer editor de texto puro. Nas linhas 2055 e 2056, você verá o seguinte texto:
joy_pos.x = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_RIGHT ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_LEFT ) );
joy_pos.y = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_DOWN ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_UP ) );

Você deve trocar estas duas linhas pelas quatro linhas seguintes:

/*joy_pos.x = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_RIGHT ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_LEFT ) );
joy_pos.y = ( control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_DOWN ) - control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_UP ) );*/

joy_pos.x = ( (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_RIGHT ) - (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_LEFT ) );
joy_pos.y = ( (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_DOWN ) - (int)control_is_pressed( INPUT_DEVICE_KEYBOARD, CONTROL_UP ) );

Obs.: Tudo o que eu fiz foi comentar as linhas originais e copiá-las fazendo uma pequena alteração.

5. De dentro do diretório "egoboo-2.8.1" (você já está nele), rode o seguinte comando:

dpkg-buildpackage -rfakeroot -uc -b

Isso vai compilar os fontes e gerar os pacotes Deb.

6. Volte para o diretório pai e instale o pacote criado. Você pode dar dois cliques nele para instalá-lo. Se isso não funcionar, pode instalar na mão:

cd ../
$ sudo dpkg -i egoboo_2.8.1-1ubuntu1_amd64.deb


Obs.: Eu estava usando uma máquina 64 bits, por isso o nome com amd64 no final. Se sua máquina for 32 bits, o nome do arquivo certamente será outro.

Percebam que esta solução é para o Ubuntu. Caso você utilize qualquer outra distribuição GNU/Linux, pode baixar o código fonte direto da página dos desenvolvedores, fazer as mesmas alterações no mesmo arquivo, e instalar o jogo com os comandinhos já manjados por quem costuma compilar as coisas na mão:

# ./configure
# make
# make install


Possivelmente vai dar um monte de erro no ./configure, dizendo que falta biblioteca de desenvolvimento de alguma coisa, mas o README que vem junto com o código fonte, deve ter as informações necessárias sobre as dependências.

Espero que tenha sido útil, e bom jogo para vocês. =)

Outras dicas deste autor

Instalando o gnome-app-install no Ubuntu 10.04 Lucid Lynx

Usando o i4l para criar instaladores de aplicativos para Linux

Instalação de programas em máquinas offline

Leitura recomendada

Concurso International Challenge for Eclipse

Elisa: Media Center para Linux

Instalando VirtualBox no Debian 9

Amule, DreaMule, Emule: todos juntos pelo mesmo arquivo!

Blocklist Atualizada no squid

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts