www.Newbie-Net.de

SDL-Games

SDL-Linuxspiele installieren und Zocken, Zocken, Zocken

Autor: Karsten Kruse

Inhalt

Vorwort

Wer sagt, dass Linux eine schlechte Spieleplattform ist? Alles halb so wild, den Beweis möchte ich mit einigen sehr guten Spielen antreten. Natürlich können wir uns einfach von der Distributions-CD ein paar Spiele installieren, aber das eigens kompilierte Game ist viel mehr wert ;). Um die Auswahl nicht zu einseitig zu gestalten habe ich mich für verschiedene Spiele entschieden, ein RPG, ein Arcadegame im Breakoutstil, ein Strategiespiel und noch einige andere. Um die Spiele zu kompilieren benötigen wir SDL und einige SDL-Zusätze.

Einkaufsliste

Bevor wir beginnen, liste ich hier alle Downloads auf die für alle Libs und alle Spiele gebraucht werden. Ich habe mir ein Verzeichnis angelegt und alle Dateien dort rein gelegt. Finden sich auf den Homepages neuere Versionen, nehmen wir die natürlich, aber nur wenn sie als Stable gekennzeichnet sind. Von Snapshots und Previews lasse ich generell als Newbie die Finger. Hier die Shoppingliste:

Alles zusammen sind das runde 22 MB, für die Anzahl der Spiele und den Spielspass durchaus angemessen.

SDL, was ist das?

SDL ist die Abkürzung von Simple DirectMedia Layer, eine Library um schnellen Zugriff auf vorhandene Hardware bereitzustellen. Alle Spiele die wir installieren werden benötigen diese Bibliothek. Das ist der Grund warum die Reihenfolge die ich vorschlage einzuhalten ist. Erst SDL, dann die SDL-Zusätze und dann die Spiele in beliebiger Reihenfolge.

Normalerweise sollten mit den von uns installierten Bibliotheken nahezu alle SDL-Games kompilieren. Trotzdem liegt der Teufel wie immer im Detail, einige Spiele brauchen dann eben doch noch eine Zusatzlibrary. Das soll aber für uns kein Problem sein, wer die READMES der Spiele liest wird immer auch den Hinweis auf die benötigten Bibliotheken bekommen.

Die Spiele die ich hier beschreibe werden mit den gleich installierten Bibliotheken aber zufrieden sein.

Die SDL-Lib installieren

SDL kommt im Sourcecode den wir erst noch kompilieren müssen, aber das ist in diesem Fall einfach da SDL nichts besonderes braucht. Das größte Problem das sich für den Newbie darstellt: Welche Programme werden zum kompilieren benötigt? Ich installiere von meinen Distributions-CDs immer folgende Pakete, sollte der Paketmanager Abhängigkeiten entdecken installiert man diese einfach mit:

 autoconf           Automatische Sourcecode-Konfiguration
 automake           Automatisch Makefile.in's im GNU Stil erzeugen
 bin86              8086 Assembler und Linker
 binutils           GNU binutils
 bison              GNU Parsergenerator
 cvs                Concurrent Versions System
 flex               Schneller Scannergenerator
 gcc                Der GNU C-Compiler mit Supportfiles
 gdb                Der GNU-Debugger
 make               GNU make Befehl
 patch              GNU patch Programm
 strace             Programm zum Verfolgen von Systemaufrufen
 yacc               BSD Yacc ist ein Parsergenerator

Außerdem brauchen wir die Includedateien von X11 und manchmal auch die des Kernels, jede Distribution liefert diese auch mit, die Paketnamen sind aber unterschiedlich. In der Regel sollte man nach X11-devel und Kernel-Includes Ausschau halten und die Pakete dann auch finden.

Damit sollte man für nahezu jeden Fall gut gerüstet sein. Was die Programme im einzelnen machen sprengt den Rahmen, natürlich bringt jedes Programm Dokumentation und Manpages mit. Wir aber wollen jetzt SDL installieren.

Zuerst müssen wir das heruntergeladene Paket entpacken. Dazu gibt es viele Frontends und X11-Tools. Ich benutze den kurzen Weg und tippe in meine Shell das Kommando zum entpacken:

 tar xzf SDL-1.2.3.tar.gz

