Lernpfad · Schritt 4 von 5
2026-07-18 · Lesezeit ~10 min

Eigene Ideen testen

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

Du hast einen Warrior. Du änderst eine Konstante, lässt ihn gegen einen Gegner laufen, und er schneidet vier Punkte besser ab als vorher.

War die Änderung gut?

Die ehrliche Antwort ist fast immer: Das weißt du nicht. Dieses Kapitel zeigt, warum — und wie viel Messung nötig ist, damit du es wirklich weißt.

Woher der Zufall kommt

In Schritt 1 hast du es schon gesehen: Zehn Läufe derselben Paarung mit je 200 Runden ergaben zwischen 42 und 51 Siege. Nichts hatte sich geändert außer den Würfeln.

Der Zufall in einem Core-War-Duell sitzt an genau zwei Stellen:

  1. Wo der Gegner geladen wird. Der Abstand zwischen beiden Warriors entscheidet mit, wer wen zuerst trifft.
  2. Wer den ersten Schritt macht.

Mehr nicht. Bei gegebener Position und Startreihenfolge läuft eine Runde völlig deterministisch ab — dieselben Vorgaben ergeben immer dasselbe Ergebnis.

Das ist eine gute Nachricht, denn es heißt: Man kann den „wahren" Wert einer Paarung nicht nur schätzen, sondern vollständig ausrechnen. Genau das ist für dieses Kapitel gemacht worden — alle 7801 möglichen Ladepositionen mal beide Startreihenfolgen, also 15.602 Runden je Paarung, über 75 Paarungen hinweg. Das sind 1,17 Millionen durchgerechnete Runden ohne jeden Stichprobenfehler.

Gegen diese Wahrheit lässt sich dann messen, wie oft ein kurzer Testlauf danebenliegt.

Wie viel Rauschen steckt in einem Testlauf?

Die Punkteskala reicht von 0 bis 300. So breit streut das Ergebnis, je nachdem wie viele Runden du laufen lässt:

Runden Streubreite (95 %)
20 110 Punkte
50 68 Punkte
100 50 Punkte
200 35 Punkte
500 22 Punkte
1000 16 Punkte

Lies die 200er-Zeile noch einmal. Zwei Läufe mit je 200 Runden können sich um 20 bis 30 Punkte unterscheiden, ohne dass sich irgendetwas geändert hat. Wenn deine Verbesserung vier Punkte gebracht hat, hast du mit hoher Wahrscheinlichkeit nichts gemessen als das Wetter.

Drei Diagramme nebeneinander: die Streubreite fällt mit steigender Rundenzahl von 110 auf 16 Punkte; der kleinste erkennbare Unterschied fällt von 69 auf 9 Punkte; die Fehlerquote gegen einen Gegner steigt mit dem Budget, die gegen fünf Gegner fällt, beide Kurven kreuzen sich.
Alle drei Befunde auf einen Blick. Die Kreuzung der beiden Kurven rechts ist der überraschendste Teil: Mehr Runden gegen denselben Gegner machen das Urteil schlechter.

Der kleinste Unterschied, den du sehen kannst

Daraus folgt eine praktisch brauchbare Zahl: Wie groß muss ein echter Unterschied sein, damit dein Testlauf ihn zuverlässig erkennt?

Runden erkennbar ab
20 69 Punkte
50 44 Punkte
100 28 Punkte
200 20 Punkte
500 12 Punkte
1000 9 Punkte

Und so oft liegst du daneben, wenn der wahre Unterschied kleiner ist — bei 200 Runden:

wahrer Unterschied Fehlurteil
5–10 Punkte 22 %
10–20 Punkte 8,7 %
20–50 Punkte 0,5 %
über 50 Punkte 0 %

Wer mit 200 Runden testet und einen Unterschied von zehn Punkten misst, hat in etwa jedem fünften Fall den schlechteren Warrior für den besseren gehalten.

Die unbequeme Nachricht

Jetzt der Teil, den man nicht gern hört.

Für diese Untersuchung wurden keine beliebigen Warrior-Paare genommen, sondern echte Entwicklungsreihen — aufeinanderfolgende Versionen desselben Warriors, also genau die Situation, um die es beim Testen geht. Wie groß waren die tatsächlichen Fortschritte?

