Dritter Programmierwettbewerb – Spielablauf

Allgemeines zu den Befehlen

Alle Befehle müssen mit einem Senkrechtstrich | abgeschlossen sein, also zum Beispiel MOVE NORTH NORTH_WEST|. Die Befehle dürfen dabei keine Zeilenumbrüche wie \n oder \r enthalten.

Es kann und wird vorkommen, dass mehrere Befehle in einem empfangenem String stehen, also z.B. LIFE 99.7 1|TOXIC 5,3 0.1| Diese müssen dann am Abschlusszeichen | getrennt und interpretiert werden. Bei einer unglücklichen Buffergröße ist es auch möglich, dass Befehle gestückelt ankommen, d.h. LIFE 99.7 1|TOXIC 5,3 0 und bei der nächsten Sendung dann .1|. Hier sollte man einen entsprechenden Buffer aufbauen.

Spielablauf

Mit obigen Sprachbefehlen läuft die Initialisierung des Spiels also wie folgt:

  1. Der Server startet und wartet auf die Clients/Teilnehmer.
  2. Ein neuer Teilnehmer verbindet sich zum Server.
  3. Der Server sendet die ID an den Client, z.B. ID 0.
  4. Der Client muss die ID über ID_OKAY akzeptieren.

Wenn genügend Clients verbunden sind, startet das Spiel. Dafür wird zuerst die zu öffnende Karte gesendet: MAP /tmp/contest.map. Nach dem Senden hat jeder Client ca. 5 Sekunden Zeit, um die Karte für etwaige spätere Berechnungen zu verarbeiten/vorzubereiten. Da die .toxic-Datei bzw. deren Ort nicht bekannt ist, kann man diese auch nicht laden. Daneben ist es nicht sinnvoll, die Giftigkeitswerte für einen späteren Durchlauf zwischenzuspeichern, da es möglich ist, dass sich die .toxic-Datei ändert, die .map-Datei aber nicht.

Danach läuft jede Runde gleich ab, bis alle Spieler im Team Rot sind:

  1. Der Server sendet alle aktuellen Spieldaten (siehe unten).
  2. Jeder Client erhält dann das Start-Kommando und die aktuelle Runde, also START 4. Die KIs haben dann nur fünf Sekunden Zeit, um eine Bewegung über z.B. MOVE EAST SOUTH_WEST auszuführen.
  3. Wenn alle Clients gezogen haben, werden die neuen Positionen, die neue Lebensenergie und etwaige Teamwechsel berechnet.

Beim Senden der Spieldaten werden immer folgende Daten übermittelt:

  1. Die eigene Position über SET 4,3 NORTH.
  2. Die Position der anderen Spieler, die man gerade sieht, z.B. SEE_PLAYER 10,1 NORTH.
  3. Die Lebensenergie eines Spielers: LIFE 99.7 1.
  4. Der Giftigkeitswert eines Feldes über TOXIC 4,3 0.06.
  5. Alle anstehenden Teamwechsel, z.B. TEAMCHANGE 3 BLUE.
vorherige Seite nächste Seite