Aus Linux-Magazin 04/2002

Die monatliche GNU-Kolumne

Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU-Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe: Trophy, Adonthell, XBindkeys, Access Road, GNU Cons, SCons.

Willkommen zu einer neuen Ausgabe der Brave GNU World mit Berichten über eine ausgewogene Mischung von Projekten. Auch in diesem Monat beginnen wir mit der Vorstellung eines der zahlreichen freien Spiele.

Trophy

Andrew Mustun begann im März 2000, als er sein Informatikstudium abgebrochen hatte, mit der Entwicklung von “Trophy”[5], einem Autorennen in 2D-Aufsichts-Darstellung, bei dem es für den Spieler darum geht, nicht nur schneller als der Rest, sondern überhaupt wohlbehalten ins Ziel zu kommen (siehe Abbildung 1). Die Autos sind in bester James-Bond-Manier bewaffnet und die gegnerischen Fahrer setzen alle vorhandenen Mittel ein, um den Zieleinlauf des Spielers zu verhindern.

In der aktuellen Version bietet das Spiel solide Grafik- und Soundeffekte, so dass Freunde actionlastiger Unterhaltung auf ihre Kosten kommen. Für echten Spielgenuss sollte jedoch ein leistungsfähiger Rechner zum Einsatz kommen, gerade wenn sanftes Scrolling gefragt ist.

Trophy ist in C++ programmiert und steht unter der GPL. Wer nicht nur spielen, sondern sich für Trophy eine eigene Rennstrecke zusammenbasteln möchte, findet eine Anleitung auf der Trophy- Homepage. Zum Einsatz kommt dafür das Grafikpaket Gimp.

Dem Spiel fehlt noch eine Option für Rennen, bei denen mehrere Spieler auf venetzten Rechnern gegeneinander antreten, Andrew hat aber angekündigt, eine solche Netzwerkoption einzuarbeiten, sobald ihm sein inzwischen wieder aufgenommenes Studium etwas mehr Zeit gibt. Er legt übrigens Wert auf die Feststellung, dass er ein friedliebender Mensch sei. Er lehnt Waffen generell ab und hält Autos ohnehin für gefährlich genug. Das mag auch der Grund sein, weshalb der 25-Jährige noch keinen Führerschein besitzt. Wer die Netzwerk-Unterstützung so sehr vermisst, dass er selbst Hand anlegen möchte, ist – wie jeder andere Helfer übrigens auch – Andrew stets willkommen.

Abbildung 1: Trophy zeigt spektakuläre Drifts in altem Stil, aber mit neuen Cabrios.

Abbildung 1: Trophy zeigt spektakuläre Drifts in altem Stil, aber mit neuen Cabrios.

Adonthell

Das Adonthell-Projekt[6] beschäftigt sich mit einem freien 2D-Rollenspiel, ähnlich den alten Konsolenspielen wie zum Beispiel SNES (Abbildungen 2 und 3). Die wesentlichen Komponenten solcher Spiele sind zum einen Inhalt, Handlung, Bilder und das ganze Drumherum, genannt die Story; zum anderen die technische Komponente, die so genannte Engine, die unter anderem Darstellung und Kommunikation mit dem Benutzer übernimmt. Engine und Spiele sind vollständig getrennt.

Das Adonthell-Projekt hat sich zum Ziel gesetzt, eine universell verwendbare Engine für Rollenspiele zu schaffen, die einzelne Spielhandlungen aus jeweils abgeschlossen Geschichten interpretiert. Der gewählte Ansatz entspricht den gängigen 3D-Shootern, bei denen eine Engine jeweils wechselnde Szenarien als eigene Spiele darstellt.

Die Adonthell-Engine ist in C++ programmiert, für Spielsteuerung, Erweiterung und Skripting ist ein Python-Interpreter eingebettet. Damit können Storys mit Karten- und Dialogeditoren (Abbildung 4) entworfen werden, ohne C++ nutzen zu müssen. Für die musikalische Untermalung sorgt OGG Vorbis[7].

