Skip navigation

ARES


Page Content:

Einführung in den Krieg der Kerne

Page Contents

  1. Einführung in den Krieg der Kerne
    1. Preface
    2. Mars - Virtuelle Arena
    3. Zeus - Debugger
    4. Ares - Besonderheiten
    5. Hermes - Experimentalmodus
  2. Spielmechanik
    1. Relative Adressierung
    2. Entfernungsbeschränkung (Read/Write Limit)
    3. Wie ein Kampf ausgetragen wird
    4. Wie ein Kampf beendet wird
    5. Tournament
    6. Benchmark
    7. Konfiguration des MARS
    8. King of the Hill
  3. Zusammenfassung

Preface

In den 1980ern wurde derCore Warder Öffentlichkeit von Alexander Keewatin Dewdney zum ersten mal vorgestellt. Ein ähnliches Spiel (Darwin) wurde bereits in den 1960ern gespielt. Die Wenigen, die schon einmal von Core War gehört, es aber noch nie gespielt haben, glauben oft, daß es sich dabei um ein Hackerspiel handelt, wobei dem Wort Hacker oft eine, von den Medien verbreitete, negative Bedeutung beigemessen wird. Ich wurde sogar schon mehrmals gefragt, ob man bei Core War Viren programmiert. Die Antwort ist klar und deutlich: Nein! Man lernt weder, wie man Viren schreibt, noch lernt man etwas darüber, wie man in andere Computer einbricht. Wenn man Core War-Programme schreibt, hat man ein ganz anderes Ziel vor Augen: Es geht im Grunde darum, Programme zu optimieren. Hacker sind in Wirklichkeit selten die bösen Jungs, die in die Rechenzentren des Pentagons eindringen, sondern eher Personen, die gerne schwierige Probleme lösen. Der Begriff bezieht sich dabei nicht unbedingt auf den Computerbereich. (Mehr dazu unter: How to become a hacker)

Auf dieser Homepage findest du im Kapitel Tutorial Erklärungen zur allgemeinen Arbeitsweise von Prozessoren sowie zu grundlegenden Programmieraufgaben, die immer wieder vorkommen. Dieses Kapitel setzt teilweise vorraus, daß du die Sprachelemente von Redcode schon kennst, aber die Programmtexte sind kommentiert, damit du sie auch so verstehen kannst. Wenn dir etwas nicht klar ist, dann schlage in der Referenz nach. Dort werden die Sprachelemente ausführlich behandelt und es gibt auch eine überblicksartige Zusammenfassung aller Redcode-Befehle zum Nachschlagen für Profis. Das Handbuch erklärt, wie man mit dem Programm ARES umgeht und welche Unterschiede es zu anderen MARS-Programmen gibt. Zuletzt gibt es unter Links noch eine Liste ausgesuchter Webseiten. Manche davon werden dir von besonderem Nutzen sein, wenn du mit dem studieren der ARES-Homepage fertig bist, und mehr über die Programmierung von Kampfprogrammen lernen möchtest.

Mars - Virtuelle Arena

Krieg der Kerne ist ein Programmier-Spiel. Kämpfe werden von Programmen ausgetragen, die zuvor von den Spielern in einer Assemblersprache namens Redcode geschrieben werden. Die Arena ist der Speicher eines simulierten Computers, der (wie moderne Rechner) dazu in der Lage ist, mehrere Programme gleichzeitig auszuführen. So ein Simulator wird M.A.R.S. (Memory Array Redcode Simulator) genannt, der Speicher Core (eine Anspielung auf die uralten Ringkernspeicher). Der MARS lädt die gegnerischen Kampfprogramme an zufällige Orte in den Core und beginnt abwechselnd immer einen Befehl des einen Spielers und dann einen des anderen auszuführen, solange, bis nur noch eines der beiden Programme aktiv ist. Du spielst Core War also, indem du ein Programm schreibst, es solange verbesserst, bis du damit zufrieden bist, und es dann gegen ein anderes Kampfprogramm antreten läßt.

Zeus - Debugger

Bildschirmfoto des "Core View"
DerCore Viewvon ARES

