Floyd

Let Floyd launch the spacetruck? Please? Floyd has not crashed a truck in over two weeks!
-- Steve Meretzky, Stationfall

Floyd ist eine plattformunabhängige Sprache für die Entwicklung von Adventurespielen. Mit Adventurespielen ist dabei die klassische Variante der Textadventures gemeint, die vom Spieler durch Eingabe einfacher Kommandos und Sätze gesteuert werden. Diese Spiele sind kommerziell seit gut zwanzig Jahren ausgestorben. Im Netz findet sich aber immer noch eine große, meist englischsprachige Anhängerschaft, die viele neue Spiele entwickelt und spielt.

Wie alle anderen Spiele lassen sich auch Adventures mit einer normalen Programmiersprache wie C oder Java schreiben. Dabei müßte aber erst viel Code geschrieben werden, um die in jedem Adventure vorkommenden Aufgaben wie die Verarbeitung der Spielereingabe, die Simulation einer Spielwelt oder das Speichern und Laden von Spielständen zu erledigen.

Floyd nimmt dem Autor solche Routinearbeit ab und hilft ihm, sich auf die Umsetzung der Handlung zu konzentrieren. Floyd kann mit Spielereingaben umgehen, in denen mehrere Objekte oder Wörter wie "alle" und "außer" vorkommen. Eingaben können korrigiert oder rückgängig gemacht werden. In der Spielwelt können Räume, Verbindungen, Nichtspielercharaktere, Behälter, Fahrzeuge und viele weitere Objekte vorkommen, deren Verhalten sich leicht bestimmen läßt. Die Ein- und Ausgabe unterstützt Floyd mit Skripten, Menüs, Textfenstern und Grafiken.

Floyd verfügt über eine Standardbibliothek, in der wichtige Objekte der Spielwelt und einige nützliche Funktionen vordefiniert sind. Die Standardbibliothek besteht aus mehreren Quelltextdateien und läßt sich anpassen und erweitern.

2010 wurde im Rahmen des Grand Prix 2010 eine neue Version von Floyd veröffentlicht. Sie stellt eine vollständige Neuimplementierung des bisher nur für Windows verfügbaren Interpreters dar und läuft auf allen Java-fähigen Systemen.

Download

Den Interpreter gibt es als plattformunabhängige Jar-Datei (973 KB), die auf jedem Java-fähigen PC oder Mac ausgeführt werden kann. Alternativ gibt es auch Programmdateien für Windows (1,9 MB) und Mac (4,7 MB).

Der Floyd-Interpreter setzt mindestens Java 5 voraus (Java 1.5.0). Ob und in welcher Version Java auf dem System installiert ist, kann auf der Konsole mit

java -version

festgestellt werden. Die aktuelle Java Version kann unter java.com heruntergeladen werden.

Unter Windows und Mac OS läßt sich der Interpreter mit einem Doppelklick starten. Alternativ kann die Jar-Datei auch auf der Konsole mit

java -jar floyd33.jar

aufgerufen werden.

Wer selber mit Floyd programmieren möchte, braucht die Dateien der Standardbibliothek (16 KB). In Eclipse erleichtert dieses Plugin von Raimund Seisenberger die Arbeit mit Floyd-Quelltexten (64 KB). Für die Texteditoren Proton und Textpad gibt es auch zwei Syntaxdateien, die eine Syntaxhervorhebung ermöglichen (4 KB).

Bei Verwendung des Eclipse-Plugins ist zu beachten, daß im Eclipse-Ordner noch eine Datei floyd.properties mit der Eigenschaft stdlib.path und dem Pfad zu den Bibliotheksdateien angelegt werden muß. Der Inhalt kann z. B. so aussehen:

stdlib.path = C:\\Spiele\\floyd\\

Der Quelltext des Interpreters liegt in einem CVS Repo bei Sourceforge, das anonym gelesen werden kann:

cvs -z3 -d:pserver:anonymous@javafloyd.cvs.sourceforge.net:/cvsroot/javafloyd
   checkout -P CVSROOT

Spiele

Das neue Spiel Ein Fall in Jashpur und zwei ältere Vertreter des Science-Fiction-Genres, Der Nebelmond und Download, gibt es als Bundle (203 KB).

