Homepage
 

Hallo, Gast.
Suchen
Hint einsenden
Hint einsenden
Website Quick Links
 
Aktuelle OS X Hints
 
Neue Forumsbeiträge
 
Zurück  BillardGL nativ unter Mac OS X
Apps
Wie bereits in einem früheren Hint beschrieben, ist es recht einfach, BillardGL auf Mac OS X zu portieren. In jenem Hint wird auch eine Mac-Version zum Download angeboten, sowie beschrieben, wie man sich das Spiel selbst bauen kann. Mein Hint stellt nun eine Ergänzung zum genannten dar, dafür mit einem kleinen Bonus: Ich bin dem Wunsch gefolgt, BillardGL in ein schickes Mac OS Installationspaket zu verpacken.

Einfache Installation

Für Benutzer, denen es hauptsächlich darauf ankommt, BillardGL auch auf ihrem Mac spielen zu können, ist das Installer-Paket die beste Wahl. Die Installation verläuft damit sehr einfach, es werden keine speziellen Programme oder Bibliotheken benötigt:
  1. Laden Sie sich das komprimierte Installer-Paket BillardGL-1.75.pkg.tar.gz herunter und entpacken Sie die Datei.
  2. Da BillardGL einige Programm-Ressourcen in System Verzeichnissen installiert, benötigen Sie für die Installation Admin-Rechte.
  3. Doppelklicken Sie auf das Installer-Paket BillardGL-1.75.pkg, um mit der Installation von BillardGL zu beginnen.
  4. Folgen Sie den Anweisungen auf dem Bildschirm.
  5. Nach der Installation befindet sich im Programm-Ordner die Anwendung «BillardGL», welche durch die gelbe BillardGL-Kugel 13 auffällt.
  6. Mit einem Doppelklick auf das Programm Icon wird das Spiel gestartet.
Um das Programm wieder zu entfernen, müssen Sie folgende Dateien und Verzeichnisse löschen:
  • /Programme/BillardGL
  • /usr/share/BillardGL

BillardGL selbst kompilieren

Wer seine eigene Variante von BillardGL selbst bauen möchte, vielleicht um das Spiel auf einem betagten G3 zu spielen, oder so wie ich, aus reinem Interesse, wird sich wohl über diese Informationen freuen: Ein Hinweis: Ich beziehe mich hier auf die Version 1.75, d.h. überall wo "1.75" in Datei- und Verzeichnisnamen auftaucht, ist die jeweilige Version gemeint.
  1. Zuerst einmal brauchen Sie die aktuellen Quellen des Spieles, die es auf der Webseite von BillardGL gibt. Weiterhin ist es empfehlenswert, meinen Patch herunterzuladen, sofern man die nun besprochenen Änderungen nicht von Hand vornehmen möchte.
  2. Entpacken Sie die Quellen in ein Verzeichnis ihrer Wahl; dabei wird automatisch das Unterverzeichnis BillardGL-1.75 erzeugt.
  3. Laden Sie den Patch BillardGL-1.75.osx.src.patch.tar.gz in dieses Verzeichnis herunter und entpacken Sie ihn. Im Unterverzeichnis src wird dabei der Ordner GL neu angelegt, weiterhin gibt es nun noch einen Ordner res/ sowie eine Textdatei PORTING.
  4. Jene Datei enthält die Beschreibung der Änderungen, die ich an BillardGL gemacht habe, damit man es auch unter OS X spielen kann. Ich werde im folgenden darauf eingehen.
  5. Um die Quellen für die Kompilierung auf Ihrem Mac zu anzupassen, öffnen Sie ein Terminal-Fenster (Programme/Dienstprogramme/Terminal) und wechseln Sie (mittels des cd-Befehles) zu dem Ordner, in welchen Sie BillardGL entpackt haben. Führen Sie dort den Befehl patch -p0 < osx.patch aus um die Quellen zu patchen.
  6. Wechseln Sie nun (mittels cd src) in das Unterverzeichnis src und starten Sie die Kompilierung mit dem Befehl make. Nach erfolgreicher BillardGL-Erzeugung befinden sich in diesem Verzeichnis einige neue Dateien mit der Endung .o sowie eine mit dem Namen BillardGL, Das ist unser Programm. Wenn Sie BillardGL bereits installiert haben, d.h. die Programmressourcen unter /usr/share/BillardGL verfügbar sind, können Sie das Spiel mit ./BillardGL tatsächlich starten, um bei einer kleinen Partie zu entspannen.
  7. Um das Spiel nun zu installieren, tippen Sie den Befehl make install ein, womit in ihrem Programme-Ordner die BillardGL-Anwendung erzeugt und die Ressourcen nach /usr/share/BillardGL kopiert werden. Nun sind Sie genauso weit, als hätten Sie obiges Installer-Paket genommen, also fertig.

Änderungen am Original BillardGL

In diesem Abschnitt nun beschreibe ich detailliert, welche Änderungen an den BillardGL-Quellen nötig sind, bis auf die vorher genannte Methode das BillardGL.app-Bundle erstellt ist. Eine Kurzfassung dieses Textes ist auch im Patch-Paket in der Datei PORTING zu finden.

Wie bereits im genannten Hint beschrieben, ist OpenGL integraler Bestandteil von Mac OS X und wird, da es als sogenanntes Framework installiert ist, anders eingebunden. Aus diesem Grund muss man im Makefile die Zeilen, in der alle Includes sowie die zugelinkten Bibliotheken aufgeführt sind, diesen Umstand berücksichtigen: Aus

INCPATH = -I/usr/X11R6/include
LIBS = -L/usr/X11R6/lib -lGL -lGLU -lglut -lXmu -lXext -lX11 -lm -lXi

