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

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

Willkommen zu einer weiteren Ausgabe von Georg's Brave GNU World. In Ausgabe 31 [5] wurde FreeCIV vorgestellt und ich bat um weitere Beispiele für Freie Spiele. Die Resonanz war sehr gut und hier sollen nun einige Spiele verschiedener Genres als Ergebnis des Aufrufs vorgestellt werden.

BZFlag

Die Handlung des ersten Spiels dieser Ausgabe, BZFlag [6], ist schnell erklärt. Jeder Spieler fährt in einem Panzer durch eine 3D-Landschaft, um seine Mitspieler abzuschießen und gegnerische Fahnen oder auch Zusatzausrüstung einzusammeln. Es handelt sich also um ein klassisches "Shoot-Em-Up" Spiel für mehrere Teilnehmer, die über Internet oder LAN gegeneinander antreten können.

Seinen Ursprung nahm BZFlag im "Program of Computer Graphics" der Cornell University, wo Chris Schoenemann es 1992 als Möglichkeit entdeckte, der Arbeit an seiner Diplomarbeit zu entgehen. In der Zusammenarbeit mit anderen Studenten entwickelte sich BZFlag sehr schnell und wurde zur bevorzugten Methode, die Zeit totzuschlagen.

Geschrieben wurde das Spiel anfangs für HP-UX Workstations unter Verwendung einer iris-gl artigen Grafikbibliothek, doch für den dritten "SGI Indizone Contest" schrieb Chris es komplett neu, verbesserte die Grafik und fügte Sound hinzu. BZFlag gewann den Wettbewerb in seiner Kategorie. Nach mehreren Verbesserungen portierte Chris es schleißlich auf GNU/Linux und Win32, um es dann als Freie Software unter der GNU General Public License herauszugeben.

Mittlerweile hat Tim Riker als Maintainer von BZFlag übernommen und entwickelt es gemeinsam mit mehr als einem Dutzend anderer Entwickler auf SourceForge weiter. Dort hat es mehrfach den Sprung in die Top-Ten der aktivsten Projekte geschafft.

Nach Ansicht von Chris ist vor allem das sehr gute Gameplay sowie die ausgewogene Spieldynamik eine Stärke von BZFlag. Die Vorwärts-, Rotations-, Schuß- und Nachladegeschwindigkeit der Panzer ist so eingestellt, daß Duelle zwischen zwei erfahrenen Spielern schnell zu einem komplizierten Tanz werden können, bei denen ein kleiner taktischer Fehler den Ausschlag geben kann.

Die Kommentare auf der Homepage scheinen dies zu bestätigen, wird BZFlag doch scheinbar sogar im "U.S. Army Combat Maneuver Training Center" gerne gespielt.

Zu den problematischen Aspekten von BZFlag zählt vor allem der Netzwerk-Code. Ursprünglich ist das Spiel für lokale Netzwerke (LAN) entwickelt worden, auf denen es schnell veränderliche Informationen wie die Positionen der Panzer zwischen den Spielern über Broadcast oder Multicast übertrug und die Kommunikation mit dem Server über TCP geschah, damit Informationen über eingesammelte Fahnen u.Ä. nicht verloren gingen.

Zur Ermöglichung des Internet-Spiels wurden dann die UDP-Pakete ebenfalls durch die TCP-Verbindung übertragen, was zum Teil zu erheblichen Timingproblemen führte. Mittlerweile werden UDP-Pakete vom Server per UDP übertragen, doch soll letztlich komplett auf TCP verzichtet werden, da es dazu neigt, bei Übertragungsproblemen die Verbindung zu blockieren.

Für die nächste Release wird angestrebt, die durch das Netzwerk verursachten Latenzprobleme zu verringern, ein paar Fehler zu beseitigen und "Anti-Schummel-Code" hinzuzufügen. Auf längere Sicht kann auch die Grafikengine mittlerweile eine Überholung vertragen und es sollen noch weitere Spielmodi hinzukommen.

Hilfe wäre dabei vor allem bei dem Macintosh-Port erwünscht, der nach Ansicht von Chris nicht so recht von der Stelle zu kommen scheint. Außerdem gibt es neben der Verbesserung der Netzwerkprotokolle noch etliche andere Möglichkeiten, bei BZFlag aktiv zu werden. So sind die Zusatzfähigkeiten, Grafik, künstliche Intelligenz der Computergegner und das physikalische Modell Aspekte, an denen immer gearbeitet werden kann.

Arkanae

