von Studenten der Hochschule Augsburg in Kooperation mit dem VCFe.
beast-arena ist eine verteilte Simulation, in der künstliche Lebewesen ("Biester") in einer zweidimensionalen Welt agieren. Die "Bühne" für die Simulation ist eine zweidimensionale Welt, die von außen gesehen aus einem Raster von NxN Feldern besteht. Für die "Bewohner" der Welt, die Biester, erscheint die Welt jedoch unendlich groß, da der rechte (untere) Rand der Welt nahtlos an den linken (oberen) Rand anschließt (wrap-around).
Jede Zelle der Welt hat einen Zustand, der durch ein ASCII-Zeichen
repräsentiert wird. Eine Zelle kann leer sein ('.'), eine Futter-Portion
enthalten ('∗') oder von einem Biest besetzt sein. Jedes Biest ist
eindeutig durch einen Klein- oder Großbuchstaben ('a-Z') benannt.
Die Datenstruktur, die ein Biest repräsentiert, enthält eine Methode
bewege(), die eine Zeichenkette zurückgibt, aus der zu entnehmen ist, in
welche Richtung sich das Biest als nächstes bewegen möchte. Als
Argument erhält die Methode bewege() eine Zeichenkette, die drei durch
Strichpunkte getrennte Teile enthält ’s1;s2;s3;@’.
0 | 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 |
Jedes Biest kann seine 5x5-Umgebung erkennen, wobei es wird zur Übermittlung an die Clients, zeilenweise in eine Zeichenkette umgewandelt wird. Das eigene Biest sitzt an der Stelle 12 und wird mit seinem Buchstaben gekennzeichnet und Artgenossen werden als '<', '=' oder '>' dargestell, je nachdem ob der Nachbar weniger, gleich viel oder mehr Energie hat als das Biest, das sich gerade umschaut. Ein Biest kann sich auch verstecken, so dass seine Energie nicht sichtbar ist und erscheint den Nachbarn dann als '?'.
Anfrage des Clients | Antwort des Servers |
---|---|
Anmeldung möglich?@ | Ja@ oder Nein@ |
Anmeldung!@ | <Kennung> (a@) oder Fehler@ |
Weltgroesse?@ | <Höhe>x<Breite> (24x25@) oder Fehler@, falls noch nicht verfügbar |
Spielbeginn?@ | Format siehe time.asctime() (Wed Dec 7 17:46:54 2011@) |
Hinweis: jede Nachricht wird mit einem "@" abgeschlossen, das heißt dass der Empfänger so lange lauscht bis er ein @ bekommen hat
Während einer Runde des Spiels kann sich ein Biest innerhalb seiner Umgebung bewegen. Es sind diagonale sowie gerade Bewegungen oder gerade sowie diagonale Sprints möglich. Bei den Sprints ist zu beachten, dass nach einem Sprint 3 andere Spielzüge folgen müssen. Außerdem kann ein Biest unbeweglich sitzen bleiben oder die eigene Energie vor den Nachbarn verstecken ohne sich zu bewegen. Das Leben eines Biests endet, wenn seine Energie komplett aufgebraucht ist oder es von einem stärkeren Biest aufgefressen wird.
Richtung | Kosten |
---|---|
gerade | 2 |
diagonal | 3 |
gerader Sprint | 5 |
diagonaler Sprint | 7 |
verstecken | 2 |
rasten | 1 |
Der Sourcecode ist hier verfügbar.
Johannes Kaufmann, Maximilian Körner, Nikolai Kraler, Michael Liebert, Samuel Zeitler (Hochschule Augsburg)
Hans Franke, Carsten Strotmann (VCFe)