Die Sourcen liegen jetzt in einem Unterverzeichnis SDL-1.2.3 in das wir hineinwechseln:

 cd SDL-1.2.3/

Als erstes lesen wir wie immer die READMEs und Installationshinweise. Da wir gerade in der Shell sind, sparen wir uns großen Aufwand und sehen uns die Dateien mit less README direkt an. Die Installationshinweise lesen wir mit less INSTALL. Die Installation ist einfach und besteht aus den üblichen Schritten die wir auch gleich eingeben wo wir schonmal hier sind. Für make install benötigen wir Rootrechte die wir uns durch die Eingabe von su holen falls wir als User angemeldet sind. Hier die Schritte:

 ./configure
 make
 su
 make install
 exit

Sollte make oder make install mit einem Error abbrechen muss man die Ausgaben der Zeilen davor ganz genau studieren, oftmals fehlt nur ein kleines aber wichtiges Programm. Findet sich nichts bin ich gerne bereit mir die Ausgabe mal anzuschauen, je mehr Zeilen ich zu sehen bekomme desto wahrscheinlicher kann ich einen Tipp geben. In der Regel sollte aber SDL problemlos installiert worden sein. Da wir die Rootrechte nicht mehr brauchen schließen wir die Rootshell durch die Eingabe von exit. Sollten wir nochmals Rootrechte benötigen werden wir das wieder mit su erledigen.

Ein erster Test

Um die SDL zu testen kompilieren wir ein kleines Testprogramm das den Sourcen beiliegt. Dazu wechseln wir in das Unterverzeichnis test und geben folgende Kommandos ein:

 ./configure
 make

Die Testprogramme sind jetzt kompiliert und können mit dieser Kommandozeile angezeigt werden:

 ls -la | grep "rwx"

Starten wir einfach einen Test durch die Eingabe von graywin. Das Drücken von ENTER sollte uns in den Vollbildmodus bringen. Mit der Maus können wir lustige Vierecke erzeugen. Weitere nette Tests sind testalpha, testvidinfo oder auch testsprite. Wenn die Demos funktionieren ist SDL installiert :).

SDL-MPEG installieren

SDL-MPEG wird von SDL-Mixer benötigt wenn z.b. MP3 unterstützt werden soll, da z.b Nethack MP3 verarbeiten kann kompilieren wir es mit. Wir entpacken das Archiv, wechseln in das neue Verzeichnis und lesen das README:

 tar xfz smpeg-0.4.4.tar.gz
 cd smpeg-0.4.4
 less README

Um die Sourcen zu konfigurieren benutzen wir ./configure und starten die Kompilierung mit make. Danach erlangen wir mit su Rootrechte, installieren die Binärdateien mit make install und beenden die Rootshell mit exit:

 ./configure
 make
 su
 make install
 exit

Jetzt können wir SDL-Mixer installieren.

SDL-Mixer installieren

SDL-Mixer stellt einige Soundfunktionen für viele Spiele bereit, wer auf Sound verzichten kann braucht SDL-Mixer nicht zu installieren. Alle anderen beginnen mit dem Entpacken und wechseln danach in das neu entstandene Verzeichnis um das README zu lesen:

 tar xzf SDL_mixer-1.2.1.tar.gz
 cd SDL_SDL_mixer-1.2.1
 less README

Um für ./configure einige benötigte Dateien zu generieren geben wir jetzt folgendes ein (das hätte der Softwareentwickler schon machen sollen, aber man ist ja flexibel):

 autogen.sh

Jetzt wieder den üblichen Installationsdreiklang aus ./configure, make und make install. Für make install benötigen wir Rootrechte, su gibt sie uns und exit nimmt sie uns wieder:

 ./configure
 make
 su
 make install
 exit

Das war schon alles. Kommen wir zu SDL-Image.

SDL-Image installieren

