[image of a Brave GNU World]
Brave GNU World - Ausgabe 37
Copyright © 2002 Georg C. F. Greve <greve@gnu.org>
Permission statement below.

[DE | EN | FR | IT | JA | ES | KO | PT]

Willkommen zu einer neuen Ausgabe der Brave GNU World mit einer Mischung von Projekten, die für den Großteil der Leserschaft zumindest ein oder zwei Anregungen bereithalten sollte.

Auch dieser Monat soll mit der Vorstellung eines Freien Spiels begonnen werden, von denen es offensichtlich eine bemerkenswerte Anzahl gibt.

Trophy

Andrew Mustun begann im März 2000 mit der Entwicklung von Trophy, [5] um die tote Phase nach der Aufgabe seines Informatik-Studiums zu überwinden. Trophy ist ein Autorennen im 2D Aufsichts-Modus, bei dem es nicht nur darum geht, schneller als der Rest ins Ziel zu kommen.

Genauer gesagt, geht es auch darum, überhaupt ins Ziel zu kommen, denn alle Autos sind in bester James Bond-Manier bewaffnet und auch bereit, diese Extras einzusetzen.

In der aktuellen Version ist Trophy dank solider Grafik und Soundeffekten bereits ein recht vollständiges Spiel, mit dem Freunde actionlastiger Unterhaltung auf ihre Kosten kommen dürften, wobei ein etwas leistungsfähigerer Rechner für sanftes Scrolling zu empfehlen ist.

Als Programmiersprache kam für Trophy C++ zum Einsatz und es wird von Andrew unter der GNU General Public License herausgegeben. Größte Schwachstelle ist vermutlich die noch fehlende Option zum Netzwerkspiel. Andrew plant, diese zu beseitigen, sobald er wieder Zeit für die Entwicklung findet, doch im Moment ist er mit seinem neu begonnenen Studium recht ausgelastet.

In der Vorbereitung dieses Features legte Andrew übrigens Wert auf die Feststellung, daß er ein friedliebendes Individuum sei, das Waffen generell ablehnt und Autos auch ohne Waffen bereits für sehr gefährlich hält; außerdem kann er mangels Führerschein im Alter von 25 Jahren noch immer kein reales Auto fahren.

Durch diese Überlegungen sollte sich jedoch niemand davon abhalten lassen, einen vergnüglichen Nachmittag mit Trophy zu verbringen. Wer zwischendurch in der Gestaltung von Rennstrecken kreative Entfaltung sucht, kann dies mit Hilfe von GIMP problemlos tun, eine Anleitung dazu findet sich auf der Trophy Homepage.

Sollte die Netzwerk-Unterstützung allzu schmerzlich vermißt werden, so steht es natürlich interessierten Entwicklerinnen frei, diese eigenhändig zu implementieren. Andrew wäre Hilfe in dieser Richtung ausdrücklich willkommen.

Adonthell

Das Adonthell Projekt [6] beschäftigt sich mit der Erstellung eines Freien 2D Rollenspiels im Stile der alten Konsolen wie z.B. der SNES, obwohl angestrebt ist, das Projekt in Sachen Freiheitsgrad und allgemeine Möglichkeiten sehr viel weiter zu gestalten.

Gerade Spiele bestehen zumeist aus zwei miteinander verbundenen, aber durchaus unabhängig voneinander zu betrachtenden Komponenten. Unmittelbar ersichtlich ist die Bedeutung des Inhalts, also der Story, der Grafiken, der Musik und des "Drumherums". Dazu kommt die technische Komponente, die z.B. die Darstellung und die Kommunikation mit dem Benutzer übernimmt, die sogenannte "Engine".

Eine brauchbare Analogie hierfür scheint die Situation von Programmen und Betriebssystem oder Partituren und Musikinstrumenten zu sein. Die Trennung erlaubt es letztlich, Spiele in abstrakter Form zu schreiben, wobei die Sprache und die Möglichkeiten durch die Engine bestimmt werden.

