İçeriğe geç / Skip to content / Zum Inhalt

Leveldesign mit Messwerten, geprüft von einem Bot

Ahmet Balaman

7 Min. Lesezeit

Vibe CodingBOINGWARDGodotLeveldesignSpieldesignTestsClaude Code
Leveldesign mit Messwerten, geprüft von einem Bot

Das Frustrierendste an einem Plattformer ist eine Plattform, die man nicht erreichen kann. Spieler versuchen es zwanzigmal und löschen dann das Spiel. KI-Agenten können einen Parcours sehr schnell erzeugen, aber wer beweist, dass ein schnell erzeugter Parcours wirklich schaffbar ist?

In BOINGWARD hat die Antwort zwei Teile: Die Parcours entstehen nicht aus handverlesenen Zahlen, sondern aus den gemessenen Bewegungswerten des Pogostabs, und ein Bot spielt jeden Parcours mit der echten Pogo-Physik. Dieser Beitrag beschreibt beides und wie die Medaillenzeiten aus genau diesem Bot entstehen. Wie der Pogostab springt, steht im Physik-Beitrag, die ganze Geschichte im Hauptbeitrag der Serie.

Erst messen, dann bauen

Die Regel im Designdokument lautet „Messwerte zuerst“: Wenn die Physik-Abstimmung steht, werden Standard-Sprunghöhe, weitester Sprung und Flugzeit gemessen, und das Plattform-Kit wird um diese Zahlen herum gebaut. In BOINGWARD liegen die Messwerte in einer Datei, CourseMetrics. Alle wurden mit 60 Physikschritten pro Sekunde in einem Test ohne Bildschirm gemessen:

Messwert Wert Bedeutung
Niedrigster Scheitelpunkt 3,0 m Höhe der Spitze über dem Pad beim langsamsten Absprung
Eingependelter Scheitelpunkt 4,0 m Nach eingependelter Kombo, ohne Eingabe
Zeit zwischen zwei Sprüngen 1,18 s Eingependelt auf ebenem Boden
Erster Sprung aus dem Stand 8,7 m Stick ganz nach vorn, direkt nach dem Wiedereinsetzen
Weitester Sprung mit Anlauf 10,2 m Begrenzt durch die horizontale Höchstgeschwindigkeit
Nötiger Freiraum nach oben 7,5 m Eingependelter Scheitelpunkt + Körper + Reserve

Das Werkzeug, das die Parcours baut, nutzt diese Zahlen nie direkt, sondern nur Verhältnisse davon. Ändert sich die Physik-Abstimmung, werden die Messwerte erneuert, der Parcours wird mit tools/build_course.gd neu erzeugt, und jede Lücke passt sich von selbst an.

Der schlimmste Fall: ein frisch eingesetzter Spieler

Jede notwendige Lücke wird am „ersten Sprung aus dem Stand“ gemessen, nicht am „weitesten Sprung mit Anlauf“. Der Grund ist einfach: Fällt ein Spieler und wird an einem Checkpoint wieder eingesetzt, hat er keine Geschwindigkeit. Enthält der Parcours eine Lücke, die nur mit Schwung zu schaffen ist, sitzt der Spieler nach jedem Sturz hinter dieser Stelle fest.

Deshalb setzen die Tests des Spire-Parcours zwei Grenzen:

  • Eine notwendige Lücke darf höchstens 60 Prozent des ersten Sprungs aus dem Stand betragen: 8,7 x 0,6 ≈ 5,2 Meter.
  • Eine Stufe darf höchstens 75 Prozent des niedrigsten Scheitelpunkts hoch sein: 3,0 x 0,75 = 2,25 Meter.

Im langen Klettermodus sind die Grenzen etwas strenger: 55 Prozent für Lücken und 70 Prozent für Höhe. Der Sprung nach einem Katapult wie einem Trampolin oder einer Kanone darf höchstens 75 Prozent des Scheitelpunkts dieses Katapults verlangen.

Auch Lesbarkeit wird getestet

Das Designdokument legt die Reihenfolge der Schwierigkeit fest: zuerst breite, feste Plattformen, dann Lücken, schmale Pads, Schrägen, bewegliche Plattformen, verkettete Präzisionslandungen, Wege zum Wiederaufrappeln und zuletzt Abkürzungen für Profis. Jeder Schritt bringt genau ein neues „Verb“.

Neben dieser Reihenfolge messen die Parcours-Tests noch mehr: ob über den Plattformen 7,5 Meter Freiraum sind (damit der Kopf des Pogostabs nicht an die nächste Plattform stößt), ob der Spieler die nächsten ein bis drei Ziele sehen kann und ob der ganze Parcours ins Telefon-Budget passt. Für den Spire liegt die Grenze bei 60 Draw Calls und 40.000 Dreiecken, ohne Spielfigur, Oberfläche und Himmel.

Auch die Checkpoints haben sich durch eine Regel geändert. In der ersten Version löste ein Checkpoint aus, sobald der Spieler sein unsichtbares Volumen betrat, selbst im Vorbeifliegen. Jetzt zählt ein Checkpoint nur, wenn die Spitze des Pogostabs auf seinem Pad landet. Der Spire hat fünf Checkpoints und ein Ziel, und für das Ziel gilt dieselbe Regel.

Der Bot: jeden Sprung mit echter Physik ausprobieren

Statische Regeln sagen „auf dem Papier möglich“. Um zu zeigen, dass es wirklich möglich ist, spielt ein Bot den Parcours mit dem echten PogoController. Seine Methode ähnelt bewusst der Denkweise eines Spielers:

  • Sprung für Sprung: Jeder Versuch beginnt mit einem Wiedereinsetzen auf der vorherigen Plattform. So hängt der Erfolg eines Sprungs nie vom Glück beim Sprung davor ab.
  • Einmal entscheiden: Der Bot legt sich erst auf ein Ziel fest, wenn der nächste Absprung kurz bevorsteht, so wie ein Spieler wählt, wann er springt. Danach ändert er seine Meinung nicht mehr, sondern korrigiert nur in der Luft.
  • Anlaufsprung: Liegt das Ziel außerhalb der bequemen Reichweite, macht der Bot zuerst einen kleinen Sprung an den Rand seiner Plattform.
  • Bewegliche Ziele: Der Bot sagt voraus, wo eine bewegliche Plattform im Moment der Landung sein wird. Für zeitabhängige Ziele probiert er drei verschiedene Phasen; eine erfolgreiche Landung genügt. Er hat genug Zeit, um zwei volle Zyklen des langsamsten Mechanismus abzuwarten.
  • Zeitgesteuerte Plattformen: Teile wie brechendes Glas oder zerbröckelnde Platten werden vor dem Start in ihren Ausgangszustand versetzt, und der Bot startet erst, wenn seine erste Landung halten wird.

Im langen Klettermodus läuft eine größere Version desselben Ansatzes: Der Bot landet jeden der 804 Sprünge vom Boden bis zum Gipfel mit dem echten Pogostab; der Test dauert etwa 20 Sekunden. Der Bot macht keine Tricks; keine Plattform darf einen verlangen.

Ein Bot ist ein besserer Pilot als ein Mensch

Ein Kommentar im Code des Bots fasst den ganzen Ansatz zusammen: „Er ist ein besserer Pilot als ein Mensch, deshalb sind die statischen Grenzen des Layouts die Fairness-Prüfung; der Bot beweist nur die physische Erreichbarkeit.“

Diese Unterscheidung ist wichtig. Der Bot steuert millisekundengenau und wird nie müde. Nicht jeder Sprung, den der Bot schafft, ist für einen Spieler fair. Deshalb gibt es zwei getrennte Prüfungen, und beide müssen bestehen: Die statischen Grenzen beantworten „Ist das für einen Menschen vernünftig?“, der Bot beantwortet „Ist das mit der echten Physik wirklich möglich?“. Schafft der Bot es nicht, ist der Parcours sicher falsch; schafft er es, ist das nur eine notwendige Bedingung.

Die Medaillenzeiten kommen vom Bot

Medaillenzeiten zu schätzen ist einfach, aber inkonsistent: Ändert sich der Parcours, werden die Zeiten entweder unmöglich oder bedeutungslos. In BOINGWARD wird die Basiszeit aus dem Maß eines sauberen Laufs berechnet:

Basiszeit = Sprünge x 1,18 s + zeitgesteuerte Teile x 2,5 s

In den Leveldaten des Spire werden 61 Sprünge und 9 Teile mit Wartezeit berücksichtigt: 61 x 1,18 + 9 x 2,5 ≈ 94,5 Sekunden. Die Medaillen sind Vielfache davon:

Medaille Faktor Zeit
Gold 1,3 2:02,8
Silber 1,8 2:50,1
Bronze 2,8 4:24,5

Die Zeiten stehen nicht im Code, sondern in data/levels/spire.tres, und das Skript, das die Leveldaten erzeugt, berechnet die Basiszeit bei jedem Lauf neu. Ändert sich der Parcours, passen sich die Medaillen von selbst an die neue Route an; von Hand eingestellt werden nur die Faktoren. Der lange Klettermodus hat keine Medaillen; dort zählen beste Höhe und Gipfelzeit.

Das Telefon-Budget ist auch eine Levelregel

Im langen Klettermodus gehört die Performance zum Layout. Der Turm ist in Abschnitte von 24 Metern geteilt, und jeder Abschnitt darf höchstens drei bewegliche und zwei feste Kit-Teile enthalten. Ist das Budget voll, wird das nächste Kit-Teil durch eine einfache Kulisse aus dieser Zone ersetzt; Katapulte werden aber nie ersetzt, weil der nächste Sprung nach ihrem Scheitelpunkt berechnet ist. In der ungünstigsten Ansicht wurden 40 Draw Calls und etwa 38.000 Dreiecke gemessen.

Häufig gestellte Fragen

Wie legt man Lückenabstände in einem Plattformer fest?

Messen Sie den ungünstigsten Sprung der Figur: meist den ersten Sprung ohne Geschwindigkeit direkt nach dem Wiedereinsetzen. Halten Sie notwendige Lücken bei einem Bruchteil davon (in BOINGWARD 55 bis 60 Prozent). Längere Lücken gehören in freiwillige Abkürzungen.

Lohnt sich ein Bot für Level-Tests?

Wenn Ihre Parcours per Code oder von KI-Agenten erzeugt werden, auf jeden Fall. Ein Bot prüft nach jeder Änderung in Sekunden, ob eine Plattform mit der echten Physik erreichbar ist. Weil ein Bot aber besser spielt als ein Mensch, kann er nicht das Maß für Fairness sein; dafür braucht es eigene statische Grenzen.

Wie sollte man Medaillenzeiten berechnen?

Statt zu schätzen, leiten Sie sie aus einem sauberen Lauf ab: Anzahl der Sprünge mal Flugzeit plus Wartezeit für zeitgesteuerte Teile. Die Medaillen sind Vielfache dieser Zeit. Ändert sich der Parcours, aktualisieren sich die Zeiten von selbst.

Kommentare