Der UrServer
Auf dieser Seite findet ihr immer die aktuelle Version des UrServers,
der SteuerungsGUI zu diesem sowie des Klienten der TutorInnen.
Der UrServer
Bugs des Servers
Feature requests
Das Protokoll
Änderungen im Protokoll
Der Klient
Die IniAI
SteuerungsGUI
Für alle vier Programme wird
Log4J
benötigt. Das Jar-Paket (log4j.jar)
findet ihr aber auch hier. Das müßt ihr dann in das gleiche
Verzeichnis wie die anderen Jar-Dateien legen, damit das alles
funktioniert.
Version 1.17 vom 15. Juli 2003, 13:33h
Gibt's hier als Jar-Paket (urServer.jar).
Der Server lauscht standardmäßig auf Port 14195 (und 14196,
siehe SteuerungsGUI), was aber durch
Kommandozeilenparameter verändert werden kann.
Seitenanfang
Fehler in Server und Protokoll schickt ihr bitte an
berndts-bugs@mi.fu-berlin.de
-
Jaja, sich festklammernde Amöben wurden gar nicht
festgeklammert.
BEHOBEN
-
Sich festklammernde Amöben wurden nicht oder falsch bewegt.
BEHOBEN
-
AMOEBE_SCHADEN wurde auch bei einem nicht geglückten
Überlebenskampf nicht gemeldet.
BEHOBEN
-
Der Server entfernt beendete Spiele nicht aus seiner Spielliste.
BEHOBEN
-
ZUG_KLAMMERN wird gesendet, wenn eine Amöbe das eigene Feld
betritt, nicht, wenn sie es verläßt.
BEHOBEN
-
Bei AGGRESSION in der fünften Phase werden gegnerischen
Amöben, die Panzerung besitzen, zwar Schadenspunkte
gegeben, aber diese nicht gemeldet.
BEHOBEN
-
Es ist nicht möglich, in der gleichen Runde ein höheres
Gen und das dazugehörige niedrige Gen zu kaufen. (Um dieses
dann gleich wieder abzugeben.)
BEHOBEN
-
TEILUNGSRATE zählt als höheres Gen und höhere
Gene zählen dreifach.
BEHOBEN
-
Der Server läßt den Kauf von (nicht höheren)
Genen zu, auch wenn die Spielerin das höhere Gen besitzt,
zu dessen Kauf eben jenes Gen abgegeben werden mußte.
BEHOBEN
-
Der Server meldet eine Flucht nicht.
BEHOBEN
-
Wenn der Server automatisch Amöben bewegt, meldet er dies
nicht.
BEHOBEN
-
Beim Abziehen von Biopunkten kommen ab und an zwei Minuszeichen
vor der Zahl.
BEHOBEN
-
Wenn der Server beim Ausgleichen von Gendefekten nach dem Timeout
Gene abzieht, wird das nicht gemeldet.
BEHOBEN
-
Beim Klammern gibt es seltsame Effekte, nur nicht das, was eigentlich
passieren soll.
BEHOBEN
-
Ein Spiel wird manchmal mehrfach gestartet.
BEHOBEN
-
Beim Fliehen kommt der Fehler "Du hast schon
gewürfelt.".
BEHOBEN
-
Das Gen STRAHLENSCHUTZ wurde beim Abgeben von Genen zum Ausgleich
von Gendefekten nicht richtig behandelt.
BEHOBEN
-
Wenn beim Überlebenskampf eine fremde Spielerin dazu aufgefordert
wird, dem Angriff zu entgehen, wurde der Timeout der angreifenden
Spielerin nicht unterbrochen.
BEHOBEN
-
Es gibt einen "FEHLER 1" u.a. beim Anwenden von KLAMMERN.
BEHOBEN
-
Es gibt einen "FEHLER 30" beim Anwenden von KLAMMERN,
NICHT_KLAMMERN und TENTAKEL.
BEHOBEN
-
Wenn der Server Amöben fressen läßt, gibt es
für diese keine Ausscheidungen.
BEHOBEN
-
Gendefekte ausgleichen nur mit Biopunkten geht nicht.
BEHOBEN
-
Nach der Aufforderung ZUG_POSITION reagiert der Server nicht
mehr.
BEHOBEN
-
Wenn der Server die ersten Amöben für eine Spielerin
eingesetzt hat, kommt kein AMOEBE_SETZEN_ENDE.
BEHOBEN
-
Das Gen GESCHWINDIGKEIT bewirkt, daß immer eine Aufforderung zur
zweiten Bewegung kommt, auch wenn die erste ein Treiben war.
BEHOBEN
-
Es tritt ab und zu der Fehler auf, daß eine Antwort zu schnell
für den Server ist, dieser diese also noch nicht akzeptiert.
BEHOBEN
-
Der Befehl NACHRICHT funktioniert -- entgegen den Angaben im
Protokoll -- noch nicht.
BEHOBEN
-
Unter bestimmten (noch nicht geklärten) Umständen werden
einige Befehle nicht erkannt.
BEHOBEN
-
Wenn z.B. bei der Anmeldung falsche Strings geschickt werden,
gibt es keine Fehlermeldung, sondern die Verbindung wird
einfach beendet.
BEHOBEN
-
Beim Abmelden einer Spielerin vor Spielbeginn gibt es eine
NullPointerException (NPE) im Server.
BEHOBEN
-
Vor der Teilnahme an einem Spiel hängt sich die Verbindung nach
dem Senden bestimmter Befehle auf.
BEHOBEN
Seitenanfang
Und auch über eure Mails mit Wünschen nach weiteren
Funktionalitäten freue ich mich, wenn ihr sie an
berndts-swp@mi.fu-berlin.de schickt. Allerdings werde ich weitere
Features nur begrenzt implementieren, da das Protokoll keine
allzugroßen Änderungen mehr erfahren soll.
-
Bei Besitz des Genes BEWEGUNG 2 ggf. automatisch Biopunkte
abziehen.
EINGEBAUT
-
Kommandozeilenparameter, um Debugmeldungen wieder zu aktivieren.
EINGEBAUT
-
Kommandozeilenparameter, um den Steuersocket abzuschalten.
EINGEBAUT
-
Kommandozeilenparameter, um den Testtimeout zu setzen.
EINGEBAUT
-
Beim Spielfeld jede Zeile für ein einzelnes Spielfeldchen
mit einem Schlüsselwort (z.B. FELDCHEN) einleiten.
EINGEBAUT
-
Nachrichten sollen auch als Nicht-Broadcast, also nur an eine
ausgewählte Spielerin geschickt werden können.
EINGEBAUT
-
Meldung, wenn sich eine Zuschauerin abmeldet.
EINGEBAUT
-
Neuen Befehl einbauen, der die Anzahl der Gene einer Sorte
abrufbar macht.
EINGEBAUT
-
Im Spielstatus sollen die Anzahl der Amöben und der Gene
vorneweg geschickt werden.
EINGEBAUT
-
Im Spielstatus soll die Anzahl der Zuschauerinnen
vorneweg geschickt werden.
ABGELEHNT
-
Meldung, bevor der Server die Verbindung schließt.
ABGELEHNT: Der Server schließt
die Verbindung entweder nach dem Befehl ABMELDEN, nach dem
Spielende oder bei einem Fehler. Sonst nicht.
Seitenanfang
Version 1.13 vom 23. Juni 2003, 15:58h
Als HTML-Datei
(protokollUrServer.html).
Seitenanfang
Version 1.13
-
Dokumentiert, was gemacht werden muß, um sich am Boden
festzuklammern.
-
Es gibt eine neue Aufforderung (samt Befehl und Meldung):
ZUG_BEREIT. Diese wird nach Spielbeginn (genauer: nach dem
automatischen Versenden von Spielstatus und Spielfeld, die
jetzt beide direkt nach Spielbeginn kommen) an alle
Spielerinnen gleichzeitig geschickt, hat den dreifachen
Timeout und soll dazu dienen, am Anfang des Spieles
vollgelaufene Inputqueues abzuarbeiten. Diese können
z.B. dadurch entstanden sein, daß für alle Gene
abgefragt wird, wie oft sie denn vorhanden sind.
-
Nach Spielende werden die Sockets der Spielerinnen und
Zuschauerinnen noch eine halbe Stunde offengehalten. Aber
nur dann, wenn der Server nicht im Turniermodus gestartet
wurde.
Version 1.12
-
Die Meldung AGGRESSION ist dokumentiert.
Version 1.11
-
Beim Anmelden werden die SPIELERIN_ANGEMELDET-Meldungen
der bereits angemeldeten Spielerinnen mitgeschickt.
-
ZUG_ABWEHR hat einen weiteren Parameter
wasDarfSieTun
,
der angibt, wie die Spielerin sich wehren darf. Siehe Protokoll.
Gleichzeitig wird die Aufforderung ggf. wiederholt, so daß es
leichter ist zu entscheiden, wann der Server eine weitere Abwehr
zuläßt und wenn dem so ist, welche.
-
Die Meldung AMOEBE_ANGEGRIFFEN hat zwei neue Parameter und sieht jetzt so
aus:
AMOEBE_ANGEGRIFFEN farbe::int amoebe::int
angreifendeFarbe::int angreifendeAmoebe::int
-
Bewegungen sind ab sofort gekapselt:
BEWEGUNG farbe::int amoebe::int richtung::int
FLUCHT
TENTAKEL farbe0:farbe1:..:farbeN-1
KLAMMERN farbe::int amoebe::int
BEWEGUNG_ENDE farbe::int amoebe::int
FLUCHT, TENTAKEL und KLAMMERN kommen natürlich nicht immer, sondern
nur, wenn sie benötigt werden.
Version 1.10
-
Der Befehl FLUCHT ist jetzt da, wo er hingehört.
Version 1.9
-
Es gibt zwei neue Fehler (37, 38).
-
Wenn eine Amöbe klammert, wird das nicht mehr durch eine
normale Bewegung gemeldet, sondern durch die Meldung KLAMMERN
-- die aber bis auf das Schlüsselwort die gleiche Syntax
wie BEWEGEN hat.
-
Wer das Gen BEWEGUNG 2 besitzt, muß sich vor der Bewegung
nicht mehr (kann aber ohne weitere Auswirkungen) würfeln.
Der Server zieht nur Biopunkte ab, wenn die Bewegung nicht in
Strömungsrichtung geht und nicht KLAMMERN o.ä.
angewendet wird (oder, wenn gewürfelt wurde!).
-
ZUG_VERTEIDIGUNG und ZUG_FLUCHT wurden durch ZUG_ABWEHR ersetzt.
Im Zuge dessen hat auch die Meldung FLUCHT eine neue Semantik,
FLUCHT_ENDE ist weggefallen.
-
Und eine Meldung ABWEHR ist auch dazugekommen.
-
AMOEBE_ANGEGRIFFEN wird jetzt in jedem Fall gemeldet, auch, wenn die
angegriffenen Amöbe sich weder verteidigen noch fliehen kann.
Version 1.8
-
KEINE_FLUCHT dokumentiert.
Version 1.5
-
Namen von Spielerinnen und Zuschauerinnen dürfen keine
Whitespaces bis auf das Leerzeichen mehr enthalten und müssen
mindestens ein Zeichen lang sein. (Das überprüfende
Codefragment lautet
if (!name.matches("[\\S ]+") { throw new ... }
,
das restriktivere für Spielnamen, die aber auch automatisch
vergeben werden können,
if (!name.matches("[\\w]*") { throw new ... }
)
-
Der Versionsstring enthält kein Datum mehr. (Da dieses sowieso
nur was mit dem CVS zu tun hatte ...)
Version 1.4
-
Das Protokoll (also die Doku dazu) ist jetzt (glaube ich :))
vollständig.
-
Alle Gene sind implementiert.
-
In der Anzeige des Spielfeldes steht jetzt vor jeder Zeile, die
ein Spielfeldchen repräsentiert, ein FELDCHEN.
-
Es gibt den neuen Befehl "PRIVAT_NACHRICHT zielFarbe nachricht".
Selbsterklärend, oder? (Eine passende Meldung gibt es
selbstverständlich auch ...)
-
Die Meldung WUERFEL hat ein neues Format und wird an ALLE geschickt:
WUERFEL farbe wuerfel1 wuerfel2
Die farbe
ist die der Spielerin, für die gewürfelt
wurde. Das hilft, Züge nachzuvollziehen.
-
Nach dem Wählen der Positionen bekommen jetzt alle nicht nur den
Spielstatus sondern auch das Spielfeld geschickt. Das ist dafür
gedacht, daß erst mit diesen Informationen die datenhaltenden
Klassen initialisiert werden. Dann kann nämlich auch einfach mal
irgendetwas geändert werden, z.B. drei Nährstoffe in jedes
Feld statt zweier. Rein theoretisch.
-
Wenn sich eine Spielerin anmeldet, wird dies der Spielerin jetzt
mit einem "SPIELERIN_AKZEPTIERT farbe name" bestätigt.
-
Wenn sich eine Zuschauerin abmeldet, wird dies allen mit einem
"ZUSCHAUERIN_ABGEMELDET name" bestätigt.
-
Die anfänglich zugewiesene Farbe behält eine Spielerin
jetzt das gesamte Spiel über.
Version 1.2
-
Auch das Setzen der ersten Amöben wird jetzt mit einem
"AMOEBE_SETZEN_ENDE" beendet.
-
Weitere Befehle und Meldungen dokumentiert. Unter anderem erste Gene.
-
Der Name einer Spielerin muß nicht mehr eindeutig sein.
Eine Spielerin kann also nur noch anhand ihrer Farbe identifiziert
werden.
-
Das Format des Spielstatus hat sich geändert.
Es werden die Anzahl der Amöben und Gene, die eine Spielerin
auf dem Spielfeld hat bzw. besitzt angezeigt.
Version 1.1
-
Weitere Meldungen dokumentiert.
-
Nach Spielende wird eine Meldung geschickt.
-
Einige Einschränkungen für Namen und Paßwörter
eingebaut.
-
Das Format des Spielstatus hat sich nochmal geändert.
Es werden jetzt auch die Längen der Laufbahn und der
Zielzone geschickt.
Version 1.01
-
Das Format des Spielstatus hat sich geändert.
Es werden jetzt auch die Zuschauerinnen angezeigt
sowie ein STATUS_ENDE geschickt.
Seitenanfang
Version vom 15. Juli 2003, 13:33h
Der Klient ist nicht nur eine KI, gegen die ihr eure KIs spielen
lassen könnt, sondern auch die AbspielGUI, mit der Turnierdateien
abgespielt werden können.
Wenn ihr das JAR ohne Parameter aufruft, seht ihr, wie ihr das
Programm verwenden könnt.
urClient.jar
Version vom 13. Juli 2003, 22:52h
Die IniAI ist die KI von Frank Nestel, der das Spiel mitentwickelt hat.
Um die IniAI benutzen zu können, muß (!) das urClient.jar
in einer Version von mindestens dem 8. Juli 2003 im selben Verzeichnis
wie das iniai.jar liegen!
iniai.jar
Seitenanfang
Insbesondere für Windowsnutzerinnen interessant, die den
Server per Doppelklick auf das Jar-Paket starten.
Version vom 12. Juni 2003, 18:10h
Gibt's hier als Jar-Paket (urSteuerGUI.jar).
Genauere Erläuterung
Der Server lauscht nicht nur auf Port 14195, dem Port, über den
Spiele stattfinden, sondern auch noch auf Port 14196. Wenn du dich mit
Telnet auf diesen Port verbindest, siehst du auch eine kurze
Übersicht der hier möglichen Befehle. Und siehst, daß
dieser Port nur zur Steuerung des UrServers da ist.
Wenn du den UrServer mit KILL runterfährst, werden alle Spiele
beendet, worüber dann auch die angemeldeten Spielerinnen und
Zuschauerinnen informiert werden.
Dieser Befehl ist, wie open schon geschrieben, besonders nützlich
für Menschen, die den UrServer unter Windows durch Doppelklick auf
die Jar-Datei gestartet haben und ihn dann nur noch im Taskmanager
wiederfinden. Wenn dann auch noch andere Java-Prozesse laufen, wird es
ganz schwierig, den richtigen zu finden.
Und damit dafür nicht immer ein Telnet aufgemacht werden
muß, gibt es halt die SteuerungsGUI, die diese
Funktionalität zur Verfügung stellt.