Bei dem zweiten Spiel handelt es sich um einen Vertreter des Rollenspiel-Genres. In Arkanae [7] übernimmt die Spielerin die Rolle eines Helden, der eine Welt retten muß, in der sieben übermächtige Wesen, die "Arkanzen", einstmals zum Wohle der Menschheit mit Hilfe eines Kristalls eingesperrt, nun wieder Unheil stiften.

Das Spiel zeichnet sich durch eine überraschend gute 3D Grafik aus und legt viel Wert auf einen nichtlinearen Spielverlauf. So bleibt es dem Spieler überlassen, sich für das Gute oder Böse einzusetzen und auf vielfältige Art und Weise die verborgenen Schätze zu finden, Questen zu lösen und Monster zu bekämpfen.

Geschrieben wurde das Spiel in Java, wobei es auf die eigens für Akanae geschriebene opale.soya [8] Java 3D Engine zurückgreift, die es erlaubt, auch eventuell vorhandene 3D Hardware-Beschleunigung einzusetzen.

Diese Engine wird nun übrigens auch vom Fraunhofer Institut zur 3D Visualisierung in der Biomodellierung für das M3 Projekt ("Man Model Measurement") eingesetzt.

Durch Verwendung von Java wird das Spiel einerseits relativ plattformunabhängig und läuft auf GNU/Linux, Mac OS X und Windows, doch gleichzeitig besitzt es die üblichen Java-Probleme.

So ist die Installation der richtigen Java-Version oft ein Glücksspiel und zudem gibt es noch keine Freie Java-Implementation, die den vollen Leistungsumfang bietet. Arkanae ist beispielsweise auf die Sun JVM 1.3 oder BlackDown angewiesen, die beide nicht Freie Software sind.

Damit befindet sich Arkanae, das selber unter der GNU General Public License als Freie Software verfügbar ist, in Abhängigkeit von einer proprietären Plattform, die zudem für technische Probleme anfällig ist.

Auch wenn dies bei einem Spiel weniger kritisch sein mag, zeigt es doch, daß die Freie Software Community mehr Wert darauf legen sollte, die Freien Java-Implementationen voranzubringen, oder aber auf Java zu verzichten. Da die Idee von Java durchaus sinnvoll ist, wäre es sicherlich besser, die Freien Alternativen zu stärken, ein Einstieg findet sich auf der "GNU und Java" Homepage [9].

Dennoch sollte sich der geneigte Spieler durch diesen Wermutstropfen nicht den Spaß am Spiel vergällen lassen, denn Arkanae hat einiges zu bieten und ist bereits recht ausgereift sowie für Französisch, Englisch, Deutsch und Italienisch internationalisiert.

Das Problemkind ist momentan die Windows-Plattform, auf der das Keyboard Management sowie die Musik aufgrund mangelnder Thread-Unterstützung nicht einwandfrei funktionieren.

Die Autoren, Bertrand Lamy, Jean-Baptiste Lamy und Althea Chia, planen Arkanae bald fertigzustellen und das Szenario abzuschließen. Für die Zukunft plant Bertrand, ein weiteres Spiel zu schreiben und bereitet momentan eine 3D-Engine in C vor. Jean-Baptiste hat Python für sich entdeckt und brennt darauf, darin Projekte zu verwirklichen.

Hilfe an Arkanae ist vor allem in Form weiterer Level erwünscht. Es gibt für diese Zwecke einen Level-Editor, der zwar recht schwierig zu bedienen ist, doch Bertrand ist gerne bereit, Interessenten in die Benutzung einzuweisen.

Damit genug der Worte, Fans von Rollenspielen sollten einfach mal einen Blick riskieren.

XShipWars

Wer in frühen Jahren die Raumkampfsimulation Elite gerne gespielt hat, dürfte sich für XShipWars [10] begeistern können. Die Spielerin übernimmt auch hier die Rolle einer Raumschiffkapitänin und muß sich in einem großen Universum durch Diplomatie, Handel und kriegerische Auseinandersetzungen behaupten.

Das Spiel besteht im Wesentlichen aus einem Client und einem Server. Der Server betreut das Universum und erlaubt den Clients, mit dem Universum und anderen Spielern zu interagieren. Dabei entsteht letztlich jedes Universum durch die Interaktion der Spieler. Spieler mit speziellen Privilegien können neue Objekte kreieren und das Universum gestalten. Zusätzlich gibt es Module für den Server, die es erlauben, computergesteuerte Schiffe mit künstlicher Intelligenz (AI) auszustatten. Je nach Zugehörigkeit zu den verschiedenen Imperien können diese Schiffe den Spielern helfen oder sie angreifen.