Das Adonthell Projekt entwickelt nicht ein Spiel, dessen Ablauf fest einprogrammiert ist, es entwickelt vielmehr eine Engine für Rollenspiele parallel mit abgeschlossenen Geschichten, die von dieser Engine interpretiert werden. Es ist für alle Releases angestrebt, daß sie nicht nur aus Codefragmenten, sondern auch aus kleinen, abgeschlossenen Spielen bestehen.

Bei einer gewissen Fluktuation besteht das ständige Team von Adonthell aus Kai Sterker, Alexandre Courbot, James Nash, Benjamin Walther-Franks, Joel Vennin, Joseph Toscano und Mike Nieforth. Dabei enthält diese Gruppe lediglich drei Programmierer, die Anderen sind Musiker, Grafiker oder Autoren. Aufgrund dieser Kombination, sowie der Tatsache, daß alle Mitglieder Wert darauf legen, sich einmal pro Jahr persönlich zu treffen, "fühlt" sich das Spiel bereits recht professionell an und gibt ein gutes Beispiel für eine lebendige Kooperation über das Internet.

Sowohl der Code als auch die Grafik von Adonthell unterstehen der GNU General Public License und für die Engine kam C++ zum Einsatz. Für die Spielsteuerung, Erweiterungen und das Skripting im Spiel wurde jedoch der Python-Interpreter in die Engine eingebettet. Daher ist es möglich, Spiele für die Adonthell-Engine zu entwerfen, ohne überhaupt mit C++ in Berührung zu kommen. Für die Musik im Spiel wird OGG Vorbis [7] verwendet.

Es wurde Wert darauf gelegt, Engine und Spiele soweit zu trennen, daß es möglich ist, diese unabhängig voneinander zu installieren. Um ein Adonthell-Spiel zu entwickeln, muß also lediglich die Engine installiert werden und dann kann mit Hilfe diverser Hilfsmittel wie Karten- und Dialogeditoren und ein wenig Python ein vollständiges Spiel entstehen.

Einen besonderen Reiz erhält dies durch die Arbeit der Adonthell-Gruppe an einer eigenen Welt mit ihrer eigenen Geschichte, Sitten und Gebräuchen, um den Spielen mehr Tiefe zu geben.

Laut Alexandre Courbot, der die Brave GNU World Fragen beantwortete, ist zunächst geplant, große Teile des Codes aufgrund gesammelter Erfahrung neu zu schreiben.

Für die Portierung auf andere Plattformen sucht das Adonthell-Team noch Unterstützung. Bisher wurde das Spiel auf GNU/Linux, FreeBSD, OpenBSD und BeOS getestet, doch langfristig wird angestrebt, es auch auf proprietären Systemen einsetzen zu können, um ihren Benutzern einen ersten Geschmack der Freiheit zu geben.

Intern geht die Entwicklung derweil in Richtung einer Client/Server basierten Architektur, um vernetztes Spielen zu ermöglichen. Auch wenn nicht geplant ist, extrem große Spielerzahlen zu unterstützen, sollte Adonthell dann in der Lage sein, einer mittleren Zahl von Spielern die Interaktion in einer persistenten Welt zu erlauben.

Seit seinen Anfängen im Jahre 1999 ist Adonthell bereits weit gekommen und die weitere Entwicklung darf mit Spannung erwartet werden. Den Ungeduldigen mit entsprechenden Fähigkeiten sei die Mitarbeit nahegelegt - das Adonthell-Team freut sich über jede Unterstützung. [8]

Alle Anderen können mit "Waste's Edge", der ersten Release, immerhin bereits ein bis zwei Nachmittage verbringen und sich auf mehr freuen.

XBindKeys

Von Philippe Brochard stammt das Programm XBindKeys [9], mit dem es möglich ist, unter X11 Tasten mit Shellkommandos zu belegen. Es wird also möglich, häufig benötigte Programme wie z.B. das Email-Programm, den Browser oder das XTerm ohne Umweg über das Menü durch eine einzige Tastenkombination aufzurufen. Wer sich einmal daran gewöhnt hat, diese Dinge machen zu können, auch ohne die Hände von der Tastatur zu nehmen, wird die Möglichkeit normalerweise nicht missen wollen.

