Piero V.

irrBullet su Linux

In questi giorni ho voluto testare un po’ l’integrazione di Irrlicht con Bullet.

Dovete sapere che ci sono diversi modi di farla: o usando irrBullet, o irrBt o usando direttamente le API di Bullet.

Io ho provato direttamente la terza, perché su un post del forum di Irrlicht consigliavano così. Io invece consiglio il contrario: oltre che “reinventare la ruota”, dovete fare tutto a mano e dopo un po’ ci si annoia, specialmente per le linee di debug. Se siete de programmatori bravi ok, ma io, che in C++ non sono così esperto, ho deciso di cambiare strada non solo perché questa mi pare più difficile delle altre, ma anche perché vorrei evitare di avere troppi bug.

Così la scelta era tra irrBullet e irrBt.

Tra le due, per il momento, ho scelto la prima. Entrambe mi paiono molto avanzate, ma questa scelta si basa soprattutto sulla licenza: Zlib contro Creative Commons.

Per il momento non ho ancora cominciato a programmarci perché ho avuto numerosi problemi perché il mio sistema operativo è case-sensitive, al contrario di Windows, dove è sviluppata principalmente.

Vi spiego come ho fatto a risolverli e a installare irrBullet.

Come prerequisiti ci sono gli strumenti di sviluppo (i soliti g++, make…), irrlicht e bullet con i rispettivi pacchetti di sviluppo se usate un gestore di pacchetti. Ci sono anche delle librerie di X.org ma penso quelle ce le abbiano tutti 😉

Scaricate irrBullet, quindi aprite un terminale nella directory del sorgente e eseguite questi due comandi:

for i in *.cpp; do sed '/^#include/s&Bullet/&&g' $i > newfile; rm $i; mv newfile $i; done
for i in *.h; do sed '/^#include/s&Bullet/&&g' $i > newfile; rm $i; mv newfile $i; done

dopo aprite il file kinematiccharactercontroller.cpp e a riga 4 cambiate irrBullet.h con irrbullet.h (lettera b minuscola).

Ora potete o cercare di usare il makefile (io ci ho provato molto ma non ci sono riuscito) oppure fare come me e usare un IDE.

Per CodeBlocks c’è già il file di progetto, ma non l’ho provato. Invece ho provato con Eclipse. In generale configurate le varie path (per esempio io, su Debian, per le librerie ho dovuto aggiungere /usr/lib/i386-linux-gnu) e nella scheda delle librerie (ogni IDE ha la sua) mettete questa: Irrlicht GL Xext X11 BulletDynamics BulletCollision. Poi ci sarebbe anche Xxf86vm, però io non l’ho messa perché avrei dovuto installare un pacchetto in più, però ho visto che va lo stesso, perciò non so perché l’hanno messa!

Impostate come output una libreria condivisa quindi copiate i file nella cartella del vostro progetto. Evitate di copiare le sotto cartelle: bheaders contiene gli header di bullet, ma noi usiamo quelli che abbiamo già, msvc per chi non lo sapesse sta per Microsoft Visual C++, perciò non ci serve e deprecated non è parte del programma.

Ora basta compilare. Ricordatevi di mettere la release mode.

Copiate la libreria compilata in irrbullet-versione-SDK/lib/linux con il nome di libirrBullet.so, quindi entrate nella directory irrbullet-versione-SDK/build con il terminale e date o il solito make install o, se preferite creare un pacchetto, checkinstall. In quest’ultimo caso eliminate il file README_make.txt, altrimenti checkinstall lo includerà nel pacchetto, ma non mi pare sia molto utile.

Infine date il comando ldconfig per fare sì che le prossime volte che compilate il linker del compilatore trovi la libreria.

Perfetto, avete concluso l’installazione di irrBullet.

Potete divertirvi con gli esempi. Ricordatevi che hanno in comune un framework (incluso nella cartella examples/framework). Inoltre alcuni esempi hanno sempre il problema del file irrBullet.h

Spero vi sia utile!