Das Programm, mit dem du den MARS steuerst und überwachst, wird Zeus-Einheit genannt, in diesem Falle ist es das Programm ARES. Die Zeus-Einheit hat die Aufgabe, Programme in den Core zu laden, die Simulation auf Wunsch zu pausieren, Punkte zu berechnen, und den Kampf grafisch darzustellen.

Die grafische Ansicht des Speichers (Core View) repräsentiert eine lineare Folge von Speicherzellen, pro Zeile werden 100 Zellen angezeigt. Jedesmal, wenn ein Programm etwas im Speicher verändert, wird die jeweilige Zelle entsprechend eingefärbt. Auf diese Weise kann man ganz gut beobachten, was im Speicher vor sich geht, und ob es so aussieht, wie man es sich erwartet hat.

Ares - Besonderheiten

Mit ARES steht dir eine komplette Core War Entwicklungs-Umgebung zur Verfügung. Du kannst deine Programme editieren, in den Speicher laden lassen und die Ausführung Schrittweise verfolgen. Dabei kannst du die Simulation jederzeit unterbrechen und die genauen Inhalte aller Speicherzellen einsehen, um deine Kampfprogramme gründlich zu testen. Du kannst den Simulator auf vielfache Weise benutzen - So kannst du den MARS einfach laufen lassen und das Muster im Core View analysieren, oder du gibst neue Befehle direkt in den Speicher ein. Du kannst ausgesuchte Speicherzellen extra imWatches-Fenster anzeigen lassen, damit du die Variablen deines Programmes bequem überwachen kannst - dabei hast du auch die Möglichkeit sogenannte Break Points und Break Conditions zu definieren: Dadurch kannst du dein Programm anhalten lassen, sobald es einen bestimmten Befehl erreicht hat oder der Inhalt einer Zelle einen bestimmten Wert annimmt. ARES bietet noch weitere Hilfen, die besonders für Anfänger nützlich sind, mehr dazu im Abschnitt Handbuch.

Hermes - Experimentalmodus

Schließlich ist ARES nicht nur ein Krieg der Kerne-Spiel; Es gibt nochHermes, eine experimentelle Erweiterung des Simulators, die eine virtuelleKonsolebietet: Tastatur und Bildschirm. Dadurch kann man ein richtiges Betriebsystem in Redcode schreiben. Diese Erweiterung ist besonders interessant, weil man so ganz grundlegend erfahren kann, wie Computer und Betriebsysteme funktionieren. (Ein Miniatur-System-ROM wird mit ARES ausgeliefert)

Spielmechanik

DAT-Bomben

Es gibt mehrere Möglichkeiten, wie ein Warrior seinen Gegner besiegen kann. Meistens geht es aber darum, den Programmcode des Gegners mit illegalen Instruktionen zu überschreiben. Wenn es einem Kampfprogramm gelingt, eine sogenannte DAT-Bombe über den Code des anderen Programmes zu schreiben, dann wird das andere Programm früher oder später versuchen, diese illegale Instruktion auszuführen, in der Annahme, es sei an dieser Speicherstelle immer noch ein sinnvoller Befehl vorhanden. Der DAT-Befehl ist zwar wichtig, aber er kann nicht als Anweisung benutzt werden. Versucht ein Programm den Befehl DAT auszuführen, dann hat das zur Folge, daß das Programm nicht weiter ausgeführt wird - es stirbt.

Relative Adressierung

Nun wäre es ziemlich einfach, wenn ein Programm von Anfang an wüßte, wo im Core sein Gegner gespeichert ist - ein einzelner MOV-Befehl könnte schon den gegnerischen Code mit einer DAT-Anweisung überschreiben. Damit das Spiel zur Herausforderung wird, gilt es ein paar Schwierigkeiten zu überwinden: Zum einen werden die Programme in einen zufällige Speicherposition geladen, zum anderen ist es (im Gegensatz zu echten Computern) nicht möglich, die einzelnen Speicherzellen über ihre absolute Adresse anzusprechen. Eine MOV-Anweisung kann also nicht lauten: Speichere Wert W an Speicher-Zelle Nr. A, sondern jede Adressierung muß relativ zur Position des ausführenden Befehles erfolgen: Speichere in der Zelle, die von hier aus Z Zellen entfernt ist.