Manche Window-Manager unterstützen die Belegung von Tasten nativ, allerdings sind dabei teilweise nicht alle Tasten frei belegbar, speziell wenn es sich um ungewöhnliche Tasten handelt, die nur auf manchen Keyboards vorhanden sind. Philip selber verwendet XBindKeys beispielsweise, um den Rechner über die bei ihm vorhandene "Power" Taste herunterfahren zu können.

Wer zudem gelegentlich andere Window-Manager ausprobiert, kennt auch das Problem, dem Neuen die favorisierten Kombinationen beizubringen.

XBindKeys löst beide Probleme und kann in Verbindung mit dem ebenfalls von Philippe geschriebenen Mini-Programm MoveMouse [10] auch dazu benutzt werden, die Maus per Tastendruck auf bestimmte Positionen zu bringen.

Sowohl XBindKeys wie auch MoveMouse wurden in C geschrieben und werden unter der GNU General Public License herausgegeben, da Philippe sie als seinen Beitrag zum GNU-System betrachtet.

Die Konfiguration von XBindKeys geschieht entweder über ein leicht verständliches ASCII-Konfigurationsfile oder das von Laurent Vuibert geschriebene GTK-Frontend XBindKeys-Config. [11]

Um Probleme zu vermeiden, sollte XBindKeys übrigens vor dem Windowmanager gestartet werden; das verhindert, daß Tastendrücke durch den Windowmanager abgefangen werden und XBindKeys nie erreichen.

Pläne für eine weitere Entwicklung gibt es momentan nicht, da XBindKeys stabil läuft und Philippe der Ansicht ist, es solle "klein aber oho" bleiben, um wahrhaft nützlich zu sein. Er bemüht sich also bewußt, dem so oft ausufernden "Featureismus" zu widerstehen.

Access Road

Das Thema IT-Sicherheit ist ohne Frage sowohl komplex wie auch wichtig. Das Wissen um die Fehlerhaftigkeit von Programmen ist mittlerweile allgemein verbreitet, doch wird dabei gerne übersehen, daß auch die gewollte Kombination fehlerfreier Programme in ihrer Vernetzung Sicherheitsprobleme erzeugen kann.

Komplexe Umgebungen und Aufgaben benötigen teilweise sehr komplexe und unübersichtliche Informationssysteme. Bestehen keinerlei Zugriffsbeschränkungen, könnten Daten mißbraucht oder unbemerkt verändert werden. Denkt man beispielsweise an computergestützte Krankenhäuser, so wird die Problematik unmittelbar deutlich. Das Gegenteil, die vollständige Verhinderung des Zugriffs, ist ebenfalls wenig sinnvoll, da die Erfüllung der betreffenden Aufgabe damit effektiv unmöglich wird.

Es geht also darum, das System so zu gestalten, daß die sinnvolle und notwendige Nutzung möglich, die mißbräuchliche Nutzung aber unmöglich wird.

Da die Konzeption solcher Systeme durch den Menschen geschieht, besteht immer auch das Risiko von Fehlern. Access Road [12] von Patrick Thazard versucht, die komplexe Umgebung der Informationssysteme zu modellieren und für den Administrator zu visualisieren. Auf diese Art und Weise wird die Sicherheit zwar nicht unmittelbar gesteigert, es hilft dem Administrator jedoch möglicherweise, Sicherheitsprobleme zu entdecken, die sonst unerkannt geblieben wären.

Patrick Thazard arbeitet selber seit 1987 als Berater auf dem Gebiet der Computersicherheit und hat Access Road in Java geschrieben und unter der GNU General Public License veröffentlicht, für die Dokumentation wählte er die GNU Free Documentation License.

In der aktuellen Version unterstützt Access Road GNU/Linux-artige Systeme, einfache Router sowie Solaris-artige Systeme. Obwohl es keinen Daten-Update gegeben hat, ist Patrick überzeugt, daß bereits eine für andere Entwickler recht brauchbare Struktur vorhanden ist.

Die weiteren Pläne sehen vor, zunächst die Interaktionen zwischen GNU/Linux und Apache sowie zwischen Betriebssystemen und darauf laufenden Datenbank-Management-Systemen aufzunehmen. Auf lange Sicht sollen Erweiterungen zur Modellierung von Systemen wie z.B. CORBA oder auch Windows 2000/XP das System vervollständigen.

