TorFUWir sind haben das Turnier gewonnen, weil man uns nicht mehr einholen kann, jippie!

Das Torfu Team Two

Hier läßt sich die Realisation eines der TorFU-Clients verfolgen.

Inhalt

Wer wir sind

Das TTT (TorFU Team Two) ist das zweite Tutorium zum Softwarepraktikum im SoSe 2002 unter der Leitung von Ulrich Kortenkamp und Gewinner des ersten Laufs des KI-Turniers. Wir sind (in alphabetischer Reihenfolge):

Jakob Bilger, Evelyn Dittmer, Christian Dürrhauer, Marc Georgi, Carsten Gräser, Martin Hense, Patrik Marschalik, Jürgen Schütz, Daria Schymura, Bogdan Stanca, Tobias, Bernhard Weber, Andrea Wiese und Jenny Wöß

Das (at) in den Adressen bitte durch @ ersetzen!

Im Archiv der Mailingliste kann man nachlesen, was uns bisher beschäftigt hat.

Außerdem gibt es hier Photos von uns.

Wo wir sind

In allen fünf Turnieren der TorFU-KI konnten wir erfolgreich den ersten Rang belegen. Wir haben die leistungsstärkste, schnellste und stabilste KI (im Durchschnitt unter 800 Milisekunden für alle Züge einer Runde) entwickeln, die außerdem über 120 verschiedene höhnische Chat-Nachrichten an ihre Gegner zu versenden vermag. Außerdem waren wir die einzigen, die eine eindrucksvolle und ebenfalls sehr stabile graphische Benutzeroberfläche (GUI) zum Stichtag präsentieren konnten. Inzwischen genießen wir unseren Ruhm, fügen hier und da noch Verbesserungen ein und vervollständigen unsere Dokumentation. Trotzdem können wir auch jetzt schon eine downloadbare Version anbieten.
Die Arbeitsgruppen hatten sich wie folgt formiert: Logik/KI/Serveranbindung, 2D-GUI, 3D-GUI/Look&Feel. Die softwaretechnische Struktur läßt sicht aus den Folien zur Präsentation von Jürgen und Carsten entnehmen. Das TTT hat sich für das Thema "Hängende Gärten von Semiramis" entschieden, um die Torres-Idee zu verfeinern.
Bisher sind Informationen zusammengetragen worden über:

  • XP (Extreme Programming)

Wir haben uns dazu entschlossen, das JDK 1.3.1 zu benutzen. Es enthält die wichtigen Java Foundation Classes und weist eine deutlich bessere Performance auf als die JDK 1.2.x. Außerdem ist diese Version inzwischen auf allen wichtigen Plattformen verbreitet.

Protokolle

  • Das Protokoll der Tutoriums-Sitzung vom 08. Mai 2002.
  • Das Protokoll der Tutoriums-Sitzung vom 15. Mai 2002.
  • Das Protokoll der Tutoriums-Sitzung vom 22. Mai 2002.
  • Das Protokoll der Tutoriums-Sitzung vom 29. Mai 2002.

Keine weiteren Protokolle, da die Sitzungen inzwischen hauptsächlich zum Programmieren genutzt werden.

Aufgaben und Internes

Die JavaDoc unseres Projekts de/torfu/swp2 vom 8. Juni, 0:20 Uhr.

Ullis kleine Anleitung zu den ersten Arbeiten, die uns Ant abnimmt, gibt es hier.