Interessierte können hier auch in die Quelltexte der bisherigen Spiele schauen (83 KB). Zusätzlich enthält die Zip-Datei noch die deutsche Floyd-Version des Cloak of Darkness. Dabei handelt es sich um ein simples Mini-Spiel, das im englischen Original dem Vergleich verschiedener Sprachen für Adventurespiele dient. Es wird auch in der Dokumentation näher erläutert.

Diese Spiele können auch direkt gestartet werden (vorausgesetzt, auf Ihrem Rechner ist Java installiert): Der Nebelmond, Download, Ein Fall in Jashpur

Dokumentation

Die Dokumentation gibt es als PDF-Datei (400 KB). Sie erklärt die Programmierung mit Floyd vom einfachsten Hallo-Welt Programm bis zu den Details des Parsers.

Neben der Dokumentation der Sprache gibt es auch noch eine kurze Hilfe für den Interpreter (66 KB).

Screenshots

Updates und Bugfixes

29.04.2012 / V3.3a:

  • Neuer Menüpunkt für das Speichern des Spielverlaufs als Text.

02.04.2012 / V3.3:

  • Unterstützung von Java-Webstart.
  • Unterstützung von bestimmten und unbestimmten Artikeln in stdlist.
  • Bugfix für die Deklination von zusammengesetzten Namen.

22.01.2012 / V3.2:

  • Bugfix für die Initialisierung von Arrays vom Typ object.
  • Bugfix für die Aktualisierung der Spielzeit.
  • Die Fehlerfälle des Parsers in stderror werden genauer unterschieden.
  • Die Spiele wurden mit der Änderung in stderror aktualisiert.
  • Der Parser erkennt die Reflexivpronomen "mich", "mir", "dich" und "dir" automatisch.
  • Optional können deutsche oder französische Anführungszeichen ausgegeben werden.
  • Die Dokumentation wurde in Kapitel 4.2 aktualisiert.

27.11.2011 / V3.1.2:

  • Bugfix für Methodenaufrufe ohne this-Schlüsselwort in Objektfunktionen.
  • Bugfix für die Ausgabe des Pronomens der Spielerklasse im Dativ.

10.07.2011 / V3.1.1:

Das Update behebt einen Bug in timeout. Die Dokumentation wurde in Kapitel 6.2 aktualisiert.

06.07.2011 / V3.1.0:

  • Die Deklination von Fremdwörtern läßt sich wieder mit einem Fragezeichen verhindern.
  • Relative Pfade bei #include funktionieren systemunabhängig.
  • Die Eingabe läßt sich formatieren.
  • Ein neues Textformat: inverser Text.
  • Kleinere Detailverbesserungen bei den Darstellungsoptionen, im Dateidialog und in Menüs.
  • Die Änderungen wurden in die Dokumentation aufgenommen.

05.06.2011 / V3.0.4a:

  • Bugfix für die Anzeige der Statuszeile mit StatusLineFormat(2)
  • Bugfix für einen Fehler im not-Operator.
  • Eine kleine Änderung in stdroom korrigiert den Zeilenumbruch bei der Ausgabe von Raumnamen.
  • Der Dateidialog merkt sich jetzt den letzten geöffneten Ordner.

27.02.2011 / V3.0.4:

  • Bugfix in stdobject.floyd: Schlüssel für A_LOCK/A_UNLOCK werden wieder ausgegeben.

24.10.2010 / V3.0.3:
Verbessert wurden die Behandlung von Behältern und Ablagen, sowie die Reaktion auf die Verben betreten, durchsuchen, schauen, liegen, sitzen, essen und trinken. Behoben wurde auch ein Fehler in Download, der die Erkennung einiger Objekte verhinderte. Betroffen sind alle Dateien auf dieser Seite.

Kontakt

Fragen, Kommentare und Anregungen nehmen die Autoren Oliver Berse und Raimund Seisenberger gerne unter mail@oliver-berse.de entgegen. Fragen können auch im IF-Forum gestellt werden.

Links

Infos über deutschsprachige Spiele und ein Online-Magazin finden sich bei ifwizz. Im englischen Sprachraum gelten Textadventures auch als Interactive Fiction. Damit beschäftigen sich das SPAG Magazin, die Brass Lantern und das Blog von Emily Short.