Bis dahin ist noch viel zu tun und Patrick sucht andere Entwickler, die ihm bei der weiteren Entwicklung helfen. Auch wenn der Ansatz der grafischen Modellierung prinzipiell einige Gefahren birgt, so ist dieses Projekt doch durchaus spannend und außergewöhnlich; hier bietet sich die Möglichkeit, neue Wege auszuloten.

GNU Cons

GNU Cons [13] bietet eine Alternative zu dem mittlerweile etwas in die Jahre gekommenen GNU Make. [14] Wer jemals Software als Sourcecode heruntergeladen und installiert oder auch nur den Linux-Kernel neu kompiliert hat, wird mit GNU Make bereits über das Kommando "make" in Kontakt gekommen sein.

Make stammt noch aus einer Zeit, in der es üblich war, Programme von Hand bzw. mit Bash-Shellskripten zu kompilieren und stellte im Vergleich dazu einen bemerkenswerten Fortschritt dar. Wer allerdings versucht, selber Makefiles zu schreiben, wird schnell feststellen, daß die Syntax recht umständlich ist und die meisten Entwickler behelfen sich daher damit, Makefiles von anderen Projekten zu kopieren & modifizieren, oder Makefiles durch Programme wie GNU Automake generieren zu lassen.

Dazu kommen die Probleme, daß Make Modifikationen lediglich anhand der Zeit des letzten Zugriffs auf ein File zu erkennen sucht, was problematisch ist und spätestens dann fehlschlägt, wenn veränderte Optionen für die Kompilation gewünscht werden.

Der Name von GNU Cons leitet sich davon ab, daß mit seiner Hilfe Programme "Cons-struiert" werden können, und es versucht, die Aufgaben von GNU Make so zu übernehmen, wie sie idealerweise wahrgenommen werden sollten.

Eine zentrale Komponente ist dabei ein sehr ausgefeilter Mechanismus zur Feststellung, ob ein File modifiziert wurde - hierzu verläßt sich GNU Cons nicht ausschließlich auf die Zugriffszeiten, sondern auch auf die MD5-Signaturen der Files, die eine sehr gute Identifikation erlauben.

Ein Beispiel für diese Fähigkeiten ist das Verhalten von GNU Cons in folgendem Szenario: Das Programm "test" besteht aus den Objektfiles "test1.o", "test2.o" und "test3.o".

Nach der Kompilation des Programmes wird nun das Objektfile "test2.o" bewußt korrumpiert/beschädigt. Ein erneuter Aufruf von GNU Cons führt dazu, daß "test2.o" neu kompiliert wird, das Programm "test" wird jedoch nicht neu gelinkt, da GNU Cons ebenfalls feststellt, daß die Version von "test2.o" identisch mit der zuvor verlinkten Version ist.

Würde GNU Cons jedoch mit anderen Kompiler-Parametern aufgerufen, so werden alle Programmteile neu kompiliert und gelinkt, da nicht nur die Ergebnisse von GNU Cons verglichen werden, sondern auch die Parameter, die zu ihrer Erzeugung geführt haben.

Geschrieben wurde GNU Cons in Perl von Bob Sidebotham, der sich mittlerweile zurückgezogen hat. Für ihn haben Rajesh Vaidheeswarran als Maintainer der stabilen Version und Steven Knight als Maintainer der aktuellen Entwicklungsversion übernommen. Als Teil des GNU-Projekts wird GNU Cons unter der GNU General Public License herausgegeben.

Durch die Verwendung von Perl läuft GNU Cons sowohl auf Windows wie auch auf Unix-Derivaten und es erlaubt in seinen Konfigurationsfiles, dem Äquivalent der bisher weit verbreiteten "Makefiles", auch die Verwendung von sehr dynamischen und komplexen Ausdrücken, um das Programm optimal an das aktuelle System anzupassen.

GNU Cons ist voll einsatzfähig, wenn es auch etwas C/C++-lastig ist. Andere Programmiersprachen können über das Cons::Plus Modul von Johan Holmberg eingebunden werden. Außerdem sind die Konfigurationsfiles natürlich recht Perl-dominiert, was nicht überall auf Begeisterung stößt.

