Nathan Klieme · Handy-Spiel · Expo / React Native
Underworld Ledger
Ein Aufbauspiel fürs Handy. Man führt ein Imperium aus Betrieben, Handelswegen und Einfluss, und alles rechnet auf dem Gerät. Kein Server, kein Konto, kein Netz nötig.
die Spiellogik
Spielkern
Deutsch, Englisch
Worum es geht
Man kauft Betriebe, handelt mit Waren und baut sich ein Netz aus Mittelsmännern auf. Gleichzeitig schaut die Polizei zu. Je größer das Imperium wird, desto mehr Aufmerksamkeit zieht es an. Wer zu schnell wächst, zahlt dafür.
Der eigentliche Reiz sitzt im Zahlenwerk darunter. Einkommen pro Sekunde, Marktpreise, die sich bewegen, Ausbaustufen, die mit jeder Stufe teurer werden, und Ereignisse, die einem dazwischenfunken. Das Ganze läuft weiter, auch wenn die App zu ist. Beim nächsten Start rechnet das Spiel nach, was in der Zwischenzeit passiert ist.
Aufgeteilt ist es in fünf Bereiche. Business für Betriebe und Ausbau. Trade für Ein- und Verkauf. Heat für den Druck der Ermittler. Luxury für das, wofür man am Ende überhaupt spielt. Und das Hauptquartier, wo alles zusammenläuft.
Ein Rundgang
Aufnahmen aus der laufenden AppWie es gebaut ist
Eine Regel gilt im ganzen Projekt: Die Datenverträge bleiben stabil, alles andere darf sich bewegen. Deshalb liegen Spielinhalt, Spielregeln und Spielstand in getrennten Bereichen. Ein Betrieb ist ein Datensatz und keine Funktion. Die Regeln lesen ihn, statt ihn mitzubringen. Wenn ich am Balancing drehe, ändere ich Daten und nicht den Code.
Was es im Spiel gibt
Betriebe, Stufen, Waren, Luxusgüter und alle Balancing-Werte liegen als Daten vor, getrennt von den Regeln, die damit rechnen.
Was die Regeln tun
Simulation, Aufträge, Handel, Hitze, Benachrichtigungen. Einmal pro Sekunde bewegt sich die Welt weiter. Abgeleitete Werte kommen aus Selektoren und stehen nirgends doppelt.
Was erhalten bleibt
Der Spielstand liegt im Speicher des Geräts und wird alle acht Sekunden gesichert. Ältere Stände hebt die App beim Laden auf das aktuelle Format.
Was man sieht
Elf Bildschirmbereiche auf gemeinsamen Bausteinen. Ein Farb- und Abstandssystem, eine Hülle für alle Seiten, geteilte Karten und Listen.
Grundlage
- Expo 54
- React Native 0.81
- React 19 · TypeScript
- React Navigation 7
Im Gerät
- AsyncStorage · Spielstand
- expo-notifications
- expo-blur · Tiefe
- gesture-handler · Wischen
Prüfung
- Jest · 42 Dateien
tsc --noEmit- ESLint
- EAS · Android-Bauten
Das Balance Studio
Eigenes WerkzeugEin Aufbauspiel steht und fällt mit seinen Zahlen. Kostet ein Betrieb zu wenig, ist nach zehn Minuten Schluss. Kostet er zu viel, hört man vorher auf. Ich habe diese Zahlen anfangs von Hand im Code gedreht und jedes Mal neu gebaut. Das hielt genau zwei Wochen.
Also habe ich mir ein zweites, kleines Programm dafür geschrieben. Eine Weboberfläche, in der ich Werte ändere, ein ganzes Portfolio über Stunden durchrechnen lasse und das Ergebnis sehe, bevor ich es übernehme. Über eine Entwicklerbrücke landen die Werte direkt in der laufenden App auf dem Handy. Ohne Neubau, ohne Neustart.
In den Aufnahmen oben sieht man die Spur davon: der Knopf DEV am oberen
Rand. Der gehört zu diesem Weg und ist in der ausgelieferten Fassung nicht dabei.
Wie ich daran arbeite
-
Geprüft wird die Spiellogik, nicht das Aussehen 42 Testdateien decken Wirtschaft, Handel, Aufträge und Hitze ab. Was sich ausrechnen lässt, wird geprüft. Was man sehen muss, sehe ich mir selbst an.
-
Ein gespeicherter Spielstand ist ein Versprechen Die Schlüssel im Gerätespeicher gelten als Vertrag und werden nicht mal eben umbenannt. Ändert sich das Format, schreibt die App den alten Stand beim Laden um, statt ihn wegzuwerfen. Niemand verliert sein Imperium, weil ich etwas umgebaut habe.
-
Vor jeder Auslieferung dieselbe Runde Typprüfung, Tests, Linter, dazu eine Checkliste am laufenden Gerät. Beides steht im Projekt geschrieben, damit ich mich nicht auf mein Gedächtnis verlassen muss.
-
Zwei Sprachen von Anfang an Alle Texte liegen in Wörterbüchern für Deutsch und Englisch, mit typisierter Struktur. Ein fehlender Eintrag fällt beim Übersetzen auf und nicht erst im Spiel.
Auf einen Blick
| Frage | Antwort |
|---|---|
| Plattform | Android und iOS über Expo, ein gemeinsamer Quellcode |
| Sprache | TypeScript, durchgehend, mit Typprüfung als Teil der Auslieferung |
| Daten | Alles im Gerät. Kein Konto, kein Server, keine Übertragung nach außen |
| Spielstand | Format 3, mit Umschreibung älterer Stände beim Laden |
| Simulation | Ein Takt pro Sekunde, Sicherung alle acht Sekunden, Nachrechnen verstrichener Zeit beim Start |
| Tests | Jest für den Spielkern, Typprüfung und Linter für das Ganze |
| Werkzeug | Eigenes Balance Studio auf Vite, mit Brücke in die laufende App |
| Stand | Spielbar, in Arbeit. Android-Bauten liegen vor |