Core War ist ein faszinierendes Programmier-Spiel, das 1984 von D. G. Jones und A. K. Dewdney eingeführt wurde.
Es verbindet die Welten von Programmierung und Strategie, indem es virtuelle Programme in einem simulierten Computer gegeneinander antreten lässt. Diese Programme, auch als "Warriors" bezeichnet, kämpfen um die Kontrolle über einen virtuellen Speicherbereich. Im Kern dreht sich das Spiel um die Programmierung in einer abstrakten Assemblersprache namens Redcode. Die Ursprünge, Spielmechanismen und vielfältigen Strategien von Core War haben über Jahrzehnte eine leidenschaftliche Gemeinschaft von Programmierern und Spielern auf der ganzen Welt inspiriert. Die besondere Mischung aus technischem Verständnis, Kreativität und strategischem Denken macht Core War zu einem bemerkenswerten Phänomen in der Welt der Computerspiele und Programmierung.
Die Idee hinter Core War basiert auf einem virtuellen Computer, der eine begrenzte Speichergröße besitzt, den sogenannten "Core". Zu Spielbeginn werden die Kampfprogramme zufällig an unterschiedlichen Stellen dieses Speichers platziert. Jedes Programm führt abwechselnd genau eine Anweisung aus, und Ziel ist es, die gegnerischen Programme zu zerstören. Dies geschieht meist dadurch, dass ein Krieger seine Gegner dazu bringt, ungültige oder schädliche Befehle auszuführen, was letztendlich zum Absturz oder zur Terminierung der gegnerischen Prozesse führt. Der Spieler gewinnt, dessen Programm als letztes noch weiterläuft.
Redcode, die Programmiersprache von Core War, ist dabei eine abstrakte, von echten Assemblersprachen inspirierte Sprache. Sie ist absichtlich vereinfacht, um eine überschaubare aber trotzdem komplexe Spielumgebung zu schaffen. Ursprünglich bestand Redcode nur aus wenigen Befehlen, doch im Laufe der Jahre wurden weitere Befehlstypen und Adressierungsmodi integriert, sodass die Befehlsvielfalt heute sehr umfangreich ist. Ein zentrales Merkmal ist, dass jede Anweisung exakt einen Speicherplatz belegt und genau eine Zyklenzeit benötigt, was für eine präzise Steuerung und Taktung im Spiel sorgt. Die Speicheradresse im virtuellen Core ist relativ, was bedeutet, dass Programme keine absoluten Speicheradressen kennen oder festlegen können.
Stattdessen beziehen sich Befehle immer auf Positionen relativ zur aktuellen Ausführungsposition. Dieser Umstand führt zu einem spannenden taktischen Element, da die Programme sich nie sicher sein können, wo genau im Speicher sie sich befinden – nur die relative Lage zur aktuellen Anweisung zählt. Darüber hinaus gibt es im Core War virtuelle Prozesse, die ein Programm ausführen kann. Statt eines einfachen Befehlszählers besitzen Programme eine Prozesswarteschlange, die mehrere Prozesse enthalten kann. Durch den Befehl SPL können neue Prozesse erzeugt werden, was parallele Ausführung und komplexere Verhaltensweisen ermöglicht.
Prozesse sterben, wenn sie ungültige Befehle ausführen oder einen Fehler verursachen, beispielsweise durch Division durch Null. Wenn ein Programm keine Prozesse mehr besitzt, gilt es als besiegt. Core War ist in der Tat eine Closed-Loop-Umgebung. Es gibt keine Ein- oder Ausgabefunktionen innerhalb der Sprache. Die Simulation ist isoliert, sodass außenstehende Beobachtungen und Interaktionen nur durch spezialisierte Simulatoren erfolgen.
Diese Simulatoren bieten oft die Möglichkeit, den Speicher während eines Spiels zu inspizieren oder zu manipulieren, aber die Programme selbst bleiben vollkommen autark und können nichts von außerhalb wahrnehmen. Verschiedene Versionen von Redcode existieren, wobei das am weitesten verbreitete Format auf dem Entwurf von 1994 basiert. Trotz des offiziellen Status, das als Standard vorgesehen war, wurde dieser niemals formal verabschiedet. Die Weiterentwicklung und Pflege der Sprache erfolgen eher gemeinschaftlich über Foren und Plattformen wie das rec.games.
corewar Usenet. Dieses informelle Ökosystem hat dafür gesorgt, dass Core War lebendig bleibt und mit der Zeit immer komplexer und herausfordernder wurde. Die Strategien, die in Core War angewandt werden, sind vielfältig und oft kreativ. Üblicherweise lassen sich die Kampfprogramme in Kategorien einteilen, deren Interaktionen als eine Art Stein-Schere-Papier-Spiel fungieren. Die drei klassischen Typen sind "Replicator" (Papier), "Scanner" (Schere) und "Bomber" (Stein).
Replicatoren zeichnen sich dadurch aus, dass sie sich selbst kopieren und parallel ausführen. So versuchen sie, den gesamten Speicher mit Kopien ihrer selbst zu füllen und so resistent gegen Angriffe zu werden. Diese Strategie erzeugt oft viele unentschiedene Begegnungen, da sie schwer zu eliminieren, aber meist nicht besonders aggressiv sind. Eine spezielle Form des Replikators ist der sogenannte "Silk", der besonders schnell kopiert und sich schon auf halber Strecke der Speicherfüllung zu vervielfältigen beginnt. Scanner hingegen versuchen, ihre Gegner gezielt zu finden und anzugreifen.
Sie durchforsten den Speicher mit Hilfe von SPL-Anweisungen, die den Gegner dazu bringen, viele Prozesse zu erzeugen. Diese Überlastung schwächt gegnerische Programme, während Scanner dann gezielt mit DAT-Bomben angreifen, um Prozesse abzutöten. Scanner sind komplexer programmiert und dadurch meist etwas größer und gleichzeitig verletzlicher als reine Replikatoren. Bomber werfen regelmäßig vermeintliche Bomben in den Speicher, meist in Form von DAT-Befehlen, um zufällig Gegnerprozesse zu treffen. Obwohl sie blind agieren, sind sie oft schnell und effizient.
Sie können auch mit Imp-Spiralen kombiniert werden, um sich gegen Replikatoren besser zu verteidigen. Eine weitere typische Strategie ist die des Vampirs oder "Pit-Trappers". Diese Programme versuchen, Gegner in eine Falle zu locken, indem sie Stellen im Speicher kontrollieren, in die gegnerische Prozesse hineinspringen und damit aus dem Rennen genommen werden. Vampir-Programme können sowohl auf Bomber- als auch Scanner-Techniken basieren, sind jedoch anfällig für indirekte Angriffe, da sie viele Sprungadressen über den Speicher verstreuen. Der "Imp" ist die einfachste Form eines Warriors.
Es handelt sich dabei um eine einzelne Instruktion, die sich kontinuierlich selbst an die nächste Speicherposition kopiert. Obwohl Imps keine offensive Stärke besitzen, sind sie schwer zu eliminieren. Ihre Stärke liegt in der Fähigkeit, massenhaft repliziert zu werden, was den Gegner oft paralysieren kann. Darüber hinaus gibt es komplexe Konstruktionen wie Imp-Ringe oder Imp-Spiralen, die mehrere Imps in einem zyklischen Verbund verknüpfen. Diese Konstruktionen verbessern die Robustheit gegenüber Angriffen und bringen sogar offensive Potenziale mit sich.
Neuere Ansätze wie Hydras, die viele kleine Bomber oder Core Clears parallel starten, bereichern das Strategie-Spektrum zusätzlich. Quickscanner versuchen mit sehr schnellen Scanfunktionen den Gegner frühzeitig zu entdecken und zu neutralisieren, benötigen jedoch meist eine Backup-Strategie für längere Kämpfe. Bootstraps setzen auf das Kopieren von Programmteilen an andere Speicherstellen, während sie sogenannte Decoys zurücklassen, um Scanner zu täuschen. Core Clears wiederum überschreiben systematisch den gesamten Speicher, um Gegner auszumerzen – meist als Endspieltaktik. Die Programmierung eines Warriors erfordert fundiertes Verständnis von Redcode und den Spielmechanismen.
Viele Programmierer entwickeln ihre Programme basierend auf bewährten Taktiken und nutzen Optimierungswerkzeuge, um die Effizienz und Effektivität ihrer Warriors zu erhöhen. Zudem existieren evolutionsbasierte Programme, die mithilfe genetischer Algorithmen und Programmierung neue Lösungen erarbeiten. Diese sogenannten Evolver generieren automatisch neue Warriors und haben besonders in Umgebungen mit kleineren Core-Größen beachtlichen Erfolg gezeigt. Historisch ist Core War inspiriert von frühen Selbstreplikatoren wie "Creeper" und dessen Zerstörer "Reaper", die in den 1970er-Jahren experimentell bei BBN entwickelt wurden. Auch das Spiel "Darwin" von Bell Labs aus den 1960ern wirkt als indirekte Vorlage mit.
Der Name "Core" bezieht sich auf magnetisches Kernspeicher, eine damals weit verbreitete, inzwischen aber obsolet gewordene Form des Arbeitsspeichers in Computern. Heute erinnert der Begriff noch an Kernspeicher-Abbilder oder Core Dumps in Unix-Systemen. Die erste offizielle Präsentation von Core War erfolgte 1984 in Fachartikeln, insbesondere in der populären Computer-Rubrik von A. K. Dewdney in der Zeitschrift Scientific American.
Es folgten mehrere Updates des Redcode-Standards durch die International Core Wars Society (ICWS), deren Aktivitäten um Mitte der 1990er weitgehend eingestellt wurden. Trotzdem lebt Core War weiterhin durch eine aktive Community und moderne Simulatoren, wie den quelloffenen pMARS Simulator, der das Spiel auf unterschiedlichen Plattformen ermöglicht. Core War ist einzigartig durch die Kombination aus Programmierung, strategischer Planung und taktischem Denken. Es fordert von Spielern technische Fähigkeiten und zugleich kreatives Problemlösen in einem kompetitiven Umfeld. Die Mischung aus Selbstreplikation, Ressourcenverwaltung, Angriff und Verteidigung hat das Spiel zum Klassiker gemacht, der auch Jahrzehnte nach seiner Entstehung noch begeistert und lehrt.
Für Programmierer, die eine Herausforderung außerhalb der traditionellen Computerspiele suchen, bietet Core War eine wunderbare Gelegenheit, tief in die Welt der Assemblersprache und virtuellen Maschinensimulation einzutauchen. Der Wettbewerb mit anderen Warriors schärft das Verständnis für Low-Level-Programmierung, Speicherverwaltung und algorithmisches Design. Zusammenfassend ist Core War mehr als nur ein Spiel. Es ist ein experimentelles Labor, eine Plattform für kreative Algorithmen und ein Kulturgut der Programmier-Community. Mit seiner reichen Geschichte, der innovativen Sprache Redcode und einem dynamischen Spielsystem lockt es sowohl Neulinge als auch erfahrene Entwickler in seinen Bann.
Wer sich darauf einlässt, entdeckt eine faszinierende Welt, in der Code zum Krieger wird und Strategien in binären Schlachten gegeneinander auf dem virtuellen Schlachtfeld antreten.