Das Kernteam von Adonthell bilden Kai Sterker, Alexandre Courbot, James Nash, Benjamin Walther-Franks, Joel Vennin, Joseph Toscano und Mike Nieforth. Programmierer, Musiker, Grafiker und Autoren haben sich damit fachübergreifend zusammengefunden und geben ein schönes Beispiel für Internet-basierte, aber doch lebendige Kooperation. Einmal im Jahr finden sich die Mitglieder auch zu einem persönlichen treffen “irl” zusammen.

Adonthell ist bisher auf GNU/Linux, FreeBSD, OpenBSD und BeOS getestet. Das Team plant die Portierung auf weitere, auch proprietäre Plattformen, um selbst deren Benutzern einen ersten Eindruck von Freiheit zu vermitteln. Vernetztes Spielen soll bald eine Client-Server-Architektur erlauben. Den Ungeduldigen mit entsprechenden Fähigkeiten sei die Mitarbeit empfohlen – das Adonthell-Team freut sich über jede Unterstützung.[8]

Abbildung 2: Auswahl einzelner Spielabschnitte unter Adonthell.

Abbildung 2: Auswahl einzelner Spielabschnitte unter Adonthell.

Abbildung 3: Die klassische 2D-Adventure-Oberfläche weckt Erinnerungen.

Abbildung 3: Die klassische 2D-Adventure-Oberfläche weckt Erinnerungen.

Abbildung 4: Der komfortable Dialogeditor mit grafischem Entscheidungsbaum.

Abbildung 4: Der komfortable Dialogeditor mit grafischem Entscheidungsbaum.

Abbildung 5: Entwurf einer Spielumgebung mit hervorgehobener Syntax.

Abbildung 5: Entwurf einer Spielumgebung mit hervorgehobener Syntax.

XBindkeys

Von Philippe Brochard stammt XBindkeys[9], das unter X11 Tasten mit Shell-Kommandos belegt. Häufig benötigte Programme wie beispielsweise E-Mail-Client, Browser oder ein X-Term starten so auf Tastendruck. Manche Window-Manager unterstützen von Haus aus die Zuordnung solcher Shortcuts, wobei allerdings nicht in allen Fällen auch alle Tasten frei wählbar sind.

Philippe selbst nutzt daher XBindkeys unter anderem dazu, den Rechner über die auf seinem Keyboard vorhandene Power-Taste herunterzufahren. Auch wer mal einen anderen Window-Manager ausprobiert, möchte dem Probanden die von ihm bevorzugten Shortcuts beibringen. XBindkeys löst beide Probleme und erlaubt es in Verbindung mit Philippes anderem Programm Move Mouse[10] zudem, den Mauszeiger per Tastendruck auf definierte Bildschirmpositionen zu setzen.

XBindkeys muss vor dem Window-Manager gestartet werden, um zu verhindern, dass dieser die Tastendrücke abfängt. Die Konfiguration erfolgt über ein selbsterklärendes Ascii-File oder alternativ mit Hilfe des Gtk-Frontends XBindkeys-Config (Abbildung 6) von Laurent Vuibert[11]. Sowohl XBindkeys wie auch Move Mouse sind in C geschrieben und stehen unter der GNU General Public License.

Abbildung 6: Der grafische Aufsatz XBindkeys-Config gestattet komfortable Shortcut-Verwaltung.

Abbildung 6: Der grafische Aufsatz XBindkeys-Config gestattet komfortable Shortcut-Verwaltung.

Access Road

Das Thema IT-Sicherheit ist in aller Munde, kennt man doch die Sicherheitslücken vieler Programme. Aber auch die Kombination fehlerfreier Programme kann zu neuen Sicherheitsproblemen führen. Zugriffsbeschränkungen sollen Missbrauch oder unbemerkte Veränderung von Daten ausschließen.

Unter besonderen Umständen können aber einzelne Nutzer in Netzwerkumgebungen verschiedene Benutzerkonten oder Zugänge ausnutzen und sich auf anderen Rechnern mit weiter reichenden Rechten einloggen. So können sie sich – auf Umwegen – Zugriff auf Daten und Programme verschaffen, der ihnen eigentlich verwehrt sein sollte. Jeglichen Zugriff unterbinden wäre aber gleichermaßen kontraproduktiv. Der risikobehaftete Königsweg: sinnvolle und notwendige Nutzung gestatten, Missbrauch aber weitgehend ausschließen.