Schritt wahrer Unterschied Fehlurteil bei 200 bei 1000
ee_v3 → ee_v4 1,0 Punkte 41 % 36 %
ee_v5 → ee_v6a 2,0 Punkte 43 % 37 %
ee_v6a → ee_v6b −1,5 Punkte 42 % 33 %
pst_v3 → pst_v4 0,4 Punkte 46 % 43 %
pst_v2 → pst_v3 26,3 Punkte 8,6 % 6,9 %

Vier von fünf echten Entwicklungsschritten bewegen den Score um ein bis zwei Punkte. Das ist mit keiner praktikablen Rundenzahl nachweisbar — auch 1000 Runden liefern dort ein Ergebnis, das kaum besser als geraten ist.

Nur der eine echte Sprung ist sauber messbar.

Bevor du entmutigt bist: Das klingt schlimmer, als es ist. Wenn zwei Versionen praktisch gleich stark sind, ist es folgenlos, welche du für besser hältst — du verlierst nichts, wenn du dich irrst. Die brauchbare Schlussfolgerung ist eine andere:

Hör auf, kleine Änderungen einzeln messen zu wollen. Sammle mehrere Änderungen, bis ein Unterschied entsteht, der groß genug ist, um sichtbar zu sein. Und misstrau jeder Verbesserung unter zehn Punkten, egal wie schön sie aussieht.

Breite schlägt Tiefe

Der überraschendste Befund zum Schluss — und er widerspricht dem, was man intuitiv tut.

Wenn du ein festes Rechenbudget hast, kannst du es auf zwei Arten ausgeben: alle Runden gegen einen Gegner, oder verteilt auf mehrere. Naheliegend wäre, gegen einen Gegner möglichst gründlich zu messen.

Das ist falsch, und zwar systematisch. Ein einzelner Gegner beantwortet nämlich eine andere Frage als die, die du stellst. Du willst wissen, ob dein Warrior generell besser geworden ist — ein Einzelgegner sagt dir nur, ob er gegen diesen Gegner besser geworden ist. Selbst mit unendlich vielen Runden, also ganz ohne Rauschen, weicht dieses Urteil in 24,5 % der Fälle vom Feldurteil ab.

Bei gleichem Budget:

Runden gesamt alles gegen 1 Gegner verteilt auf 5 Gegner
200 16,5 % Fehlurteile 19,0 %
500 17,1 % 14,4 %
1000 17,9 % 11,6 %
2000 18,5 % 9,3 %

Sieh dir die linke Spalte an: Sie wird mit mehr Runden schlechter.

Das ist die Signatur einer Verzerrung. Mehr Runden machen das Urteil präziser, aber nicht richtiger — man konvergiert immer sicherer auf die falsche Antwort.

Faustregel: Ab etwa 500 Runden Gesamtbudget ist jede weitere Runde gegen denselben Gegner schlechter investiert als dieselbe Runde gegen einen neuen Gegner.

Eine Abkürzung

Nicht alle Paarungen sind gleich verrauscht. Je mehr Unentschieden eine Paarung produziert, desto ruhiger wird das Ergebnis — der Zusammenhang ist mit einer Korrelation von −0,97 ungewöhnlich klar.

Bei 200 Runden streuen Paarungen mit vielen Unentschieden um 23 Punkte, solche mit wenigen um 37. Der Grund ist unmittelbar einleuchtend: Ein Unentschieden bringt einen Punkt statt drei oder null und trägt damit weniger Schwankung bei.

Praktisch heißt das: Wer viel gegen Paper testet, kommt mit weniger Runden aus als jemand, der gegen entscheidungsfreudige Gegner misst.

Dein Arbeitsablauf