Besonderen Dank möchte ich übrigens dem GNU Cons Team für die außerordentlich gründliche Beantwortung der Fragen aussprechen.

Rajesh Vaidheeswarran und Erich Waelde haben große Mengen an Informationen mit vielen Beispielen beigesteuert, was mich sehr gefreut hat, auch wenn aus Platzgründen nur ein sehr kleiner Teil der Informationen hier Erwähnung finden konnten. Es steht zu hoffen, daß es gelungen ist, die wesentlichen Aspekte so wiederzugeben, daß sie sich dem interessierten Entwickler erschließen.

SCons

Die Namensähnlichkeit zwischen GNU Cons und SCons [15] ist kein Zufall. Das Design von SCons basiert größtenteils auf dem Design von GNU Cons und wurde im August 2000 von Steven Knight, dem Maintainer der aktuellen GNU Cons Entwicklungsversion, für den Software Carpentry-Wettbewerb entworfen.

Nachdem er bereits eine Weile als Maintainer für Cons aktiv war, verfolgte er für den Software Carpentry Wettbewerb das Ziel, die Ideen von Cons mit den Möglichkeiten von Python zu kombinieren.

Auf dieser Arbeit basiert SCons, welches ähnlich wie Cons überlegene Möglichkeiten zur Erkennung von Modifikationen und Auflösung von Abhängigkeiten bereitstellt, doch den Vorteil hat, daß die Konfigurationsfiles auf Python basieren. Darüberhinaus unterstützt SCons bereits jetzt parallele Kompilationen, bei denen die Anzahl der Threads über eine Kommandozeilenoption angegeben werden kann.

SCons ist ein noch sehr junges Projekt, die erste Alpha-Version erschien am 13. Dezember 2001. Daher gibt es momentan Releases in sehr kurzen Abständen, die häufig auch deutliche funktionale Erweiterungen beinhalten. Auch wenn das Projekt von Anfang an mit einer starken regressiven Test-Infrastruktur arbeitete, um die Rückwärtskompatibilität und Qualität zu sichern, kann es also im praktischen Einsatz noch zu Unebenheiten kommen.

Die Liste der geplanten Erweiterungen ist demzufolge noch recht lang und enthält unter Anderem einen standardmäßig guten Support für Java, C# und Fortran, Dokumentenerzeugung in mehreren Formaten (PDF, PostScript, TeX, usw.) und File-Archivierung.

Veröffentlicht wird SCons unter einer X11-artigen Lizenz, die die Freiheit bekanntlich nicht schützt. Für die langfristige Perspektive wäre die GPL vermutlich die bessere Wahl gewesen, jedoch qualifiziert sich SCons eindeutig als Freie Software und Interessenten kann der Einsatz bzw. die Mitwirkung nur empfohlen werden.

Schluß

So, das war die Brave GNU World für diesen Monat, für die nächste Ausgabe liegt bereits ein Projekt bereit, auf dessen Vorstellung ich mich sehr freue, hat es doch mein tägliches Leben deutlich vereinfacht und ich hoffe, es wird dasselbe auch für Euch tun.

Bis dahin viel Spaß und bitte spart nicht mit Anregungen, Ideen, Kommentaren, Feedback und Projektvorstellungen, wie üblich per Email. [1]

Info
[1] Ideen, Anregungen, Kommentare an die Brave GNU World: column@brave-gnu-world.org
[2] Homepage des GNU-Projektes: 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.en.html
[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] MoveMouse 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

[ previous issue | Brave GNU World home | next issue ]

Return to GNU's home page.

Please send FSF & GNU inquiries & questions to gnu@gnu.org.
There are also other ways to contact the FSF.

Please send comments on Georg's Brave GNU World (in English or German) to column@gnu.org,
send comments on these web pages to webmasters@www.gnu.org,
send other questions to gnu@gnu.org.

Copyright (C) 2001 Georg C. F. Greve

Permission is granted to make and distribute verbatim copies of this transcript as long as the copyright and this permission notice appear.

Last modified: Mon Dec 17 12:42:31 CET 2001