SDL-Image stellt Funktionen zum Laden von verschiedenen Bildformaten bereit. Wer bis hier durchgehalten hat weiß es schon, auspacken, in das neue Verzeichnis wechseln und das README lesen:

 tar xfz SDL_image-1.2.1.tar.gz
 cd SDL_image-1.2.1
 less README

Und wie üblich installieren:

./configure
 make
 su
 make install
 exit

SDL-mm installieren

SDL-mm stellt einige C++ Funktionen bereit, das Entpacken, in das neue Verzeichnis wechseln und das README lesen sollte bekannt sein:

 tar xfz SDLmm-0.1.8.tar.gz
 cd SDLmm-0.1.8
 less README

Auch die Installation der Bibliothek schreckt den erfahrenen Newbie nicht mehr ab. Hier die Schritte:

 ./configure
 make
 su
 make install
 exit

Jetzt haben wir alle Bibliotheken installiert die die Spiele brauchen. Ein Neustart des Systems war bei mir notwendig um SDL-Mixer und seinen Soundsupport zu aktivieren. Möglicherweise hätte es auch gereicht nur das von mir benutzte Soundsystem Alsa neu zu starten.

In der Regel liest man sich bei neuen Spielen einmal durch die Installationsdokumentation und weiß dann ob und welche weiteren Bibliotheken gebraucht werden und wo man sie bekommt. Jetzt kommen wir zu den Spielen.

Das erste Spiel: Falcons Eye (Nethack)

Bild: Screenshot von Falcons EyeFalcons Eye ist ein grafisches Frontend für Nethack. Nethack ist der Nachfolger von Hack. Hack ist der Nachfolger von Rouge. Rogue ist ein Dungeons-And-Dragons-Adventure von Ken Arnold aus dem Jahre 1970, entwickelt unter UNIX und der Grund warum die curses-Bibliothek entstanden ist. Damit sind wir so ziemlich an den Anfang der UNIX-Geschichte gegangen. Nethack ist also ein Spiel mit einem mehr als ausgereiften und über Jahrzehnte verfeinertem Gameplay.

Nethack wird normalerweise ganz einfach auf der Konsole bedient, aber mit Falcons Eye steht uns eine wirklich sehr ansehnliche Oberfläche zur Verfügung. Ein Freund von mir sagte nach einem flüchtigen Blick "Du spielst Diablo?". Wenn ich ehrlich sein soll, ich kenne Diablo nicht besonders gut, aber man kann wohl behaupten, dass die Diablo-Entwickler sich bei Nethack "inspirieren" liessen ;).

Auspacken und Anpassen

Wir entpacken die Source von Falcons Eye und wechseln in das neue Verzeichnis mit diesen Befehlen um danach das README zu lesen:

 mkdir nethack
 unzip -d nethack nethack_source_331_jtp_193.zip
 cd nethack
 less README

Warum habe ich das Verzeichnis vorher angelegt? Die Sourcen würden sonst im derzeitigen Verzeichnis verteilt werden, unüblicherweise entpacken die Sourcen mit unzip nicht in ein eigenes Verzeichnis. Bitte versucht nicht die Source unter Windows mit Winzip oder ähnlichem auszupacken, damit werden die Unixzeilenumbrüche verlorengehen.

Konfigurieren, Kompilieren und Installieren

Die Konfiguration ist ein wenig Unixuntypisch, das liegt möglicherweise daran, dass der Programmierer eher ein Windowsfan ist. Um das Programm jedem User bereitzustellen müssen wir daher die Datei anpassen die den Installationspfad enthält. Dies sind die einzelnen Schritte:

Spielen

Das Spiel ist jetzt unter /usr/local/games/ installiert und kann mit /usr/local/games/nethack gestartet werden. Ich habe mir dazu unter KDE einen Shotcut auf dem Desktop erstellt. Um das Spiel mit angepassten Einstellungen zu starten kann man sich eine Konfigurationsdatei im Homeverzeichnis anlegen, eine Beispieldatei kann man sich so kopieren:

 cp /usr/local/games/lib/nethackdir/defaults.nh ~/.nethackrc

Diese Datei wird dann mit einem Editor geöffnet und nach Belieben angepasst. Auf der Homepage des Spiels stehen einige Tipps dazu. Wer die Midi-Musik hören möchte, muss sich TiMidity von seiner Distributions-CD installieren oder die Musik als MP3-Dateien von der Homepage des Spiels herunterladen. In diesem Fall braucht man das Programm mpg123 das auch jeder Distribution beigefügt ist.

Bei mir läuft das Spiel gut, auf die Musik habe ich verzichtet. Einzig das Beenden des Spiels klappt nicht wie erwartet. Aber ich denke, dass dieser Fehler in einer der nächsten Versionen behoben ist.

Viel Spaß beim Zocken :). Das Spiel macht wirklich Laune, es fällt mir schwer mich loszureißen und zum nächsten Spiel zu kommen.

Das zweite Spiel: LBreakout

Bild: Screenshot von LBreakoutDas nächste Spiel ist ein Breakout-Clone. Man hat ein Panel und muss einen Ball immer wieder nach oben schießen. Erschwert wird das ganze durch kleine Würfel die im Weg sind und bei Berührung explodieren. Manchmal fallen kleine Teile aus den Würfen die man aufsammeln sollte. Aber vorsicht, jedes aufgesammelte Teil verändert das Spiel, ein besonders fieses macht sogar das Licht aus ;). Ziel des Spiels ist es, möglichst viele Punkte zu sammeln, wer weniger als 200000 schafft ist meiner Meinung nach ne Niete ;).

Installation

Die Installation ist wesentlich einfacher als die von Nethack, wir entpacken die Sourcen, wechseln in das neue Verzeichnis und lesen das README:

 tar xzf lbreakout2-2.1.1.tar.gz
 cd lbreakout2-2.1.1
 less README

Die weiteren Schritte sind uns von SDL und den SDL-Zusätzen bekannt:

 ./configure
 make
 su
 make install
 exit

Spielen

Das wars. Jetzt kann mit dem Kommando lbreakout2 das Spiel gestartet werden und die Punktejagt beginnen. Das erste was ich gemacht habe war die Grafik in den Optionen auf Vollbild umzuschalten. Die Framerate sah mit 100 FPS bei mir am besten aus, aber das ist sicher Geschmacksfrage.

Leider stand der Name und damit meine Punktezahl immer nur als Michael (der Entwickler) im Spiel, aber das ganze hat trotzdem viel Spass gemacht. Ein gelungenes Spiel. Besonders wenn man mit mehreren an den Highscores arbeitet. Schickt mir eure Highscores ;)!

Das dritte Spiel: Advanced Strategic Command - ASC

Bild: Screenshot von ASCASC ist ein Rundenbasiertes Strategiespiel im Stil der Battle Isle und scheint ein brauchbares Stück Software zu sein. Am Anfang als Mail-Spiel konzipiert hat es jetzt einen Einzelspielermodus bekommen und wird damit für wesentlich mehr Leute interessant. Das ASC-Team sucht noch Hilfe, wer sich einbringen möchte sollte mal auf der Homepage nachsehen wo und wie geholfen werden kann um das Spiel zu verbessern.

Installation

Die Installtion beginnt mit dem Auspacken der Sourcen und wir wechseln in das neue Verzeichnis um das README zu lesen:

 tar xzf asc-source-1.9.5.4.tar.gz
 cd asc-1.9.5.4
 less README

Jetzt wieder die üblichen Schritte um die Sourcen zu konfigurieren, die ausführbaren Dateien zu kompilieren und zu installieren:

 ./configure
 make
 su
 make install
 exit

Das Kompilieren mit make hat bei mir recht lange gedauert. Es wurden auch einige Warnungen angezeigt die allerdings alle nicht kritisch waren.

Spielen

Gestartet wird mit dem Kommando asc. ASC macht auf mich den Eindruck als würde die Programmierarbeit noch nicht ganz abgeschlossen sein. So steht es auch im README, insbesondere der Netzwerkcode braucht noch Arbeit. Trotzdem, es ist spielbar und macht Spass. Ich werde mir neue Versionen des Spiels auf jeden Fall downloaden um zu sehen wie das Spiel sich weiterentwickelt. Im Spiel ist unten rechts ein kleiner Schieberegler mit dem man die Karte zoomen kann, ein sehr nettes Feature.

