quarta-feira, 4 de março de 2009

OpenSonic

Um projeto bem interessante que eu encontrei foi o OpenSonic, uma implementação livre do Sonic. Talvez a Sega processe o autor por utilizar design que eles desenvolveram, mas o jogo está muito bem feito e funciona no MACOS!:-)

Acesse http://opensnc.sourceforge.net/home/index.php e baixe o fonte. Antes de compilar, voce precisa instalar o dumb e o allegro.

O allegro eu instalei com o mac ports:
sudo port install allegro

O dumb eu baixei do site e compilei. http://dumb.sourceforge.net/

Depois dessas duas bibliotecas instaladas e configuradas no diretório /opt/local (onde o ports coloca suas coisas), fiz algumas modificações para compilar o opensonic no macos:

Editei o src/player.h e comentei a linha 23 (ninguém precisa do #include math.h ). Sem comentar essa linha, eu obtive um erro muito louco:
[ 7%] Building C object CMakeFiles/opensonic.dir/src/boss.o
In file included from /usr/include/math.h:28,

from /Users/barroca/Desktop/opensnc/opensonic/trunk /src/player.h:23,
from /Users/barroca/Desktop/opensnc/opensonic/trunk/src/boss.h:24,
from /Users/barroca/Desktop/opensnc/opensonic/trunk/src/boss.c:20:
/usr/include/architecture/i386/math.h:385: error: syntax error before 'int'

make[2]: *** [CMakeFiles/opensonic.dir/src/boss.o] Error 1

make[1]: *** [CMakeFiles/opensonic.dir/all] Error 2

make: *** [all] Error 2


Como fiquei com preguiça de depurar, comentando a linha 23 do arquivo ele não inclui o math.h, da uns Warnings de compilação, mas funciona.

Depois executei /opt/local/bin/allegro-config --env e incluí essa caralhada toda nas variáveis de ambiente:
export PATH=$PATH:/opt/local/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/local/lib

export LIBRARY_PATH=$LIBRARY_PATH:/opt/local/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/local/include

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/local/include

export OBJC_INCLUDE_PATH=$OBJC_INCLUDE_PATH:/opt/local/include


Por último editei o arquivo CMakeLists.txt e troquei:

SET(ALLEGRO_UNIX_LIBS "-L/usr/lib -Wl,--export-dynamic -lalleg-4.2.2 -lalleg_unsharable")


por:

SET(ALLEGRO_UNIX_LIBS "-L/opt/local/lib -lalleg-4.2.2 -lalleg-main -framework Cocoa")

Para voce saber o que colocar no lugar dessa variável, use o comando:

/opt/local/bin/allegro-config --libs

e coloque a saída dele nessa variável, no meu caso:

-L/opt/local/lib -lalleg-4.2.2 -lalleg-main -framework Cocoa


Pronto, agora:

cmake .

e depois
make

Apesar dos Warnings de compilação, o opensonic funciona:

Nenhum comentário: