‹ Alle Artikel

Warum ein fehlerhafter Bot besser testet als ein perfekter

Ein perfekter Test-Bot hielt ein Feature für wertlos — und deckte damit einen Konstruktionsfehler zu, der seit Monaten drinsteckte. Erst der Bot, der Fehler macht, machte ihn sichtbar.

Ich hatte in einem meiner Spiele ein Feature gebaut, das ich nicht bewerten konnte. Eine Energie-Reserve — ein bisschen mehr Puffer für Spieler, die knapp kalkulieren. Klang sinnvoll. Aber war es das auch? Half es wirklich, oder war es Deko?

Um sowas zu messen, lasse ich Bots gegeneinander spielen. Tausende Partien, saubere Zahlen. Nur: Der Bot machte das Feature unsichtbar. Er geriet nie in die Lage, in der die Reserve überhaupt gebraucht wird. Seine Energie fiel nie unter 75 Prozent. Er ist eben perfekt — sieht jede Gefahr früh, hält keine Taste einen Tick zu lange. Genau deshalb ist er niemand.

Dreimal bin ich an dieser Wand gestanden, an verschiedenen Features. Und dreimal hab ich denselben faulen Satz gedacht: „Das kann die Bot-Messung halt nicht." Halb richtig. Und ganz bequem.

Der Denkfehler

Dann fiel mir auf: Wenn eine Messung ein Feature nicht sehen kann, liegt das nicht zwangsläufig an der Messung. Manchmal liegt es am Maßstab. Ein perfekter Spieler erreicht die Grenzen nie, gegen die ein Feature helfen soll. Also misst er, das Feature sei wertlos — und hat einfach nur nie in der Situation gesteckt, für die es gedacht ist.

Die naheliegende Antwort wäre: „Dann musst du echte Menschen testen lassen." Stimmt auch. Aber echte Menschen sind langsam, teuer und nicht reproduzierbar. Was ich wollte, war die Reproduzierbarkeit der Bots und die Fehlbarkeit der Menschen. Also: einen Bot bauen, der die Fehler macht, die Menschen machen.

Vier Arten, schlechter zu spielen

Ich hab nicht einfach Zufall reingekippt. Ich hab überlegt, wodurchMenschen sich von einem perfekten Bot unterscheiden — und daraus vier Regler gebaut, jeder aus einer echten Zahl abgeleitet:

  • Reaktionszeit. Der Bot sieht eine Gefahr und reagiert im selben Moment. Ein Mensch braucht rund eine Fünftelsekunde. Bei der Taktrate des Spiels sind das gut zwei Dutzend Ticks Blindflug. Also: Eingaben verzögert durch einen Puffer schicken.
  • Aufmerksamkeit. Der Bot prüft alle Richtungen gleichzeitig. Ein Mensch schaut in eine. Also: den Suchkegel verengen.
  • Übersteuern. Der Bot lenkt exakt so viel wie nötig. Ein Mensch reißt in Panik zu weit. Also: den Ausschlag gelegentlich überziehen.
  • Gier. Der Bot stoppt bei einer sinnvollen Schwelle. Ein Mensch hält die Taste, bis der Tank leer ist. Genau die Achse, die Ressourcen-Features überhaupt erst messbar macht.

Wichtig war mir, das nicht als zweiten Bot zu bauen, sondern als Hülle um den bestehenden: guter Bot entscheidet, Hülle verschlechtert die Entscheidung. Sonst driften die beiden beim ersten Bugfix auseinander, und man pflegt zwei Wahrheiten. Und alle Abweichungen kommen aus einem gesteuerten Zufallsgenerator — gleicher Startwert, gleicher „Mensch". Reproduzierbar bleibt reproduzierbar.

Und dann kam der Teil, den ich nicht erwartet hatte

Der fehlerhafte Bot trieb die Energie tiefer als der perfekte — aber nicht so tief, wie ich dachte. Nur auf etwa die Hälfte, nicht in den kritischen Bereich. Das war seltsam genug, um nachzurechnen.

Und da lag der eigentliche Fehler, seit Monaten, unbemerkt: Die Energie regenerierte schneller, als sie sich verbrauchte. Anderthalbmal so schnell. Man hätte die Taste über die Hälfte der Zeit halten müssen, damit der Tank überhaupt anfängt, sich zu leeren.

Die Ressource war für niemanden ein Limit — egal ob perfekter Bot, fehlerhafter Bot oder Mensch. Halten war schlicht gratis. Das ganze Feature war Deko, und zwar nicht wegen schlechtem Design, sondern weil eine einzige falsche Zahl es aushebelte.

Der perfekte Bot hatte das verdeckt. Er kam ja nie in die Nähe. Erst der Bot, der die Taste zu lange hielt, machte den Konstruktionsfehler sichtbar.

Die Zahl, die alles umgedreht hat

Ich hab die Regeneration korrigiert, sodass Halten wieder etwas kostet, und dann dieselbe Messung nochmal gefahren — einmal mit perfekten Bots, einmal mit den fehlerhaften. Bei einem verwandten Feature sah das so aus:

perfekte Bots:   100 : 0     "Feature wertlos"
menschliche Bots:  9 : 9     Feature trägt

Dieselbe Frage, zwei gegensätzliche Antworten. Und die richtige war die mit den Fehlern drin.

Hätte ich der perfekten Messung geglaubt, hätte ich eine funktionierende Balance-Achse gelöscht — mit dem guten Gefühl, „datenbasiert" entschieden zu haben. Die gefährlichen Fehlmessungen sind nicht die, bei denen gar nichts rauskommt. Es sind die, bei denen ein sauberes Ergebnis dich etwas Richtiges wegwerfen lässt.

Seitdem misstraue ich sauberen Ergebnissen ein bisschen mehr als schmutzigen. 100 zu 0 ist selten ein starkes Signal. Meistens heißt es nur, dass der Maßstab die interessante Hälfte des Spiels nie zu Gesicht bekommen hat.

Projekt im Kopf?

Wenn Sie an ähnlichen Problemen sitzen — wir bauen Software, die solche Fallen umgeht.

✉ contact@otaku-development.de