Entfernungsbeschränkung (Read/Write Limit)

Man kann noch eine optionale Erschwernis einstellen - die Limits. Wenn Limits eingeschaltet sind, dann kann mittels relativer Adressierung nur eine bestimmte Distanz überwunden werden. Wenn ein Kampfprogramm nun den gesamten Speicherraum mit DAT bombardieren will, dann bleibt ihm nichts anderes übrig, als seinen eigenen Programmcode an eine andere Stelle des Speichers zu kopieren - womit von dort aus natürlich anderere Speicherbereiche erreicht werden können. Limits sind jedoch eine Erweiterung, die vor allem für fortgeschrittene Redcoder interessant ist.

Wie ein Kampf ausgetragen wird

Nachdem der Benutzer die Kampfprogramme ausgewählt hat, werden die Quelldateien der beiden Warriors vom Assemblerprogramm eingelesen und, sofern möglich, übersetzt. Die entsprechenden Maschinenbefehle werden an zufällige Positionen in den Core geschrieben und die Simulation beginnt. Die Zeus-Einheit ist die Fernsteuerung des Simulators, mit ihr kann man den Programmablauf vorrübergehend unterbrechen, den Inhalt des Speichers untersuchen oder Speicherinhalte während des Kampfes für Testzwecke verändern.

Wie ein Kampf beendet wird

Ein Programm gewinnt, wenn es alleinige Kontrolle über den Prozessor des MARS innehat. Das ist der Fall, wenn das gegnerische Programm keine aktiven Prozesse mehr hat. Wenn entweder ein Programm gewinnt oder eine bestimmte Anzahl von Befehlen ausgeführt wurde, zeigt die Zeus-Einheit das Ergebnis des Kampfes an.

Tournament

Es gibt mehrere Möglichkeiten, unter welchen Umständen Kämpfe stattfinden können. Üblicherweise läßt man zwei Programme eine gewisse Anzahl von Kämpfen ausführen, denn der Ausgang einer Schlacht hängt nicht nur von der Stärke eines Warriors ab, sondern auch die Startposition im Speicher kann einem der beiden Gegner einen Vorteil verschaffen. Es gibt aber auch die Möglichkeit, mehr als nur zwei Warriors gleichzeitig antreten zu lassen.

Benchmark

Um die Stärke eines Warriors zu messen, läßt man ihn gegen ein Set ausgesuchter Kampfprogramme antreten. Jede der einzelnen Konfrontationen wird mehrfach ausgetragen, weil die Startposition einen Einfluß auf das Ergebnis hat. Der Durchschnitt aller erreichten Punkte ist als Ergebnis des Benchmark eine ungefähre Information über die Stärke des geprüften Warriors.

Konfiguration des MARS

Es ist möglich, mehrere Eigenschaften des virtuellen Computers zu verändern. So kann man zum Beispiel Kämpfe in einem größeren Speicher ablaufen lassen, was andere (komplexere) Vorgehensweisen ermöglicht. Neben der Speichergröße gibt es noch einige andere Einstellungen, wie Read/Write Limits, P-Space, maximale Programmgöße usw.

King of the Hill

Es gibt mehrere Server im Internet, die permanente online-Tournamente anbieten. Man kann sein Programm per e-Mail an den Server senden und gegen die Programme, die es schon auf den Hill geschafft haben, antreten lassen. Allerdings sind fundierte Kenntnisse über Redcode-Programmierung, wie auch eine gewisse Portion Kreativität, von Nöten, wenn man einen Warrior schreiben will, der das Zeug zum König hat.

Zusammenfassung

Das Ziel des Spieles ist es, dafür zu sorgen, daß sich das Gegnerprogramm selbst beendet. Das geschieht häufig durch Überschreiben mit illegalen Instruktionen, wie z. B. ein DAT-Befehl oder aber auch eine Division durch 0.
Die wichtigste Aufgabe der Zeus-Einheit ist das Laden der Warriors in den Core, sowie die Überwachung der Kämpfe. Darüber hinaus kann sie Veränderungen im Core visuell darstellen und Funktionen zur Fehlersuche bereitstellen.

Tutorial



Content Management:

μCMS α1.6