Das Spiel begann 1995/1996 als rein textbasiertes Projekt "ShipWars" und wurde 1998 grafisch. War die textbasierte Version ursprünglich in Fortran geschrieben, wird mittlerweile ausschließlich C/C++ eingesetzt. Entwickelt wurde (X)ShipWars von Wolfpack Entertainment, einem losen Zusammenschluß von Computergrafik-Spezialisten und Programmierern, die es nach eigenen Angaben "irgendwie geschafft haben, 5 Jahre gemeinsam an diesem Projekt zu arbeiten" und es unter der GNU General Public License herauszugeben.

Sozusagen als Nebenprodukte der Arbeit an XShipWars entstanden dabei zwei Projekte, die auch außerhalb von XShipWars eingesetzt werden. Die libjsw Bibliothek [11] dient der Joystick-Abfrage und YIFF [12] ist ein Audio-Server, der speziell auf die Bedürftnisse von Spielen zugeschnitten ist. Zu dieser Zeit war an GTK und ESD noch nicht zu denken.

Taura Milana, die die Fragen zu XShipWars beantwortete, betrachtet als Schwächen von XShipWars, daß die grafischen Effekte nicht ganz mit dem augenblicklich im Handel üblichen Standard mithalten können, da es für schnelles und verzögerungsarmes Spielen geschrieben wurde. Außerdem könnten einige Entscheidungen im Nahkampf einen Anfänger zunächst überfordern.

Ansonsten ist XShipWars sehr ausgereift und stabil, besonders die Balance zwischen Action und Strategie erscheint Taura einzigartig. Die aktuelle Entwicklung von XShipWars bezieht sich daher eher auf neue Spielereien als echt funktionale Erweiterungen.

Die interessanteren Pläne für die Zukunft von XShipWars gehen in Richtung "ShipWars 3D", der dritten Generation des Spiels. Hierfür ist eine komplette Neuimplementation mit Hilfe von OpenGL und moderneren Techniken angedacht.

Doch wer sich gerne ins Getümmel stürzen möchte, muß nicht so lange warten, denn auch ohne OpenGL-Unterstützung macht XShipWars viel Spaß.

Das größte XShipWars Universum ist im Moment übrigens "Terminus" [13] von Stein Vrale. Durch die Begeisterung der XShipWars-Gemeinschaft ist hier ein Universum entstanden, auf dem jedes System, jeder Planet und jedes Schiff einzigartig ist, es gibt keine Wiederholungen. Die Spieler haben vielfältige Möglichkeiten, auf Entdeckungsreise zu gehen, Handel zu treiben und ihre Schiffe aufzurüsten.

Damit genug der Spiele für diesen Monat. Auch in den nächsten Ausgaben sollen weitere Optionen zur Beschäftigung mit Freier Software in langen Winternächte vorgestellt werden, wer daher noch interessante Spiele kennt oder gar selber an ihnen schreibt, den bitte ich, sich bei mir zu melden [1].

TRAMP

Das TRAMP ("Transparent Remote (file) Access, Multiple Protocol") Projekt [14] dürfte für viele Emacs-Nutzer interessant sein. Es handelt sich dabei um ein Ange-FTP ähnliches Emacs Add-On unter der GNU GPL von Kai Großjohann.

Oft stellt sich die Aufgabe, ein File zu editieren, welches sich auf einem anderen Rechner befindet. Ange-FTP erlaubt es, dieses File per FTP zu übertragen, ändern und an seinen Ursprungsort zurückzutransferieren.

Im Gegensatz dazu unterstützt TRAMP Shell-basierte Übertragungsverfahren, wie z.B. ssh, telnet und rlogin, aber auch su und sudo. TRAMP ist erweiterbar angelegt, wenn also noch weitere Wege eines Shell-Zugriffs auf andere Rechner existieren, können diese vermutlich recht schnell in TRAMP integriert werden.

Über die Shell-Verbindung wird herausgefunden, ob ein File existiert, wie seine Berechtigungen sind, u.Ä. Für die eigentliche Arbeit gibt es zwei Methoden. Einerseits können die Files direkt durch die Shell-Verbindung bearbeitet werden, dies ist die sogenannte "inline" Methode; oder aber das File wird auf den lokalen Rechner übertragen und lokal verändert. Letztere Methode ist vegleichbar mit der Funktionsweise von Ange-FTP und wird von Kai auch als "out of band" bezeichnet.