Access Road[12] von Patrick Thazard visualisiert die komplexe Umgebung der Informationssysteme (Abbildung 7). Die Grafik zeigt, auf welchen Wegen oder Umwegen Benutzer Zugriff auf Programme und Dienste erlangen, die irgendwo im Netz zur Verfügung stehen. So sollen Sicherheitsprobleme aufgedeckt werden.

Das Java-Programm unterstützt bislang GNU/Linux- und Solaris-basierte Systeme sowie einfache Router. Weitere Pläne betreffen das Zusammenspiel zwischen GNU/Linux und Apache sowie zwischen Betriebssystemen und darauf laufenden Datenbankmanagement-Systemen; künftig auch die Modellierung von Systemen wie CORBA und Windows 2000/XP.

Patrick Thazard, der seit 1987 als Berater für Computersicherheit arbeitet, sucht Entwickler, die ihn bei seinem spannenden Projekt unterstützen.

Abbildung 7: Access Road visualisiert Zusammenhänge von Zugriffskontrollen sowie die zu schützenden Ressourcen.

Abbildung 7: Access Road visualisiert Zusammenhänge von Zugriffskontrollen sowie die zu schützenden Ressourcen.

GNU Cons

GNU Cons[13] ist eine Alternative zum etwas in die Jahre gekommenen GNU Make[14]. Wer je Software aus Sourcecode installiert oder den Linux-Kernel neu kompiliert hat, kennt das Kommando »make«. Es stammt allerdings noch aus der Zeit, in der es üblich war, Programme von Hand oder mit Skripten zu kompilieren. Was damals fortschrittlich war, wirkt heute wegen der komplizierten Syntax der Makefiles antiquiert. Entwickler behelfen sich gern damit, Makefiles von anderen Projekten zu kopieren und zu modifizieren oder gar durch Programme wie GNU Automake generieren zu lassen.

Make erkennt Modifikationen anhand des Zeitpunkts des letzten Dateizugriffs. Das führt dann zu Problemen, wenn ein Kompilierungsvorgang lediglich mit veränderten Optionen durchgeführt werden soll. GNU Cons, dessen Name sich von Construct ableitet, soll hier Abhilfe schaffen. Zentrale Komponente des Programms ist ein ausgefeilter Mechanismus, der Dateimodifikationen erkennt. GNU Cons verlässt sich hier nicht nur auf die Zugriffszeiten, sondern prüft auch die MD5-Signaturen.

Ein Beispiel für die Funktionalität von GNU Cons bietet folgendes Szenario: Das Programm Test besteht aus den Object Files »test1.o«, »test2.o« und »test3.o«. Nach Kompilieren des Programms wird »test2.o« bewusst korrumpiert. Ein erneuter Aufruf von GNU Cons führt dazu, dass »test2.o« neu kompiliert wird. Das Programm Test wird jedoch nicht neu gelinkt, da GNU Cons ebenfalls feststellt, dass die Version von »test2.o« identisch mit der zuvor verlinkten Version ist.

Ruft man GNU Cons mit anderen Compiler-Parametern auf, werden alle Programmteile neu kompiliert und gelinkt, da nicht nur die Ergebnisse verglichen werden, sondern auch die Parameter, die zu ihrer Erzeugung geführt haben.

Seit sich Bob Sidebotham aus dem Projekt zurück gezogen hat, wird GNU Cons von Rajesh Vaidheeswarran als Maintainer der stabilen Version und von Steven Knight als Maintainer der aktuellen Entwicklungsversion fortgeführt.

Das Perl-Programm läuft sowohl auf Windows als auch auf Unix-Derivaten. Die Konfigurationsdateien erlauben dynamische und komplexe Ausdrücke. GNU Cons ist in erster Linie darauf ausgelegt, die Programmierung unter C/C++ zu unterstützen. Johan Holmbergs »Cons::Plus«-Modul erlaubt es, auch andere Sprachen einzubinden .