Das vierte Spiel: Tunnel

Bild: Screenshot von TunnelDas Spiel Tunnel lässt sich schlecht beschreiben, die Spielidee ist mit nichts vergleichbar das ich kenne. Das ganze läuft so ab: Du fliegst mit einer Kapsel durch einen Tunnel und musst Kugeln ausweichen, aber es sind auch Kugeln dabei die du einsammeln kannst um Schild und Power zu bekommen. Schießen kann man mit der Taste "C". Alles in allem ganz witzig. Aber schaut es euch selber an.

Installation

Wie üblich entpacken wir die Sourcen, wechseln in das neue Verzeichnis und lesen erstmal das README:

 tar xzf tunnel-1.0.tar.gz
 cd tunnel-1.0
 less README

Die Rest sollte jetzt eigentlich schon im Blut liegen. Die Installation hat keine Besonderheiten:

 ./configure
 make
 su
 make install
 exit

Spielen

Tunnel braucht so wie es aussieht ganz schön Rechenpower, entwickelt wurde auf einem Pentium2 mit 350 MHz. Das Spiel wird mit tunnel gestartet. Den Vollbildmodus erreicht man mit dem Rechts-Pfeil. Das Spiel hat mehr zu bieten als es am Anfang scheint, das Lesen der Dokumentation im Sourceverzeichnis lohnt sich. Die Grafik ist sehr bizarr aber nicht schlecht. Sehr gut gelungen wie ich finde.

Das fünfte Spiel: Defendguin

Bild: Screenshot von DefendguinAls ich ein kleiner Junge war hatte ich einen Atari2600, eine der frühen Spielekonsolen die richtig gerockt haben. Meine Lieblingsspiele waren Tennis und Defender. Defendguin ist ähnlich wie Defender, ein Raumschiff fliegt herum und schiesst die bösen Aliens ab um die Erde zu retten. Hier aber fliegst du mit deinem Tuxmobil und musst Billborgs abschiessen um Pinguine zu retten. Das beste an diesem Spiel ist aber der lebhafte Ton :).

Installieren

Die Installation lässt nur den Schritt ./configure aus und die READMEs enden hier auf .txt, das soll uns aber nicht verwirren. Packen wir erstmal die Sourcen aus, dann wechseln wir in das neue Verzeichnis und lesen das README:

 tar xzf defendguin-0.0.9.tar.gz
 cd defendguin-0.0.9
 less README.txt

Jetzt führen wir die üblichen Schritte aus, nur ./configure lassen wir aus:

 make
 su
 make install
 exit

Spielen

Das Spiel wir mit defendguin gestartet, in den Vollbildmodus kommt man mit defendguin --fullscreen. Das Spiel erklärt sich von alleine, besonders gelungen fand ich den eingebauten "emacsguin" zum Einstellen der Soundoptionen. Viel Spaß kann ich da nur sagen, und rettet die Pinguine :).

Nachwort

Abschliessend will ich noch ein paar Probleme anreißen. Sollte dein Spiel nicht in den Vollbildmodus umschalten wollen ist dein X11 nur auf eine Auflösung eingestellt, die die du gerade siehst. Die Lösung ist von Distribution von Distribution unterschiedlich, bei meiner SuSE musste ich den X11-Server runterfahren und als Root mit Sax2 weitere Auflösungen meiner Konfiguration hinzufügen. Wie die Konfigurationshilfen bei anderen Distributionen heißen, lässt sich mit dem jeweiligen Handbuch herausfinden.

Viel Spaß, und berichtet mir doch mal wenn ihr auch gute SDL-Games gefunden habt mit einer kurzen EMail an tecneeq(at)tecneeq(dot)de. Ich sammle schon Spiele für einen zweiten Teil.

Karsten Kruse aus dem Land des binären Weihwassers für www.newbie-net.de und www.prolinux.de, ich gebe zurück ins Studio.

Danke an hannes(at)poessinger(dot)net Johannes Pössinger für die Rechtschreibprüfung :).