Zusätzlich verfügt TRAMP über limitierte Funktionalität, Shell-Kommandos auf anderen Rechnern auszuführen. Dies dient z.B. der Integration mit den "Version Control" (VC) Mechanismen, so daß ein File unter CVS-Kontrolle durch TRAMP auf einem anderen Rechner editiert und mit der üblichen 'C-x v v' Tastenkombination an das Repository übergeben werden kann.

Prinzipiell ist es möglich, mit TRAMP auch unter Windows Files auf einem Unix-Rechner zu editieren, allerdings scheint die Konfiguration nicht so einfach zu sein, da u.A. eine bestimmte Version der ssh erforderlich ist. Genaue Anweisungen hat Kai hierfür im Moment leider nicht parat, wer hierzu mehr sagen kann, sei aufgefordert, sich an ihn zu wenden.

Der umgekehrte Fall - das Editieren von Files auf einem Windows Rechner - ist deutlich schwieriger zu realisiern, da TRAMP eine Unix-artige Umgebung auf dem Zielrechner voraussetzt.

Um möglichst stabil zu sein, versucht TRAMP immer, über mehrere Methoden den Status eines Files festzustellen, da die verschiedenen Unix-Implementationen hier z.T. erhebliche Unterschiede aufweisen. Es sind im Unix-Umfeld daher eigentlich keine Probleme zu erwarten.

TRAMP hatte bereits eine bewegte Vergangenheit, so hieß es in früheren Versionen rssh.el und später rcp.el. Augenblicklich arbeitet Daniel Pittman an einer Reimplementation von TRAMP, die von Kai sehr begrüßt wird und für die Zukunft wird angestrebt, auch asynchrone und interaktive Shell-Kommandos zu unterstützen sowie das Setup der Verbindungen noch intelligenter zu gestalten.

Zudem möchte Kai gerne das Copyright-Assignment für die Free Software Foundation vollenden, damit TRAMP dann auch zum offiziellen Teil des GNU Emacs werden kann.

Kopi

Das Kopi-Projekt [15] der "Decision Management Systems GmbH" (DMS) stellt eine Entwicklungsumgebung für Datenbankanwendungen mit Java, JDBC und JFC/Swing zur Verfügung.

KJC, der Compiler und das Flaggschiff des Projekts ist nach Wissen von Thomas Graf, dem Kopi-Projektmanager, der einzige Freie Java-Compiler, der selber in Java geschrieben wurde und eine komplette Unterstützung der neuesten Java-Spezifikation bietet.

Die Kopi Umgebung bietet darüberhinaus einen Assembler & Disassembler für die Java Virtual Machine (JVM), eine Bibliothek zur Bearbeitung und Generierung von JVM Klassenfiles sowie XKJC, einem Compiler für embedded SQL in Java. Abgerundet wird das Projekt durch "Visual Kopi", ein Applikation-Framework, mit dem sich Datenbankapplikationen in einer speziellen Hochsprache erstellen lassen.

Die Stärken von Kopi sieht Thomas Graf in der hohen Qualität und Schnelligkeit des KJC, der mit der Jacks Testumgebung ("Jacks is an Automated Compiler Killing Suite") sogar die Compiler von Sun (Javac) und IBM (Jikes) schlägt. Für Liebhaber harter Zahlen: nach Angaben des Kopi-Teams führt der KJC im Client/Server-Mode die Jacks Testumgebung (1845 Compilationen) auf einem 1GHz Athlon unter RedHat GNU/Linux 7.1 in weniger als 37 Sekunden aus.

Zudem verfügt der KJC über vollständige diagnostische Meldungen verschiedener Arten, die auf gefährlichen, bzw. redundanten Code, auf "schmutzige", veraltete oder unleserliche Syntax oder auch auf mögliche Optimierungen hinweisen. Auf diese Art und Weise wird es dem Entwickler erleichter, den Code zu pflegen.

Weitere Pläne beinhalten, Kopi auf dem laufenden Stand zu halten, dafür hat sich DMS u.A. der Dienste von Martin Lackner versichert, der etliche Erweiterungen der anstehenden Java 1.4 Spezifikation in seiner Diplomarbeit an der TU Wien entwickelt hat. Außerdem soll es bald den "Developers Guide" für Visual Kopi geben, der momentan von Mamisoa Rajosvah geschrieben wird.

Ähnlich wie bei der GNU Compiler Collection (GCC) stehen die Kopi Laufzeitbibliotheken under GNU Lesser General Public License, während der Rest unter der GNU General Public License herausgegeben wird.

Zum Abschluß möchte ich noch zwei kleine, aber feine Projekte vorstellen.

