Bannermarch
Persistentes Browser-Strategiespiel über den Aufbau eines mittelalterlichen Hauses mit Lehen, Bündnissen, Märkten und Kriegen.

Ich habe Bannermarch als browserbasiertes persistentes Strategiespiel gebaut, in dem ein Spieler als landloser Ritter beginnt und ein Haus mit mehreren Lehen aufbaut. Die Welt entwickelt sich weiter, während der Browser geschlossen ist. Spieler verwalten die Produktion, errichten Gebäude, rekrutieren Infanterie, bewegen Ressourcen und Armeen, überfallen rivalisierende Häuser, schließen Bündnisse, handeln über transportgebundene Märkte und verfolgen jedes Ergebnis in der Chronik. React und TypeScript treiben den Client an, während Cloudflare Workers, SQLite-gestützte Durable Objects und WebSockets die Simulation autoritativ und persistent halten.
Das Problem
Ein persistentes Strategiespiel muss Wirtschaft, Reisen und Konflikte auch bei langen Abwesenheiten weiterführen, ohne dem Browser zu vertrauen oder eine teure globale Spielschleife auszuführen. Mehrspieleraktionen müssen außerdem gegen den aktuellen Zustand aufgelöst werden, selbst wenn zwei Häuser fast gleichzeitig handeln.
Der Ansatz
Der React-Client übernimmt die Darstellung und sendet Befehle an einen autoritativen Cloudflare Worker. SQLite-gestützte Durable Objects verwalten jedes Haus und die gemeinsamen Weltsysteme. Zeitbasierter Zustand wird beim Zurückkehren eines Spielers verzögert aufgelöst, während Alarme Ereignisse verarbeiten, die nicht bis zur nächsten Anmeldung warten können. Eigene WebSocket-Kampfsitzungen übertragen validierte Zustände für Koalitionskämpfe in Echtzeit.
Bemerkenswerte Entscheidungen
- Serverautorität für Wirtschaft, Kampagnen, Märkte und Kämpfe. Der Client entscheidet niemals Ergebnisse, die einen anderen Spieler betreffen.
- Verzögerte Ressourcenauswertung statt eines globalen Ticks. Jeder Lesevorgang und jede Aktion löst zuerst die verstrichene Zeit auf, mit Lagergrenzen und einem Akkumulationslimit von 72 Stunden.
- Domänenspezifische Durable Objects für Häuser, Chroniken, Regionen, Bündnisse, Diplomatie, Märkte, Territorien, Kriege, Korrespondenz und Konten.
- Idempotente Aktionen und SQLite-Transaktionen verhindern, dass Wiederholungen Bauvorhaben, Lieferungen, Rekrutierung oder Belohnungen duplizieren.
- WebSocket-Kampfsitzungen halten das Schlachtfeld reaktionsschnell, während das Durable Object die maßgebliche Datenquelle bleibt.
- Passwort- und Google-Anmeldung, einmalige Wiederherstellung, HttpOnly-Sitzungen, Turnstile-Prüfungen und lokalisierte Herold-E-Mails laufen auf derselben Worker-Plattform.
Status
Die spielbare Alpha ist unter play.bannermarch.com live und wird aktiv weiterentwickelt. Der aktuelle Build umfasst Wirtschaft über mehrere Lehen, NPC- und Spielerüberfälle, Bündnisse, Verträge, transportgebundene Märkte, Territorialkriege, Besetzungen, Korrespondenz und Koalitionskämpfe in Echtzeit.
Möchten Sie ähnliche Arbeit für Ihr Team?
Senior Engineering für KI-, Cloud- und Webprodukte – von der Architektur bis zur Produktion.