# Compilatie van Ultimate Stunts

In een ideale wereld zou compilatie het zelfde zijn op alle OS-platforms. Er zijn echter wat verschillen die compilatie een beetje moeilijker maken op sommige systemen. Ultimate Stunts wordt ontwikkeld in Linux, en zal het beste compileren in Linux en vergelijkbare UNIX-stijl systemen. Het kan ook gecompileerd worden op sommige andere systemen:

- In windows kan Cygwin gebruikt worden als UNIX-omgeving. U kunt Cygwin downloaden met al de vereiste packages (zie hieronder) en de instructies volgen die in de rest van dit document staan. Ultimate Stunts zal portable gehouden worden met Cygwin tijdens de ontwikkeling ervan.
- Mac OS X is weliswaar gebaseerd op een UNIX-kernel, maar Apple heeft een boel "features" toegevoegd die het minder compatible maken met typische UNIX-systemen. Een aparte compilatie-handleiding voor Mac OS X is beschikbaar.

### Vereisten

Om Ultimate Stunts te compileren heeft u een UNIX-compatible systeem nodig met een c/c++ compiler. U heeft ook de programma's 'make' en 'pkg-config' nodig, en een shell-programma dat in staat is om het configure-script uit te voeren.

Natuurlijk moet u ook de juiste bibliotheken en ontwikkelings-packages geinstalleerd hebben. De programma's die graphics gebruiken hebben de openGL, SDL en SDL_image bibliotheken nodig (en dingen die nodig zijn voor openGL en SDL). De niet-grafische programma's (zoals de server) kunnen ook SDL gebruiken, maar het kan mogelijk zijn om ze zonder SDL te compileren. Geluidsondersteuning via de FMOD of de openAL bibliotheek is optioneel: als u geen FMOD of openAL heeft zal Ultimate Stunts compileren zonder geluidsondersteuning. Als u beide heeft zal Ultimate Stunts standaard openAL gebruiken. Als OpenAL gebruikt wordt voor geluid, dan kan Ultimate Stunts daarbij ook libvorbisfile gebruiken voor het laden van Ogg Vorbis geluiden en muziek. Zonder libvorbisfile is Ultimate Stunts afhankelijk van een extensie van de ALUT bibliotheek voor het laden van Ogg-bestanden, en deze extensie is vaak niet aanwezig.

U kunt hier de vereiste bibliotheken vinden:

- FMOD
- OpenAL
- Vorbisfile
- SDL
- SDL_image

Als u OpenAL wilt gebruiken, vergeet dan niet om ook de ALUT bibliotheek te installeren.

De meeste Linux-distributies leveren de benodigde bibliotheken als packages. Normaal gesproken wordt FMOD niet geleverd (doordat het geen vrije software is), maar u kunt in plaats daarvan altijd OpenAL gebruiken. Als u deze bibliotheken installeert door een package-management systeem, vergeet dan niet om de development packages te installeren: deze zijn nodig voor het compileren van Ultimate Stunts (om het te draaien heeft u alleen de runtime packages nodig). Om u een idee te geven van wat voor packages u moet installeren, dit zijn de package-namen in Ubuntu 10.04:

- libsdl1.2debian
- libsdl1.2-dev
- libsdl-image1.2
- libsdl-image1.2-dev
- libopenal1
- libopenal-dev
- libalut0
- libalut-dev
- libvorbisfile3
- libvorbis-dev

### Bibliotheken voor Cygwin

Omdat het verkrijgen van de bibliotheken voor Cygwin lastig kan zijn, heb ik besloten om u te helpen door Cygwin-packages te leveren voor SDL en SDL_image, en voor OpenAL. Ze horen uitgepakt te worden in de Cygwin root directory, en dan zijn ze klaar om gebruikt te worden door Ultimate Stunts. Om vorbisfile te gebruiken in Cygwin, moet u niet alleen het libvorbisfile-devel pakket installeren, maar ook pkg-config.

### FMOD headerbestanden

(Alleen van toepassing als u FMOD wilt gebruiken in plaats van OpenAL)
Ultimate Stunts neemt aan dat de FMOD headerbestanden gevonden kunnen worden in een subdirectory "fmod" ergens in het standaard include search path. Een goede plaats om fmod.h etc. te plaatsen zou /usr/include/fmod kunnen zijn. Het FMOD shared object bestand kan bijv. in /usr/lib geplaatst worden. Ultimate Stunts verwacht dat libfmod.so aanwezig is, dus misschien is het nodig om een symlink te maken (zoals "ln -s libfmod-371.so libfmod.so").

### Compileren

Problemen tijdens de compilatie kunnen erg lastig zijn om op te lossen als u geen ontwikkelaar bent, maar zolang het geen problemen geeft, is compileren eenvoudig.

In de eerste plaats zou u het broncode pakket gedownload moeten hebben, en het uitgepakt hebben in een directory. Vervolgens moet Ultimate Stunts geconfigureerd worden voor compilatie op uw systeem. Dus, start het configure-script:

    ./configure

Als alles goed gegaan is, dan heeft het configure-script enkele bestanden gemaakt met de naam "Makefile". Dit stelt "make" in staat om de compilatie automatisch voor u te doen. Start make met het volgende commando:

    make

Make zal eerst alle code compileren die gedeeld is tussen de verschillende programma's. Daarna compileert het alle programma-specifieke code en wordt alles aan elkaar gelinkt om de programma-binaries te vormen. De resulterende binaries staan in de programma-specifieke directories.

    make install

De "make install" stap is niet noodzakelijk voor het testen van het spel: u kunt Ultimate Stunts al draaien vanuit de broncode-directory met ./execselect.sh of ./ultimatestunts/ustunts. "make install" installeert de binaries en databestanden. Het neemt aan dat er een UNIX-style directory layout is, dus op andere besturingssystemen kan een handmatige installatie nuttiger zijn. U moet dit commando draaien als super-user (root). De standaardlocaties voor de bestanden zijn /usr/local/bin voor de binaries en /usr/local/share/ultimatestunts. Na "make install" kunnen gebruikers Ultimate Stunts starten met het commando ustunts (als de locatie van de binaries in de PATH variabele van de gebruiker staat natuurlijk).

### DLL bestanden

Windows-gebruikers die hun binaries vanuit de verkenner willen starten, vanuit het Start-menu, of op andere gebruikelijke manieren, moeten weten dat alle cygwin-programma's cygwin1.dll nodig hebben. De Ultimate Stunts binaries hebben daarnaast ook andere DLLs nodig, zoals SDL.dll. Vind deze bestanden, en plaats ze bijv. in de zelfde directory als de binaries. Voor het starten van een netwerk-multiplaying spel kan er wat tweaken van de PATH variabele nodig zijn. Zie ook de windows binary package voor hoe ik het opgelost heb.