DevLog #7 — RiverTycoon merkt sich jetzt, wer du bist. Und der Laden ist endlich voll.
Der grösste Meilenstein bisher: RiverTycoon hat einen echten Speicherstand. Dazu ein Katalog mit 55 statt 15 Artikeln, eine funktionierende Kaufstrecke inklusive Lieferung, und die Möglichkeit, jederzeit neu anzufangen.
Der Moment, auf den alles andere aufbaut
Bis vor Kurzem hatte RiverTycoon ein Problem, das man einem fertigen Spiel nicht verzeiht: Jede Sitzung war folgenlos. Schliesst du das Spiel, ist dein Fortschritt weg. Das lässt sich eine Weile mit "kommt noch" abtun, wenn man an Systemen wie der Financial Engine oder den Product Blueprints baut — aber irgendwann ist der Punkt erreicht, an dem nichts anderes mehr zählt, bis das steht.
Jetzt steht es. RiverTycoon speichert automatisch bei jedem Tageswechsel und beim Beenden, und lädt beim Start genau da weiter, wo du aufgehört hast.
Der Speicherstand ist da
Drei Bausteine mussten zusammenkommen, bevor sich das nach etwas anfühlt, dem man vertraut:
- Der Kern (
GameStateSerializer) kennt alle Spielsysteme und verwandelt ihren Zustand in eine Datei — und zurück. Ein vollständiger Speichern-Laden-Durchlauf lässt sich dadurch in Millisekunden testen, ganz ohne das Spiel zu starten. - Die Verdrahtung hängt den Serializer an den echten Spielstart:
AutoSaveDriverlädt beim Boot, sichert bei jedem Tageswechsel und beim Beenden. Ohne sie wäre der Speicherstand ein Feature, das nur in Tests existiert — mit ihr betrifft es jede Spielsitzung. - Die Kontrollprobe: Was passiert, wenn ein Teil des Zustands beim Speichern fehlt? Ohne eigene Tests dafür hätten wir das nie bemerkt, bis irgendwann ein Spieler sein aufgebautes Produkt-Portfolio verliert, weil eine Komponente beim Laden
nullzurückgibt statt der echten Daten. Genau diesen Fall haben wir gezielt nachgebaut, bevor er passieren konnte.
Am 2. August lief der erste vollständige Durchlauf im echten Spiel: HUD steht, die Ingame-Uhr läuft, ein Auftrag wird angenommen, Energie sinkt, Geld kommt rein — und beim Tageswechsel landet automatisch eine Speicherdatei auf der Festplatte. Kein Systemfehler, kein Datenverlust.
Neues Spiel — endlich ohne Umwege
Mit einem Speicherstand kommt sofort die nächste Frage: Wie fängt man noch mal von vorne an? Die alte Antwort war unschön — die Save-Datei von Hand löschen. Jetzt gibt es einen echten "Neues Spiel"-Pfad im Menü.
Das klingt nach einer Kleinigkeit, war es technisch aber nicht: Die Spiel-Manager laufen als Singletons, die jede Szene überleben, und ihre Startwerte werden genau einmal beim Prozessstart gesetzt. "Speicherstand löschen und neu laden" hätte deshalb einfach die alten Zahlen zurückgebracht. Die Lösung nimmt den echten Ausgangszustand einmalig auf, bevor irgendetwas geladen wird — ein neues Spiel ist danach nur noch "lade diesen einen bekannten Anfangszustand". Sauber, nachvollziehbar, und mit einer eigenen Testreihe abgesichert.
Der Weg dorthin: eine Pipeline, die tatsächlich funktioniert
Zwischen dem letzten Update und heute liegt auch ein Kurswechsel, der die vergangenen Wochen erklärt: Die ursprüngliche Idee für 3D-Objekte war eine KI-Bildpipeline — DALL-E-Prompt zu einem Rodin/Meshy-Dienst, der daraus ein 3D-Modell macht, danach Handnacharbeit. Ehrlich Bilanz gezogen: Diese Strecke hat in ihrer gesamten Laufzeit kein einziges Asset geliefert, das im Spiel gelandet ist. Also raus damit, ersatzlos.
An ihre Stelle ist eine eigene, deutlich unspektakulärere aber verlässliche Blender-Pipeline getreten: eine 37-Farben-Studio-Palette für alle Objekte, ein Baukasten mit wiederverwendbaren Grundformen inklusive automatischer Qualitätsprüfung (steht ein Teil frei, ragt es aus seinem Nachbarn heraus, passt die Farbe zum Nachbarn) und ein Renderer für die Sichtkontrolle. Ein neues Objekt braucht damit nur noch ein kleines Bau-Skript statt eines Hoffens auf einen KI-Dienst.
Das Ergebnis der letzten Wochen: 56 eigenproduzierte Props, sieben komplette Objekt-Bundles — vom Kühlschrank mit gesundem Essen über Kantine und Liefer-Restaurants bis zu Monitoren, Servern, Schreibtischen und Bürodeko. Jedes davon mit eigenem Qualitätsprotokoll und Renderbild.
Der Laden hat jetzt Inhalt
Der nächste grosse Sprung betrifft den Damazon-Shop: Aus 15 Artikeln — von denen zwei ehrlich gesagt Testattrappen mit Fantasienamen waren — sind 55 echte Katalogeinträge geworden, gespeist aus genau diesen 56 Props. 9 Hardware-Artikel, 25 Möbelstücke, 21 Gerichte. Jeder mit Anzeigename, jeder mit passendem 3D-Modell, keine zwei auf demselben Prop.
Und der Shop ist nicht länger nur Deko: Die Kaufstrecke funktioniert jetzt End-to-End. Du kaufst ein Upgrade, es wird geliefert (mit echter Zustellzeit, nicht sofort), du packst das Paket aus, und das Modell erscheint an seinem Platz im Büro — inklusive der Wirkung, die es haben soll. Die Kaffeemaschine aus dem letzten Update lässt sich damit erstmals auch tatsächlich kaufen, statt nur im Code zu existieren.
Was technisch darunter liegt
GameStateSerializer — kennt alle Systeme, kein Dateisystem-Bezug
FileSaveStore — einziger Typ im Projekt, der Dateien anfasst (atomar über .tmp)
AutoSaveDriver — lädt beim Start, sichert bei Tageswechsel & Beenden
ItemCatalogGenerator — erzeugt Katalogeinträge aus vorhandenen Prefabs
UpgradePurchaseService — Kauf gegen den Ledger
DeliveryScheduler — tickgetriebene Lieferbuchführung, ohne Coroutinen
WorkplaceManager — Besitz, Platzierung, Modifier-Wirkung
studio_palette.py — 37-Farben-Palette, Grundlage aller Props
prop_kit.py — Bau-Primitive, automatische QC, FBX-Export
qc_render.py — Renderer für die Sichtprüfung
Die Test-Suite ist mit jedem Baustein gewachsen: von 107 auf 451 EditMode-Tests, durchgehend TDD — Test zuerst, dann der Code. Bei einem System, das speichert, lädt und dabei nichts verlieren darf, ist das kein Nice-to-have mehr, sondern die einzige Art, sich selbst zu glauben.
Was der Spieler jetzt erleben kann
- Du spielst, machst Fortschritt, schliesst das Spiel — und findest beim nächsten Start alles genau so vor, wie du es verlassen hast.
- Willst du neu anfangen, geht das über einen echten Menüpunkt, ohne Dateien von Hand zu löschen.
- Der Laden ist gefüllt: 55 statt 15 Artikel, quer durch Hardware, Möbel und Essen.
- Ein Upgrade zu kaufen ist kein leeres Versprechen mehr — es kommt an, du packst es aus, es steht in deinem Büro und wirkt.
Was als Nächstes kommt
Die Assets sind nicht länger der Engpass — der nächste Fokus ist, die Kaufstrecke fertig ans Interface zu bringen: eine eigene Shop-Rubrik im Damazon-Fenster, ein zweites kaufbares Upgrade als echte Alternative zur Kaffeemaschine, und die Wiederherstellung ungeöffneter Pakete nach dem Laden. Danach steht der nächste grosse Block an: die ersten Charaktere fürs Spiel (Bundle 11), die Voraussetzung für alles, was RiverTycoon von der reinen Job-Simulation zum eigentlichen Tycoon macht.
Release-Ziel bleibt: Dezember 2026.
Pixel River Studio · Solo Indie Dev · Nagold-Hochdorf, Baden-Württemberg Stack: Unity 6 · URP · C# · ScriptableObjects · Eleventy · Hetzner
Kommentare