warren
Ein Roguelike mit dauerhafter Progression, in Lua, vom Terminal aus gesteuert. Generierte Runs, Klassen, Mutatoren und "Legacy" zwischen den Partien - mit Headless-Modus und Determinismus-Prüfung.
Ein Roguelike mit dauerhaftem Fortschritt in Lua, terminalgesteuert. Generierte Durchläufe, Klassen und Mutatoren, ein Legacy-System zwischen den Partien. Der Schlüssel: Ein Durchlauf ist zugleich zufällig und vollständig deterministisch, denn derselbe Seed muss genau denselben Durchlauf ergeben.
Einführung
Ein Roguelike lebt von Zufall: jeder Durchlauf ein anderes Levellayout, andere Gegenstände, andere Entscheidungen. Aber wäre dieser Zufall echt zufällig, könnte man das Spiel weder testen noch Ergebnisse fair vergleichen. warren löst dieses Paradox mit einem Seed, der die Welt für den Spieler frisch und für die Maschine wiederholbar macht.
Alles andere ist um diese eine Eigenschaft herum gebaut: Klassen, Mutatoren und die Legacy-Schicht zwischen den Spielen. Determinismus ist hier keine Einschränkung des Spaßes, sondern das Fundament, auf dem sowohl die Tests als auch ein sinnvoller Fortschritt ruhen können.
Zufällig für den Spieler, wiederholbar für die Maschine
Der ganze Durchlauf wird aus einer einzigen Zahl abgeleitet. Derselbe Seed gebiert immer dieselbe Welt, aber der Spieler sieht dennoch Frische, weil sich der Seed jedes Spiel ändert. Der Zufall ist also im technischen Sinne scheinbar und im empfundenen Sinne echt: Das Levellayout, die Gegenstände und die Ereignisse sind berechnet, nicht neu ausgewürfelt.
Der Schlüssel liegt darin, dass jede Ziehung durch diesen einen mit dem Seed gespeisten Generator geht. Es reicht, dass ein einziger Aufruf nach Zufall von außerhalb greift, und der Determinismus zerspringt, weshalb der ganze Durchlauf diszipliniert durch dieselbe Quelle laufen muss.
Determinismus als Testwerkzeug
Da der Seed den Durchlauf vollständig bestimmt, lässt er sich ohne Menschen wiederholen. warren hat einen Headless-Modus, der auf einem gegebenen Seed gegen sich selbst spielt und prüft, dass das Ergebnis jedes Mal identisch ist. Das verwandelt eine Lotterie in etwas, das sich regressiv testen lässt: Bricht eine Codeänderung den Determinismus, fängt der Test das sofort ab.
Determinismus testen Sie kontrafaktisch: Sie führen einen unerwarteten Zufallsaufruf außerhalb des Hauptgenerators ein und prüfen, dass ein Durchlauf aus demselben Seed aufhört zu stimmen. Bemerkt der Test das nicht, bewacht er nichts.
Legacy, die Spur der vorherigen Durchläufe
Dauerhafter Fortschritt bedeutet, dass der Tod des Helden nicht alles löscht. Zwischen den Durchläufen bleibt eine Legacy-Schicht: freigeschaltete Klassen, Mutatoren, die die Regeln ändern, kleine dauerhafte Boni. So beginnt das nächste Spiel anders als das letzte, obwohl die Engine auf ihrem Seed weiterhin vollständig deterministisch ist.
Die Trennung dieser beiden Schichten ist hier wesentlich. Der Seed regiert einen einzelnen Durchlauf, das Legacy trägt sich zwischen ihnen weiter, und die beiden dürfen sich nicht vermischen, sonst würde der Fortschritt die Wiederholbarkeit eines einzelnen Spiels verunreinigen.
Was aus dem Seed kommt und was aus dem Legacy
| Element | Quelle |
|---|---|
| Levellayout | Seed |
| Gegenstände und Ereignisse | Seed |
| Freigeschaltete Klassen | Legacy, dauerhaft |
| Regeländernde Mutatoren | Legacy, dauerhaft |
Weitere Projekte
Weitere Projekte aus derselben Kategorie - sehen Sie, wie wir ähnliche Herausforderungen angehen.
Haben Sie ein ähnliches Projekt?
Melden Sie sich - ein Angebot ist kostenlos und kommt innerhalb einer Stunde.