CDArgs

CDArgs [16] ist eine Erweiterung des 'cd' Kommandos der Shell, das von Stefan Kamphausen in C++ geschrieben wurde.

CDArgs erweitert das 'cd' Kommando um Bookmarks sowie einen einfachen Verzeichnis-Browser. Außerdem verfügt es über ein integriertes Interface zur Verwaltung der Bookmarks, die als Zeilen in einem ASCII-File gespeichert werden, so daß sie auch anders editiert werden können.

Angeregt wurde er zu diesem Projekt durch einen Artikel in der iX, in dem ein Perl-Skript von Michael Schilli ähnliche, wenn auch nicht so umfangreiche, Funktionen implementierte. Da dieses Skript zudem unter einer unschönen Lizenz stand, hat Stefan die Idee aufgegriffen und es kurzerhand unter der GNU General Public License mit einigen Erweiterungen neu implementiert.

An der Weiterentwicklung in Richtung Internationalisierung, Dokumentation, Portabilität, Case-insensitive pattern matching und konfigurierbarer Keymaps beteiligen sich u.A. Claus Brunzema sowie Tomi Ollila. Neue Versionen sind also recht bald zu erwarten.

CDLoop

Von Claus Brunzema stammt auch das CDLoop [17] Projekt, bei dem es sich um einen CD-Spieler mit speziellen Schleifenfunktionen handelt. Zielgruppe des Projekts sind vor allem Musiker, die bestimmte Teile einer CD in Notenform niederschreiben oder aber mitspielen wollen.

Normalerweise können die AB Schleifenmarkierungen nach dem Setzen nicht mehr verschoben werden und es kommt darauf an, in genau dem richtigen Moment auf den Knopf zu drücken. CDLoop erlaubt jedoch die Marken beliebig zu justieren und auch als Bookmarks zu speichern.

Geschrieben wurde CDLoop in C++ und guile mit guile-gtk als grafischem Toolkit und es ist unter der Version 2 der GNU General Public License verfügbar.

Dank guile ist es übrigens möglich, CDLoop nahezu beliebig zu konfigurieren und zu programmieren, also sind auch ausgefallenere Anwendungen möglich.

Das soll es gewesen sein...

Eine Frage, die in letzter Zeit häufiger an mich herangetragen wurde, ist: "Mit wieviel Öffentlichkeit kann ich durch ein Brave GNU World Feature rechnen"? Leider gibt es darauf keine definitive Antwort.

Von den meisten Projekten erhalte ich keinerlei Informationen darüber, ob sich das Interesse merklich verstärkt hat, auch wenn es schon vorgekommen ist, daß begeisterte Mails eintrafen, in denen Autoren davon berichteten, daß das Interesse an ihren Projekte sprungartig gestiegen ist - teilweise machten die Besucherzahlen Sprünge von einigen hundert auf mehrere tausend.

Dennoch gibt es keine wirklich verläßlichen Zahlen, die ich anbieten kann. Hinzu kommt auch, daß die Brave GNU World sukzessive in den verschiedenen Medien erscheint - teilweise erst 2 Monate nach dem ersten Erscheinen auf dem Netz.

Allerdings glaube ich, daß ein Feature in der Brave GNU World durchaus Aufsehen erregt und Verbindungen herstellt, die sonst nicht so ohne Weiteres entstanden wären. In diesem Sinne bitte ich auch dieses Mal wieder um Fragen, Anregungen, Ideen, Kommentare und Projektvorstellungen an die bekannte Adresse. [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] Brave GNU World - Ausgabe 31 http://www.gnu.org/brave-gnu-world/issue-31.de.html
[6] BZFlag Homepage: http://bzflag.org
[7] Arkanae Homepage: http://arkanae.tuxfamily.org
[8] opale.soya Java 3D Engine: http://opale.soya.tuxfamily.org/
[9] GNU und Java Homepage: http://www.gnu.org/software/java/
[10] XShipWars Homepage: http://wolfpack.twu.net/ShipWars/XShipWars/
[11] libjsw Homepage: http://wolfpack.twu.net/libjsw/
[12] YIFF Homepage: http://wolfpack.twu.net/yiff/
[13] Terminus XShipWars Universum http://xsw.terminator.net
[14] TRAMP Homepage: http://tramp.sourceforge.net
[15] Kopi Homepage: http://www.dms.at/kopi/
[16] CDArgs Homepage: http://www.skamphausen.de/software/cdargs/
[17] CDLoop Homepage: http://www.cbrunzema.de/software.html#cdloop

[ 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