Zusammengefasst, für den Anfang:

  1. Mindestens 500 Runden, besser 1000. Alles darunter ist Zeitvertreib.
  2. Gegen mehrere Gegner, mindestens fünf, aus verschiedenen Klassen. Breite vor Tiefe.
  3. Unterschiede unter 10 Punkten ignorieren. Sie sind wahrscheinlich Rauschen.
  4. Änderungen bündeln, statt jede einzeln messen zu wollen.
  5. Bei Auswahlentscheidungen frisch nachmessen. Wer aus zwanzig Varianten die beste Messung heraussucht, findet garantiert eine, die Glück hatte. Die Bestätigung braucht neue Runden.

Punkt 5 ist die Falle, in die praktisch jeder einmal tappt. Wenn du zwanzig Varianten testest und die beste nimmst, hast du nicht die beste Variante gefunden, sondern die mit dem größten Messglück. Erst ein zweiter Lauf mit frischen Runden zeigt, ob etwas davon echt war.

Wenn lückenlos trotzdem danebenliegt

Eine letzte Falle — die heimtückischste, weil sie nicht beim Benutzen der Werkzeuge zuschnappt, sondern beim Verbessern.

Die Zutaten kennst du schon: Der Zufall sitzt in Ladeposition und Startreihenfolge. Bei manchen Paarungen bestimmen beide den Ausgang gemeinsam — und das schärfste Beispiel dafür ist die einfachste denkbare Paarung: ein Imp gegen einen Core-Clear, ein Befehl gegen eine Walze. Den Imp hast du in Schritt 2 selbst gebaut; der Clear ist in drei Zeilen erzählt (in der Arena tritt er als „Lehrclear" an):

ptr     dat  #0, #10      ; die Walzen-Position
clear   mov  bomb, >ptr   ; Bombe auf die Zelle, dann Zeiger +1
        jmp  clear        ; das ist schon die ganze Walze
bomb    dat  #0, #0

Der Imp kopiert sich eine Zelle weiter je Zyklus, die Walze frisst eine Zelle je zwei Zyklen. Der Imp ist also doppelt so schnell wie sein Verfolger und kommt davon — aber nur mit dem Vorsprung, der ihm zusteht. Fehlt ihm genau ein Zyklus, holt die Walze ihn ein.

Dieselbe Startposition, zwei Ausgänge

pmars -r 2 -F 4000 imp.red lehrclear.red

Zwei Runden, beide mit dem Imp auf derselben Startposition. Ergebnis: eine endet unentschieden, die andere verliert der Imp. Dasselbe mit -F 4001, also einer ungeraden Position: wieder eine Runde Remis, eine verloren — nur in umgekehrter Reihenfolge.

Das ist der ganze Befund in einer Zeile: Die Startposition allein entscheidet diesen Kampf nicht. Was sich zwischen den beiden Runden ändert, ist der Anziehende — Simulatoren lassen ihn reihum wechseln, damit keiner der beiden dauerhaft den Vorteil des ersten Zuges hat.

Zwei Größen bestimmen den Ausgang also gemeinsam:

Abstand wer zuerst zieht Ausgang
gerade Imp Remis
gerade Clear Imp verliert
ungerade Imp Imp verliert
ungerade Clear Remis

Remis genau dann, wenn Parität und Zugrecht zusammenpassen.

Die richtige Messung

pmars -P imp.red lehrclear.red

-P (permutate) spielt jede legale Startposition zweimal — einmal mit jedem Anziehenden. Damit kommen alle vier Zeilen der Tabelle vor, und das Ergebnis ist das, was die Tabelle vorhersagt: die Hälfte Remis, die Hälfte Niederlagen. Das ist die ehrliche Antwort auf „wie steht der Imp gegen den Clear?".

Und jetzt die Falle

Sie entsteht nicht beim Benutzen des Werkzeugs, sondern beim Verbessern.

Wer viele Paarungen misst, kommt irgendwann auf den Gedanken, sich die Startpositionen selbst vorzugeben, statt sie dem Simulator zu überlassen — sauber der Reihe nach, 100, 101, 102, und so fort, bis alle abgedeckt sind. Das klingt nach mehr Sorgfalt als eine Zufallsauswahl. Es ist weniger.

Denn während die Positionsliste in Einerschritten aufwärts läuft, wechselt der Anziehende bei jeder Runde ebenfalls. Beide laufen im Gleichschritt. Von den vier Zeilen der Tabelle werden dadurch immer nur zwei besucht: entweder die erste und vierte — dann ist jede Runde ein Remis — oder die zweite und dritte, dann geht jede Runde verloren.

Welche Hälfte du erwischst, hängt daran, welches der beiden Programme du zuerst nennst. Dieselbe Paarung, dieselben alle Startpositionen, exakt reproduzierbar — und je nach Aufrufreihenfolge kommt heraus:

  • jede Runde unentschieden, oder
  • jede Runde verloren.

Die Messung ist lückenlos. Sie ist trotzdem falsch, weil „alle Positionen" nicht „alle Fälle" heißt.

Warum die Standardwerkzeuge nicht hineinlaufen

Der Reihe nach durchgezählte Einzelaufrufe —

pmars -r 1 -F 100 imp.red lehrclear.red
pmars -r 1 -F 101 imp.red lehrclear.red

— sind übrigens nicht betroffen: Jeder Aufruf beginnt frisch, der Anziehende wechselt zwischen den Aufrufen nicht mit, und die Auszählung ergibt korrekt halb Remis, halb Niederlagen. Auch -P ist immun, weil es die Positionsliste ohnehin verdoppelt.

Die Falle schnappt nur dort zu, wo Runden am Stück gerechnet werden und du dir die Positionsfolge selbst gebaut hast. Genau deshalb ist sie so unauffällig: Sie trifft nicht den Anfänger, der das Werkzeug nimmt, wie es ist, sondern den Fortgeschrittenen, der es gründlicher machen wollte.

Die Abhilfe ist entsprechend klein — die eigene Liste zweimal durchlaufen lassen. Weil die Anzahl der legalen Positionen ungerade ist, beginnt der zweite Durchgang mit dem jeweils anderen Anziehenden, und alle vier Fälle kommen vor. Das ist genau das, was -P von sich aus tut.

Dass die Verdopplung wirkt, hängt an der ungeraden Positionsanzahl. Wäre sie gerade, liefe der Wechsel des Anziehenden phasengleich weiter und der zweite Durchgang brächte keine neue Abdeckung.

Die allgemeine Lehre

Der Imp ist hier nur der Zeuge. Der Satz gilt für jede Messung:

Wenn zwei Größen ein Ergebnis gemeinsam bestimmen und man sie im Gleichschritt durchzählt, misst man die Hälfte des Zustandsraums und hält sie für das Ganze.

Das Unangenehme daran ist, dass so eine Messung nach mehr Sorgfalt aussieht als eine Stichprobe, nicht nach weniger. Vollständigkeit in einer Dimension ist kein Ersatz für Vollständigkeit im Zustandsraum — und wer ein Standardwerkzeug durch etwas Gründlicheres ersetzt, sollte prüfen, was das Werkzeug still für ihn erledigt hat.

Was du jetzt weißt

  • Der Zufall sitzt in Ladeposition und Startreihenfolge — sonst nirgends.
  • Bei 200 Runden beträgt die Streubreite 35 Punkte; erkennbar sind erst Unterschiede ab etwa 20 Punkten.
  • Echte Entwicklungsschritte sind meist 1–2 Punkte groß und damit praktisch nicht einzeln messbar.
  • Ein einzelner Gegner ist systematisch verzerrt — mehr Runden machen das schlimmer, nicht besser.
  • Tie-lastige Paarungen brauchen weniger Runden.
  • Selbstgebaute, aufsteigend durchgezählte Positionslisten koppeln Parität und Zugrecht — die Liste doppelt durchlaufen lassen, oder gleich -P nehmen.

Im letzten Schritt geht es darum, den Warrior dorthin zu schicken, wo er gegen das echte Feld antritt.


Grundlage: vollständige Auszählung von 7801 Ladepositionen × 2 Startreihenfolgen je Paarung (15.602 Runden), über 75 Paarungen und 15 Warriors — 1,17 Millionen Runden, dazu 4000 simulierte Testläufe je Messpunkt. Der wahre Score hat damit keinen Stichprobenfehler; die Fehlerquoten sind exakte Auszählungen, keine Modellierung.



← Core-War-Übersicht