Ant-Befehle:

  1. ant server startet den TorFu-Server.
  2. ant serverCtrl startet die Server-Control-GUI, mit der der Server anständig heruntergefahren werden kann.
  3. ant KI meldet unsere KI an localhost, Port 14195 für das Spiel Babylon, Paßwort pw, mit dem Namen Nebukadnezar, Alter 100 an. Die nötigen Daten werden vorher von ant bei Bedarf neu kompiliert.
  4. ant swp8KI meldet die KI der Tutoren auch an diesem Server und für ein solches Spiel und Paßwort an, Name swp8, Alter 5.
  5. ant update bringt das Repository per cvs auf den neuesten Stand. Die Parameter -d -P sind schon enthalten.
  6. ant convert konvertiert die EOLs (Zeilenendzeichen) aller java-Dateien vom DOS-Format (double LF) ins Unix-Format (single LF).
  7. ant distall erzeugt ein jar-Archiv unseres Projekts inklusive Server mit dem Namen semiramis.jar im turnier-Ordner
    Das Projekt kann dann mit java -jar <Archivname> normal gestartet werden.
    Mit dem Aufruf java -jar semiramis.jar Server-IP Port <Spielbezeichnung> <Spielpaßwort> <KISpielername> <KISpieleralter> meldet sich die KI an einem laufenden TorfuServer für das entsprechende Spiel an und spielt dort.
  8. ant turnierDist erzeugt ein jar-Archiv unserer KI (genauer: unseres Projekts ohne GUI und graphische Ressourcen) mit dem Namen swp2.jar im turnier-Ordner
    Mit dem Aufruf java -jar swp2.jar Server-IP Port <Spielbezeichnung> <Spielpaßwort> <KISpielername> <KISpieleralter> meldet sich die KI an einem laufenden TorfuServer für das entsprechende Spiel an und spielt dort.
  9. ant pack erzeugt ein zip-Archiv unseres Projekts mit dem Namen swp2-<Datum>.zip.
    Enthalten ist der gesamte Source-Code zum Mitnehmen und Später-Essen.
  10. ant test zum kompletten Testen aller Testklassen

Interessantes zu Torres

Zu Haus könnt Ihr Euch am Torres-Desktop erfreuen oder Ihr besucht eine Auswahl besonderer Webseiten, die sich mit unserer Vorlage, dem Spiel Torres befassen.



Auf games we play liefert H. Schrapers interessante Hintergrundinformation zur Entstehung von Torres, gibt einen kurzen Überblick über den Spielablauf und spart nicht mit kritischen Ansätzen. Er bewertet die herrschende Balance zwischen Glück und Taktik, auch bezüglich der möglichen Regelvariante, und kritisiert zu recht die thematische Umsetzung des Spiels.

Mitchell Thomashow stuft Torres auf The Games Journal in die Kategorie "tower-building game" ein und unterscheidet dort zwei Typen. Sein besonderes Augenmerk gilt der "dynamic balance" des Spiels und der in Folge entstehenden strategischen Überlegungen.