SCons: Aus gleichem Hause

Die Namensähnlichkeit zwischen GNU Cons und SCons[15] ist kein Zufall, stammt doch dieses Projekt von einem der Maintainer des GNU-Cons-Projekts. Steven Knight hat SCons für den Software-Carpentry-Wettbewerb[16] im August 2000 entworfen. Das Design des Programms basiert zum großen Teil auf dem von GNU Cons und soll dessen Ideen mit den Möglichkeiten von Python kombinieren.

Auch SCons bietet überlegene Möglichkeiten, Modifikationen an den Dateien zu erkennen und Abhängigkeiten zwischen den einzelnen Files aufzulösen. Es benutzt aber Konfigurationsdateien, die auf Python basieren. Daneben unterstützt das Paket bereits parallele Kompilationen, bei denen die Anzahl der Threads über eine Kommandozeilenoption angegeben werden kann.

Die Releases des noch jungen Projekts erfolgen in sehr kurzen Abständen mit deutlichen Erweiterungen, die insbesondere auch funktionale Teile betreffen. Obwohl das Paket eine ausführliche Sammlung an Regression-Tests mitbringt, die die Abwärtskompatibilität und die Qualität sichern soll, kommt es gelegentlich noch zu Unebenheiten im praktischen Einsatz.

Geplante Erweiterungen sind Support für Java, C# und Fortran, Dokumentenerzeugung in mehreren Formaten (zum Beispiel PDF, Postscript, Tex) sowie Datei-Archivierung. Eine X11-artige Lizenz bietet zwar nicht mit der GPL vergleichbaren Freiheitsschutz, SCons ist aber trotzdem eindeutig freie Software und verdient somit Unterstützung und Hilfe bei der Entwicklung.

Schluss

So, das war die Brave GNU World für diesen Monat. Auf ein Programm in der nächsten Ausgabe freue ich mich jetzt schon: Es hat mein tägliches Leben deutlich vereinfacht und ich hoffe, es kann dasselbe für euch leisten. Bis dahin viel Spaß und spart bitte nicht mit Anregungen, Ideen, Kommentaren, Feedback und Projektvorstellungen – wie üblich per E-Mail an[1]. (fan)

Infos

[1] Ideen, Anregungen, Kommentare an die Brave GNU World: [column@brave-gnu-world.org]

[2] Homepage des GNU-Projekts: [http://www.gnu.org]

[3] Homepage von Georg’s Brave GNU World: [http://brave-gnu-world.org]

[4] “We run GNU”-Initiative: [http://www.gnu.org/brave-gnu-world/rungnu/rungnu.de.htm]

[5] Trophy-Homepage: [http://trophy.sourceforge.net]

[6] Adonthell-Homepage: [http://adonthell.linuxgames.com]

[7] OGG-Vorbis-Homepage: [http://www.xiph.org/ogg/vorbis]

[8] Mitmachen bei Adonthell: [http://adonthell.linuxgames.com/development/join.shtml]

[9] XBindkeys-Homepage: [http://hocwp.free.fr/xbindkeys/xbindkeys.de.html]

[10] Move-Mouse-Homepage: [http://hocwp.free.fr/movemouse.html]

[11] XBindkeys-Config-Homepage: [http://www.netchampagne.com/xbindkeys_config]

[12] Access-Road-Homepage: [http://accessroad.sourceforge.net]

[13] GNU-Cons-Homepage: [http://www.gnu.org/software/cons]

[14] GNU-Make-Homepage: [http://www.gnu.org/software/make]

[15] SCons-Homepage: [http://www.scons.org]

[16] Software-Carpentry-Projekt: [http://www.software-carpentry.com]

Der Autor

Dipl.-Phys. Georg C. F. Greve beschäftigt sich seit etlichen Jahren mit freier Software und kam früh zu GNU/Linux. Nach Mitarbeit im GNU-Projekt und seiner Aktivität als dessen europäischer Sprecher hat er die Free Software Foundation Europe initiiert, deren Präsident er ist. Mehr Informationen finden sich unter [http://www.gnuhh.org].

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben