// TECH //
Wie Void Daggers deinen ganzen Run abspielt
Ein Daumenkino, kein Film
Brich deinen Rekord in Void Daggers, und das Spiel behält den Run. Du kannst ihn später anschauen, aus deinen eigenen Augen, in dreifacher Geschwindigkeit, wenn du ungeduldig bist. Die Datei, die es behält, ist kein Video, und sie ist keine Aufzeichnung davon, welche Tasten du gedrückt hast. Sie ist etwas dazwischen, und der Grund, warum es so gekommen ist, ist der interessante Teil.
Drei Wege, einen Run zu speichern
Es gibt grob drei Möglichkeiten, und jedes Spiel mit Replays wählt eine davon.
Du kannst Video aufnehmen. Einfach, und riesig. Jeder Frame ist ein voller Bildschirm aus Pixeln, und ein Run von fünf Minuten sind Hunderte Megabyte vor der Kompression. Du verlierst außerdem die Möglichkeit, die Kamera zu bewegen oder die Geschwindigkeit zu ändern, denn ein Video sind nur Bilder.
Du kannst die Eingaben aufnehmen. Das ist die elegante Variante. Speichere, welche Tasten in welchem Frame gehalten wurden, füttere dieselben Eingaben zurück in dasselbe Spiel und lass es sich selbst spielen. Die Datei ist winzig, ein paar Kilobyte für einen ganzen Run. So funktioniert die Speedrun-Verifikation in vielen Spielen.
Oder du nimmst Positionen auf: wo alles war, mehrmals pro Sekunde, und baust die Szene daraus wieder auf. Größer als Eingaben, weit kleiner als Video.
Warum die elegante Variante nicht funktioniert hat
Eingaben aufzunehmen funktioniert nur, wenn das Spiel deterministisch ist, also identische Eingaben immer identische Ergebnisse liefern. Drück dieselben Tasten in denselben Frames, und der zehnte Gegner erscheint beide Male an genau derselben Stelle, mit genau demselben Wackeln beim Anrücken.
Void Daggers ist nicht deterministisch, und nicht einmal nahe dran. Überall im Code fragt das Spiel nach einer Zufallszahl: wo ein Gegner erscheint, in welche Richtung sich ein Schwarm teilt, wie viel Streuung ein Schuss hat, wie die Trümmer fliegen. Jede davon kommt in jedem Run anders zurück. Füttere dieselben Eingaben zurück, und du schaust innerhalb von Sekunden einem völlig anderen Kampf zu.
Es nachträglich deterministisch zu machen hieße, jeden dieser Zufallsaufrufe durch einen Generator mit Seed zu ersetzen, so wie Moon Miner seinen Mond aus einer einzigen Zahl ableitet. Das ist machbar. Es ist auch invasiv, und es bleibt für immer zerbrechlich, denn von da an kann jede Änderung irgendwo im Spiel stillschweigend jedes je aufgenommene Replay kaputtmachen. Ein Frame Abweichung schaukelt sich zu Unsinn auf.
Also nimmt Void Daggers stattdessen Positionen auf.
Was ein Snapshot wirklich enthält
Zwanzig Mal pro Sekunde schreibt das Spiel eine Zeile über dich auf: die Zeit auf der Run-Uhr, wo du warst, wohin du geschaut hast, welche Waffe du hattest, ob der Abzug gedrückt war und ob deine Füße den Boden verlassen hatten.
Zehn Mal pro Sekunde schreibt es den Rest der Arena auf: jeden lebenden Gegner, jeden Boss und wohin er zeigt, jeden Spawner, jedes schwebende Token und den schrumpfenden Rand des Bodens.
Manche Dinge passieren in einem Augenblick statt fortlaufend, und die bekommen eine eigene Liste, jedes mit der genauen Zeit gespeichert, zu der es geschah: Hier ist ein Gegner gestorben, du hast ein Upgrade aufgehoben, ein Boss ist erschienen, du bist gedasht, du bist gesprungen.
Die Lücken füllen
Zehn Snapshots pro Sekunde sähen direkt abgespielt furchtbar aus, wie eine Diashow. Also interpoliert die Wiedergabe, was schlicht heißt, dass sie die Frames dazwischen erfindet, indem sie sanft von einer aufgezeichneten Position zur nächsten gleitet.
Eine Regel hält das genau: Die Snapshots sind die Wahrheit, und die weiche Bewegung ist Dekoration. Driftet das Gleiten leicht von der Realität weg, kommt einen Sekundenbruchteil später der nächste Snapshot und setzt alles wieder genau dorthin, wo es hingehört. Fehler türmen sich nie auf, weil sie überschrieben werden, bevor sie wachsen können. Vergleich das mit dem Eingaben-Replay, wo ein winziger Fehler bei Sekunde zwei bei Sekunde zweihundert immer noch da ist, und erheblich größer.
Wo es landet
All das wird als schlichter strukturierter Text herausgeschrieben und dann komprimiert, was bei langen Listen sich wiederholender Zahlen sehr gut funktioniert. Das Ergebnis wandert in eine kleine Datenbank, die Browser genau für so etwas bereitstellen, sodass es das Schließen des Tabs überlebt.
Das Spiel zeichnet bei jedem Versuch auf, behält aber nur eine persönliche Bestleistung. Auf Steam wird dieselbe komprimierte Datei an deinen Bestenlisten-Eintrag angehängt, weshalb du dort die Runs anderer Leute anschauen kannst und nicht nur deine eigenen.
▶ Void Daggers spielen