Core War · Arena
2026-07-19 · Lesezeit ~4 min

Die Arena

KI-Hinweis: Dieser Text entsteht mit Unterstützung von KI-Systemen, wird aber vor der Veröffentlichung redaktionell geprüft und verantwortet.

Zwei Programme kämpfen um denselben Speicher. Sie sind beide hineingeladen worden, kennen die Position des anderen nicht, und kommen von da an abwechselnd dran — jeder führt pro Runde genau einen Befehl aus. Angreifen heißt hier: dem anderen etwas überschreiben, das er gleich ausführen wird. Ein Programm, das auf einen zerstörten Befehl läuft, stirbt daran. Gewonnen hat, wer zuletzt noch läuft — genauer: wessen Gegner keinen einzigen Prozess mehr hat, also keine Stelle im Speicher, an der er noch abgearbeitet wird.

Das Raster unten ist dieser Speicher — 8000 Zellen, von links oben nach rechts unten gelesen. Jede Zelle färbt sich in der Farbe dessen, der zuletzt hineingeschrieben hat. Du siehst also keine Bewegung, sondern eine Spur: wo Farbe auftaucht, war gerade jemand am Werk. Die hell markierten Zellen sind die Startregionen — die Stellen, an denen die beiden zu Beginn lagen.

Der Kampf wird vollständig vorausberechnet und dann abgespielt. Deshalb kannst du vor- und zurücklaufen, ohne zu warten. Eingreifen kann man ohnehin nicht: In Core War fällt jede Entscheidung vor dem Start, im Programmtext selbst.

Ein einzelner Kampf entscheidet nichts. Was du hier siehst, ist eine Begegnung von vielen — mit einem festen Abstand zwischen den beiden und einer festen Reihenfolge, wer anfängt. Beides fällt anders aus, wenn dieselben zwei Programme erneut aufeinandertreffen, und wer den ersten Zug hat, kann den Ausgang kippen. Im Wettbewerb wird deshalb jede Paarung viele hundert bis viele tausend Mal gespielt, aus wechselnden Startlagen und in beiden Reihenfolgen. Wer wirklich gegen wen gewinnt, steht darum nicht hier, sondern in den Tabellen — dieser Kampf zeigt dir, wie so etwas abläuft, nicht wer besser ist.

Was du ändern kannst

In den beiden Feldern steht Redcode, die Sprache, in der Core-War-Programme geschrieben werden. Du kannst hineinschreiben, was du willst — der Kampf wird dann mit deiner Fassung gerechnet. Ein Tippfehler kostet nichts: Der Assembler meldet ihn, bevor gekämpft wird.

Voreingestellt sind zwei Programme, die einander im Prinzip entgegengesetzt sind.

clrsrc sucht. Es tastet den Speicher in großen Sprüngen ab, bis es eine Stelle findet, an der etwas steht, das dort nicht hingehört — und überschreibt dann nicht nur diese eine Zelle, sondern einen ganzen Abschnitt am Stück. Das ist der Unterschied zwischen Finden und Treffen: Wer einen Gegner nur anritzt, hat nichts gewonnen, denn der läuft weiter. Erst der ausgelöschte Abschnitt erwischt auch das, was ein paar Zellen daneben liegt.

Der Lehr-Quickscanner wettet. Statt zu suchen, prüft er gleich zu Beginn ein paar wenige, fest einprogrammierte Stellen — dort, wo ein Gegner erfahrungsgemäß liegt. Sitzt der andere zufällig an einer davon, ist der Kampf nach Sekundenbruchteilen entschieden. Sitzt er woanders, hat der Quickscanner Zeit verloren, die ihm später fehlt.

Damit stehen sich hier zwei Auffassungen davon gegenüber, wie man einen Gegner findet: methodisch suchen oder sofort raten. Über 2000 Startlagen gemessen gewinnt das methodische Suchen — aber nur mit etwa drei zu zwei. In gut einem Drittel der Fälle geht die Wette auf. Wenn du „Andere Startlage" drückst, wechselt der Sieger deshalb regelmäßig; das ist kein Zufallsgenerator, sondern zwei fast gleich gute Antworten auf dieselbe Frage.

Andere Startlage würfelt einen neuen Abstand zwischen den beiden. Derselbe Kampf mit derselben Startlage läuft immer gleich ab, Zelle für Zelle; das ist keine Zufallsmaschine, sondern eine Rechnung.

Was die Zeitleiste zeigt

Unter dem Raster steht der Verlauf in Stichpunkten: wann sich einer geteilt hat, wann er den Gegner zum ersten Mal gesehen und wann er ihn zum ersten Mal getroffen hat, und woran am Ende jemand gestorben ist. Ein Klick auf einen Eintrag springt an diese Stelle im Kampf.

Es sind bewusst wenige Einträge. Ein typischer Kampf besteht aus über hunderttausend ausgeführten Befehlen und noch mehr Schreibzugriffen — vollständig protokolliert wäre das eine Liste, durch die niemand scrollt und aus der niemand etwas lernt. Die Handvoll Einträge hier sind die Stellen, an denen sich der Ausgang entschieden hat.

Der Simulator ist freie Software

Gerechnet wird hier mit rmars, einer Neuimplementierung von pMARS 0.9.6-dev — demselben Programm, das auch die Wertungen auf dem Königstuhl rechnet. Die Ergebnisse im Browser sind deshalb nicht „ungefähr wie auf dem Hill", sondern bitgenau dieselben; nachgewiesen an 106 Vergleichsfällen.

rmars steht unter der GNU General Public License, Version 2 oder später. Das Modul, das dein Browser gerade geladen hat, ist übersetzter Quelltext — und den bekommst du dazu:

Quelltext herunterladen · Lizenztext

Das Archiv enthält den genauen Stand, aus dem dieses Modul gebaut wurde, den Lizenztext und die Bauanleitung. Die Seiten selbst, ihre Texte und Daten gehören nicht dazu — die GPL erfasst den Simulator, nicht das Nachschlagewerk drumherum.

Weiterlesen

Wenn du wissen willst, was in den Feldern eigentlich steht, führt der Lernpfad von den ersten Befehlen bis zum eigenen Warrior: Redcode verstehen erklärt die Sprache, Erster Warrior baut einen von Grund auf, und Strategieklassen ordnet ein, warum ein Scanner gegen ein Papier antritt und nicht gegen irgendetwas.

Wer die Zahlen sucht statt der Bewegung: Wer schlägt wen hat über eine Million durchgerechnete Kämpfe zum Nachschlagen.


← Core-War-Übersicht