Die Integration etlicher Elemente aus anderen Spielen Kramers (der Autor Torres') stellt Greg Schloesser auf boardgamegeek bezüglich Torres fest. Außerdem befaßt er sich mit dem "dead time"-Problem (zu lange Denkzeiten) und setzt sich kritisch mit Einwänden anderer Spieler gegenüber Torres auseinander.

Ravensburger hat die Anziehungskraft Torres' erkannt und gibt eine Hörspielkassette unter dem Titel Kampf um die Burgen heraus, in der die Torres-Thematik um einige dramatische Elemente erweitert wird.

Auf reg.games.board befassen sich neun Threads mit Unklarheiten in der Spielanleitung von Torres.

Mathew Baldwin stellt auf dem Spiele-e-zine Aces Up einen scharfen Vergleich zu Tikal an, einem anderem sehr bekannten Spiel von Kramer. Darüber hinaus fällt ihm "the delicate balance of cooperation and competition" zwischen den Spielern Torres' auf, welche wohl die größte Schwierigkeit des Spiels ausmacht.

Auf der spanischen Seite Pacosden kann Francisco Alcalá ebenfalls Kritik am Gamplay Torres' festmachen. Er meint erkannt zu haben, daß derjenige Spieler, welcher in der ersten Runde in Führung liegt, das Spiel abschließend kaum verlieren können wird.

Vertonte deutsche Spielregeln von Torres gibt es auf spieleberater.at zu hören.

In einem kleinen aber feinen Eintrag auf der französischen Seite trictrac stellt Cebru drei wichtige Schönheitsfehler an Torres fest: das Plastikmaterial, die minimale Punktedifferenz im Spielverlauf und die fehlende Eieruhr.

Drei interessante Regelvariationen von Goldwin Solcher, die nicht in den normalen Spielregeln Torres' enthalten sind, gibt es auf Gosos variantenreicher Brettspielseite: die persönliche Meisterkarte, die Burgen-Fusion und das kostenpflichtige Aktionskartenpaar.

Download

Hier kann man sich unseren Torfu-Client Semiramis (semiramis.jar, ca. 2.75 MB, Version vom 06.08.02) sowie die dazugehörige Dokumentation (Semiramis.pdf, 1 MB) und alle zusätzlich nötigen Dateien herunterladen (siehe Installation).

Unser Client (die Graphische Benutzeroberfläche des Spiels, kurz GUI) soll noch eine musikalische Untermalung bekommen und noch ein wenig komfortabler werden, bis dahin sollte man sich aber eine Partie Semiramis trotzdem nicht entgehen lassen! Vor allem über das Internet macht Semiramis durch die integrierte Chatfunktion besonders viel Spaß. Einen Screenshot kann man hier bewundern.

Installation

Zum Spielen von Semiramis benötigt man zunächst einmal die Java-Laufzeitumgebung (mind. Version 1.3.1), die unter diesem Link ebenfalls unentgeltlich im Internet erhältlich ist. Laden Sie sich dort eine JRE für Ihr System herunter und installieren sie diese. Eine SDK (gibt es dort auch) beinhält daneben noch weitere Werkzeuge für Java-Entwickler und ist um einiges größer, wird aber zum spielen nicht benötigt.

Wenn Sie nicht wissen, ob Java bereits auf ihrem System installiert ist, geben sie in der Kommandozeile/Eingabeaufforderung java -version ein. Wird der Befehl nicht erkannt, müssen Sie Java installieren. Ebenso ist eine Installation erforderlich, wenn sie zwar eine Ausgabe bekommen, Java aber älter als die Version 1.3.1 ist. In diesem Fall empfiehlt sich eine Deinstallation von Java vor der Neuinstallation.

Desweiteren brauchen Sie den Torfu-Server (torfuServer.jar, 40 KB; ein kleines Programm, daß die Spiele überwacht) und die zusätzlichen Java-Packages für Log4j (log4j.jar, 219 KB) und den Parser (parser.jar, 136 KB). Benutzen Sie keine aktuelle Version von Java, sondern Java 1.3.x, dann wird ebenfalls das Jaxp-Package (jaxp.jar, 6 KB) benötigt. Diese Dateien müssen alle im gleichen Verzeichnis gespeichert werden. Das kann ein ganz neues sein (z.B. /torfu) oder eines in dem vielleicht schon andere Clients liegen. Ein Entpacken oder Konfigurieren ist nicht mehr nötig, nur die Endung .jar muß jeweils erhalten bleiben.

Wer einen anderen Torfu-Client benutzen möchte, sollte sich an die jeweiligen Anleitungen halten. Obwohl das Ansprechen von Server und Computergegner bereits in unserem Client integriert sind, ist es natürlich trotzdem möglich, einen Server bzw. unseren Computergegner seperat zu starten.

Starten des Spiels

Die Programm-Datei kann in allen Betriebsystemen mit der Java-Laufzeitumgebung ab der Version 1.3.1 von der Kommandozeile und im selben Verzeichnis aus mit dem Befehl java -jar semiramis.jar ausgeführt werden. (Erhalten Sie hier eine Fehlermeldung, lesen Sie sich Probleme und Lösungen durch.) Aus der Benutzeroberfläche von Semiramis lassen sich der Server und ein oder mehrere unserer Computergegner bequem starten.

Alternativ kann unser Computergegner (die künstliche Intelligenz, kurz KI) auch durch hinzufügen von weiteren Parametern direkt aus der Kommandozeile aufgerufen werden. Er versucht dann eine Anmeldung an einem Spiel und nimmt automatisch an diesem teil. Abgesehen von einem Turnier aus verschiedenen Computergegnern oder bei der Benutzung eines anderen Clients mit unserer KI ist dies aber nicht nötig. Diese Art des Aufrufs erfolgt über den Befehl java -jar semiramis.jar [IP-Adresse] [Port] [Spielname] [Spielpaßwort] [Name der KI] [Alter der KI]

Die angegebenen Parameter haben die folgende Bedeutung:
[IP-Adresse] gibt an, an welchem TorfuServer sich die KI anmelden soll. Wurde der Server am gleichen Rechner gestartet, kann man hier localhost eingeben.
[Port] gibt an, über welchen Port die KI mit dem TorfuServer kommuniziert soll. Standardmäßig ist das für dem TorfuServer der Port 14195; man gibt in diesem Fall also 14195 ein.
[Spielname] ist die Bezeichnung eines Spiels, das bereits auf dem Server angemeldet sein muß. (Das macht man am einfachsten über die graphische Oerfläche eines der Clients, es geht aber auch über Telnet.) Soll die KI an dem Spiel Babylon teilnehmen, daß bereits auf dem Server wartet, gibt man hier also Babylon ein.
[Spielpaßwort] ist das Paßwort, mit dem das Spiel am TorfuServer angemeldet wurde. Wenn dort eines gesetzt wurde (in unserem Client ist das standardmäßig pw), muß es hier angegeben werden.
[Name der KI] ist ein Name ohne Sonder- oder Leerzeichen, mit dem sich dieser Computergegner am Spiel anmelden soll. Er spielt außer für die Unterscheidung der Mitspieler keine Rolle, darf aber nicht leer bleiben.
[Alter der KI] legt ein Alter fest, das die KI bei Ihrer Anmeldung am Spiel angeben soll. Es ist völlig egal, was man hier angibt, nur eine ganze Zahl muß es sein. Der jüngste Spieler beginnt, hat aber dadurch keine Vorteile.

Probleme und Lösungen

Beim Start erhalten sie die Fehlermeldung
Exception in thread "main" java.lang.NoClassDefFoundError: semiramis/jar

Lösung: Sie haben vergessen, -jar beim Aufruf vor dem Dateinamen anzugeben.

Beim Start erhalten sie die Fehlermeldung
Exception in thread "main" java.util.zip.ZipException: Das System kann die angegebene Datei nicht finden
   at java.util.zip.ZipFile.open(Native Method)
   at java.util.zip.ZipFile.<init>(ZipFile.java:105)
   at java.util.jar.JarFile.<init>(JarFile.java:110)
   at java.util.jar.JarFile.<init>(JarFile.java:52)
(Die Ziffern können abweichen.)

Lösung: Sie sind entweder nicht im gleichen Verzeichnis wie die Programmdatei oder Sie haben sich beim Aufruf im Dateinamen vertippt. Überprüfen Sie, ob Sie die Datei-Endung .jar beim Aufruf mit eingegeben hatten.

Nachdem Sie sich an ein Spiel angemeldet haben, sehen Sie das Spielbrett aber es geschieht nichts mehr und Sie sind offensichtlich auch nicht dran oder können keine Figuren setzen.

Lösung: Achten Sie darauf, daß Sie sich oder eine KI nicht mit zwei Namen (also z.B. Vor- und Zuname) anmelden; das führt bisher noch zu einem Absturz. Schauen Sie sich die Ausgabe auf der Konsole an. Steht dort zuletzt eine Exception, ist ein Teil des Programms wahrscheinlich abgestürzt. Beenden Sie es wenn möglich normal, ebenso den Anmeldeschirm, und starten Sie es komplett neu.

Online-Matches

An besonderen Tagen stellen wir einen Server bereit, damit jeder seine Semiramis-Fähigkeiten online gegen mehrere andere Spieler messen kann. Bei Interesse an einer Teilnahme bitte ein Mail mit dem gewünschten Termin an uns, und ihr bekommt die Server-IP (von Hand) zurückgesandt.


Das zweite Match (Online-LAN-Party) findet statt am 10. Oktober 02 umd 20 Uhr (MEZ). Anmeldungen werden bis 19:45 gesammelt.

Das erste Match findet statt am 01. August 02, um 21 Uhr (MEZ). Anmeldungen werden bis 20:30 Uhr (MEZ) gesammelt.

Letzte Änderung vorgenommen am Thursday, 10-Oct-2002 15:39:04 CEST
Martin Hense: hense@inf.fu-berlin.de