Standards und Regelwerke
KI-Hinweis: Dieser Text entsteht mit Unterstützung von KI-Systemen, wird aber vor der Veröffentlichung redaktionell geprüft und verantwortet.
Core War hat keinen einzelnen verbindlichen Standard, sondern eine Geschichte davon. Wer einen fremden Warrior liest oder selbst einreicht, sollte wissen, nach welchem Regelwerk er gemeint ist — sonst wundert man sich über Befehle, die es nicht geben dürfte, oder über Fehlermeldungen zu völlig korrektem Code.
Die drei, die zählen
ICWS'88 ist der erste offizielle Standard des International Core Wars Society. Er ist deutlich kleiner als das, was heute üblich ist, und du triffst ihn vor allem in alten Warriors aus den frühen Neunzigern.
ICWS'94 ist ein Entwurf, der nie formal verabschiedet wurde — und trotzdem zum faktischen Standard geworden ist. Praktisch alles, was heute gespielt wird, folgt ihm. Er bringt Modifier, zusätzliche Adressierungsmodi und neue Befehle.
'94nop ist ICWS'94 ohne P-Space. Das „nop" steht für no p-space. Das ist das Regelwerk, auf dem die wichtigsten Hills laufen, und es ist auch die Grundlage für alle Beispiele in diesem Nachschlagewerk.
Was '88 nicht kann
Der Unterschied ist konkret. Derselbe Quelltext, einmal unter '94nop und einmal unter '88 übersetzt — unter '88 scheitert er an fünf Stellen:
MOV.I $1, $2 ; Fehler: Modifier gibt es in '88 nicht
MOV *1, $2 ; Fehler: A-indirekt (*) fehlt
MOV {1, }2 ; Fehler: A-Feld-Vor/Nachzähler fehlen
SEQ $1, $2 ; Fehler: heißt in '88 CMP
MUL $1, $2 ; Fehler: MUL, DIV, MOD gibt es nicht
Unter '94nop übersetzt derselbe Code fehlerfrei.
Zusammengefasst — was ICWS'94 gegenüber '88 hinzufügt:
| Neu in '94 | Bedeutung |
|---|---|
Modifier (.A … .I) |
In '88 ist die Feldwirkung fest im Opcode verankert. |
* { } |
A-Feld-Indirektion und die zugehörigen Zähler. In '88 gibt es nur die B-Varianten. |
MUL DIV MOD |
Rechenbefehle über Addition und Subtraktion hinaus. |
SEQ SNE |
SEQ ersetzt CMP (beide Namen sind erlaubt), SNE ist neu. |
NOP |
Ausdrücklich nichts tun. |
LDP STP |
Zugriff auf den P-Space. |
Ein '88-Warrior läuft deshalb meist auch unter '94, umgekehrt fast nie.
P-Space, und warum die meisten Hills darauf verzichten
Der P-Space (private storage) ist ein kleiner Speicherbereich, der einem
Warrior gehört und eine Runde überlebt. Über STP schreibt er hinein, über
LDP liest er zurück.
Damit kann ein Warrior lernen: Er merkt sich, wie die letzte Runde ausgegangen ist, und wechselt bei wiederholten Niederlagen die Strategie. Auf einem Hill mit mehreren hundert Runden pro Paarung ist das eine echte zusätzliche Dimension.
Die übliche Größe ist ein Sechzehntel der Coregröße — bei 8000 Zellen also 500.
Trotzdem läuft der bekannteste Hill ohne P-Space, und das aus einem nachvollziehbaren Grund: P-Space macht Warriors zustandsbehaftet. Ein Ergebnis hängt dann nicht mehr nur von der aktuellen Runde ab, sondern von der Vorgeschichte. Das erschwert reproduzierbares Messen erheblich — und es macht Warriors schwerer zu verstehen, weil dasselbe Programm sich unterschiedlich verhält, je nachdem was vorher passiert ist.
Unter '94nop sind LDP und STP deshalb abgeschaltet.
Die Einstellungen
Ein Regelwerk allein reicht nicht — dazu kommen die Kampfparameter. Die wichtigsten:
| Parameter | Bedeutung | '94nop |
|---|---|---|
| Coregröße | Zellen im Ring | 8000 |
| Zyklen | bis zum Unentschieden | 80.000 |
| Prozesse | höchstens gleichzeitig je Warrior | 8000 |
| Länge | höchstens Zellen je Warrior | 100 |
| Abstand | Mindestabstand beim Laden | 100 |
Als Kommandozeile für pMARS:
pmars -s 8000 -c 80000 -p 8000 -l 100 -d 100 -r 200 warrior.red gegner.red
Diese fünf Zahlen sind der Grund, warum Warriors so aussehen, wie sie aussehen. Die Längenbegrenzung auf 100 Zellen erzwingt die extreme Verdichtung; die 80.000 Zyklen entscheiden, ob eine langsame Strategie überhaupt ankommt; der Mindestabstand von 100 verhindert, dass ein Warrior direkt neben dem Gegner startet und ihn sofort überschreibt.
Es gibt weitere Hills mit anderen Zahlen — mit sehr kleinen Cores, sehr kurzen Warriors oder stark begrenzter Prozesszahl. Jeder davon erzeugt ein eigenes Ökosystem, in dem andere Strategien funktionieren. Die verbindlichen Werte stehen jeweils in der Beschreibung des betreffenden Hills; verlass dich nicht auf Angaben aus zweiter Hand, sie ändern sich gelegentlich.
Was in den Kopf eines Warriors gehört
Diese Zeilen sind keine Kommentare im üblichen Sinn, sondern werden von den Hill-Servern ausgewertet:
;redcode-94nop
;name Mein Warrior
;author Dein Name
;strategy Kurz gesagt, was er tut.
;assert CORESIZE == 8000
;redcode-<hill>muss in Zeile 1 stehen und bestimmt den Zielhill.;assertlässt die Übersetzung scheitern, wenn die Umgebung nicht passt — sinnvoll für Coregröße und Prozesslimit, auf die deine Konstanten abgestimmt sind.- Kein
;assertauf die Rundenzahl. Manche Hills übersetzen vorab mit abweichenden Einstellungen; die Prüfung schlägt dann fehl, obwohl mit dem Warrior alles in Ordnung ist.
Mehr zum Einreichen steht unter Auf einen Hill.
Verwandte Seiten
- Befehlssatz — alle 16 Opcodes
- Adressierungsmodi — die acht Modi
- Modifier — welche Felder eine Instruktion anfasst