terça-feira, 9 de junho de 2009

Compilando CrystalSpace3D (CS) e Crystal Entity Layer (CEL) no Slackware 12.2

Estou brincando com a CS e a CEL por aqui. Se você pretende utilizar esta biblioteca para desenvolver jogos ou qualquer outra aplicação com recursos 3D eu diria para levar em consideração esta mensagem http://sourceforge.net/mailarchive/forum.php?thread_name=742a36470902230603y27874edaid465aec69e0f78fc%40mail.gmail.com&forum_name=crystal-main. No entanto, você é dono do seu sistema, então trabalhe com qualquer versão da biblioteca que você quiser.

Compilar tais bibliotecas é muito fácil, pois a docuemtação é simples, porém espera-se que você já tenha compilado algo, mas não deve fugir de um ./configure, make e make install e em alguns casos jam e jam install. Esta última é a ferramenta utilizada pela CS e CEL para compilar a árvore dos fontes.

A maioria das dependências utilizadas podem ser encontradas em www.slacky.eu e www.slackbuilds.org. Outra ferramenta interessante é a pkgcreate (http://www.din.uem.br/~msambinelli/download/), que facilita bastante o processo de criar pacotes a partir dos fontes.

As informações para compilar e instalar a CS está disponível em: http://www.crystalspace3d.org/docs/online/1.4/manual/Building.html#0

Algumas dependências já vêm instaladas com o Slack, são elas: zlib, libpng, libjpeg, freetype, bibliotecas de desenvolvimento do X e da OpenGL, libogg, libvorbis, libmng. Outras já possuem seus pacotes prontinhos para serem instaladas, são elas:

Jam: http://www.slacky.eu/aadm/pkgs/index.php?ver=6&pkg=658
wxWidgets 2.8.10: http://www.slacky.eu/aadm/pkgs/index.php?ver=6&pkg=1165
libmspack: http://www.slacky.eu/aadm/pkgs/index.php?ver=6&pkg=792 (dependência da wxWidgets acima)
CEGUI 0.6.2: http://www.slacky.eu/aadm/pkgs/index.php?ver=6&pkg=635

Outros possuem SlackBuild's prontos:

ODE 0.8: http://slackbuilds.org/repository/12.1/libraries/ode/ (utilizei a versão para o Slack 12.1 e que funciona muito bem no 12.2, pois esta é a versão recomendada para a CS). Aqui está o link para o pacote que compilei: ode-0.8-i486-1_SBo.tgz

Não instalei algumas dependências, pois não pretendo utilizar, sendo ela a biblioteca Bullet, pois pretendo utilizar a ODE.

Estas bibliotecas compilei utilizando o pkgcreate:

cal3d-0.11.0-i686-1_PKGC.tgz
lib3ds-1.3.0-i686-1_PKGC.tgz
libcaca-0.99.beta13-i686-1_PKGC.tgz (o pacote oficial do Slack deve ser substituído por este, pois esta versão é requerida, porém tal biblioteca é opcional, sendo apenas necessária se você quiser a saída do seu programa em ASCII :-)

Binários da Cg Toolkit podem ser encontrados no site http://developer.nvidia.com/object/cg_toolkit.html. Aqui instalei a versão 2.1, porém a partir do site da CS, qualquer versão acima da 1.4 deve funcionar.

Muito bem, depois de instalado todos esses arquivos, basta compilar a CS. Baixe os fontes através do comando:

svn co https://crystal.svn.sourceforge.net/svnroot/crystal/CS/branches/release/V1.4 CS_1.4

Agora vá tomar um café enquanto os fontes são baixados. Depois disso, acesse o diretório criado e agora digite ./configure e make ou jam (neste caso o make é uma capa para o jam). E vá tomar outro café :-). Após alguns minutos ou horas, dependendo da sua máquina você estará com a CS compiladinha :D. Não irei dizer para você instalar a biblioteca, pois tive problemas ao fazer isso, o sistema de detecção de colisões não funcionou corretamente, então utilize a biblioteca a partir do local onde esta está.

Vamos partir para a CEL agora, que é uma biblioteca de entidades construída sobre a CS que pode ser considerada uma engine para jogos. Assim como a CS, as informações para compilar e instalar a CEL também estão disponíveis online: http://crystalspace3d.org/cel/docs/online/manual-1.2/Building.html#0. Tais informações não são muito completas, mas já é melhor do que nada.

Esta é bem mais fácil para compilar, já que não exige a instalação de muitas dependências, pois python é padrão em qualquer distribuição. Além desta existe um pacote opcional, o HawkNL, caso você queira suporte a redes, o que eu acho uma ótima idéia. Para esta dependência eu não encontrei pacotes e também não consegui gerar o pacote através do pkgcreate e também fui preguiçoso o suficiente para apenas compilá-la e instalá-la, sem criar pacote algum. O site da HawkNL é http://www.hawksoft.com/hawknl/. Outra coisa importante é exportar a variável CRYSTAL com o caminho onde você compilou a CS.

Pronto, feito isso basta rodar o comando "jam" e ir tomar um café. Após isso você já pode utilizar a biblioteca para criar seus próprios programas assim como rodar os vários exemplos que vem com ela. Para rodar os exemplos você deve exportar a variável LD_LIBRARY_PATH para apontar para onde você compilou a CS.