Wenn man sich mit Corewar
beschäftigen möchte benötigt man einen M.A.R.S. (Memory Array Redcode Simulator) – ein Programm das Kämpfe zwischen den kleinen
selbstgeschriebenen Programmen durchführt.
pMars ist der Standardsimulator für diese Simulation, das
Programm lässt diverse Einstellungen für die Arena – den Core, eine einfache Liste von standardmässigen 8000 Speicherzellen –
zu, lädt und kontrolliert die Kämpfer auf Syntaxfehler und simuliert anschliessend eine gegebene Anzahl Auseinandersetzungen
zwischen zwei Warriors und gibt die Ergebnisse menschenlesbar sortiert nach Sieg | Niederlage | Unentschieden wieder aus.
pMars kann auch von Windows/DOS- und Linux/Terminal-Scripten zur Durchführung von Benchmarks genutzt werden, Simulationen von
Kämpfen eines eigenen Programmes gegen eine Sammlung von bewährten Gegnern. Erreicht der eigene Kämpfer eine gewisse Anzahl von Punkten
(berechnet nach Siegen/Niederlagen/Unentschieden-Ergebnissen) kann man davon ausgehen dass der eigene Kämpfer für die
Übermittlung an einen der bestehenden Internetserver (die sog. Hills
geeignet ist wo er gegen Warriors anderer Benutzer
antreten kann.
Kompilieren unter Ubuntu Hardy
pMars lässt sich unter Ubuntu 8.04 recht einfach kompilieren, ein fertiges Paket wird bisher nicht angeboten. Der Vorgang dauert selbst auf meinem 1Ghz-Rechner nur einige Sekunden, dann ist der ausführbare Simulator als eine einzige Datei fertiggestellt.
Voraussetzungen
Benötigt werden nur der Compiler und die Basisentwicklungspakete die mit folgendem Befehl im Terminal recht einfach installiert werden:
sudo apt-get install build-essentials
pMars Quellcode
Der Quellcode kann hier in Version 0.9.2 heruntergeladen werden. Er wird in ein Verzeichnis der Wahl entpackt (für diesen Artikel z.B. ins Homeverzeichnis des Benutzers).
Makefile bearbeiten
Für dieses Beispiel soll ein funktionsfähiges pMars ohne grafische Ausgabe – welche zusätzliche Paketabhängigkeiten hätte – erstellt werden. Dazu muss vor dem Kompilieren das Makefile etwas angepasst werden:
cd ~/pmars*
cd src
gedit Makefile
Aus dem in Zeile 19 mit dem Wort CFLAGS
beginnenden Text muss das Wort -DXWINGRAPHX
entfernt werden. Dieser Begriff steht für die Einbindung einer grafischen Ausgabe unter Windows – hier definitiv nicht benötigt. Speichern und Editor schliessen.
Kompilieren
Der letzte Schritt ist das Erstellen des ausführbaren pMars. Im gleichen Verzeichnis (~/pmars-0.9.2/src
) wird der Compile-Vorgang gestartet:
make
Fertig. Per ls
kann man sehen dass wir jetzt eine ausführbare Datei namens pmars
im Verzeichnis liegen haben die nur darauf wartet benutzt zu werden.
Erster Test
pMars kommt mit einer kleinen Sammlung Demonstrationswarriors, zwei von diesen sollen nun zum Test gegeneinander antreten:
pmars -r 100 ~/pmars-0.9.2/warriors/rave.red ~/pmars-0.9.2/warriors/aeka.red
Als Ergebnis wird ein Listing der Kämpfer und das Ergebnis nach 100 Runden (-r 100
) angezeigt:
Rave by Stefan Strack scores 103
Aeka by T.Hsu scores 190
Results: 32 61 7