wird

INCPATH = -framework GLUT -I.
LIBS = -framework GLUT -framework OpenGL -lm -lobjc

Sie sehen hier außerdem, dass OpenGL, anders als bei den meisten Unixen, für die Display-Darstellung keinen X-Server benötigt. Da die Mac OS-Frameworks in Objective-C geschrieben sind, muss weiterhin die Objective-C-Runtime mittels -lobjc dazugeladen werden.
Das das aktuelle Verzeichnis zu den Includes hinzugenommen wird, liegt daran, dass ich zusätzlich eine kleine Anpassung an den Quellen vornehmen musste: Die OpenGL-Header werden normalerweise mittels #include <GL/glut.h> eingebunden, da diese allerdings unter MacOS X als Framework existieren, heißt es hier #include <GLUT/glut.h>. Dies nun in allen Sources zu ändern war mir aber zu mühsam, also habe ich den Quellen kurzer Hand ein Unterverzeichnis GL spendiert, in dem der Header glut.h liegt:

#ifdef __APPLE__
#include <GLUT/glut.h>
#endif


Um als nächstes dem Spiel ein wenig auf die Sprünge zu helfen, habe ich die Compilerflags so angepasst, dass die BillardGL-Binary nun optimiert und mit Altivec-Erweiterung gebaut wird:

CFLAGS += -fast -mcpu=7450 -faltivec
CXXFLAGS+= -fast -mcpu=7450 -faltivec

Es kann sein, dass die Anwendung damit nicht mehr G3-kompatibel ist.

Abschließend habe ich dem Makefile noch ein neues install-Target gegeben, mit dem automatisch das BillardGL.app-Bundle erstellt und die Programm-Ressourcen installiert werden. Als weiterer Unterschied zum Original-Makefile wird die Binary nun gestrippt, was eine deutlich kleinere Programm-Datei bewirkt.

Source-Patches

In der Datei Kugel.cpp gibt es einen Aufruf der Funktion exp2(GLint) (Zeile 118), der mit der C-Bibliotheks-Funktion exp2(double) kollidiert; tatsächlich soll die selbst definierte Variante aufgerufen werden. Nun ist Parameter-Überladung ein Sprachmittel von C++, allerdings wird durch #include <math.h> die C-Version von exp2(double) deklariert, die nicht überladbar ist. Mit #include <cmath> und dem expliziten Casten des Funktionsargumentes ist dieser Fehler passé:

GLint TG=exp2(GLint((7-Aufloesung)/2));


Im Header LadeScreen.h ist ursprünglich die Variable AktuellesFenster als int deklariert, sie wird aber in allen anderen Headern als GLint benannt. Um den daraus resultierenden Fehler zu beseitigen, brauchte ich nur die Deklaration entsprechend zu ändern.

Weiterhin habe ich in den Texturen (des Spieles) die 13 als "Symbol" für BillardGL als Bitmap gefunden, so dass es kein großes Problem war, mit dem Icon Composer (der Developer Tools) daraus ein MacOS-Icon zu "komponieren"; die entsprechende Textur ist die 1/dreizehn.bmp.

Erzeugung des Installer-Paketes

Auf dieser Seite wurde der Wunsch nach einem Installer-Paket geäußert. Ich habe mir diese "Mühe" gemacht und beschreibe hier kurz dessen Erstellung. Den PackageMaker (/Developer/Applications/Utilities) liefert Apple als passendes Werkzeug zum Erzeugen der Pakete mit. Da eine detaillierte Beschreibung des Packagings den Umfang dieses Hints sprengen würde und auch auf Grund der hervorrangenden Dokumentation durch Apple hier überflüssig ist, beschreibe ich im folgenden nur kurz einige wichtige Hinweise:

Im Archiv BillardGL-1.75.pmsp.tar.gz befindet sich die Datei BillardGL.pmsp zusammen mit weiteren benötigten Ordnern. Beim Öffnen der Datei wird es zu Problemen kommen, weil die Pfade unter Files/Root und Resources/Resources nicht mehr stimmen. In das erste Feld geben Sie deshalb den Pfad zum Verzeichnis BillardGL.osx an, in das zweite den Pfad zu BillardGL.osx-res.
In das Feld Files/Root wird ein Ordner angegeben, dessen Inhalt bei der Installation an den gewählten Installations-Ortes kopiert wird. Unter Default Location geben Sie den Ort an, an dem das Paket installiert werden soll. Ich habe hier / angegeben, damit BillardGL in /Applications und die Ressourcen in /usr/share/BillardGL landen können. Dem entsprechend enthält der Ordner BillardGL.osx die komplette Hierarchie dafür. Außerdem ist Info/Flags/Relocatable deaktiviert, damit BillardGL auch in den richtigen Ordnern landet.

Als weitere Optionen (Info) habe ich No Restart Required für Restart Action eingetragen, da keine großen Änderungen am System vorgenommen werde. Wie bereits mehrfach erwähnt, wird die Einstellung Admin Authorization unter Authorization Action benötigt.

[aplysia: Nur Einfach Installation getestet]
Erstellt von Apfelmännchen am 26.05.2005 um 11:49 Uhr | Hits: 3911
Hint Optionen


Kommentare
Die folgenden Kommentare geben die persönliche Meinung des jeweiligen Autors wieder. «Mac OS X Hints» übernimmt dafür keine Verantwortung.
Erstellt von: mifa am 28.05.2005 um 01:17 Uhr
DANKE!
Erstellt von: Turbohonk 27 am 24.09.2007 um 11:25 Uhr
Auch von mir, auch wenn ich ein wenig spät dran bin





 
top top