Bannermarch
Persistent middeleeuws strategiespel in de browser over het uitbouwen van een Huis via leengoederen, allianties, markten en oorlogen.

Ik bouwde Bannermarch als een browsergericht persistent strategiespel waarin een speler begint als landloze ridder en een Huis met meerdere leengoederen opbouwt. De wereld blijft doorgaan wanneer de browser gesloten is. Spelers beheren productie, bouwen gebouwen, rekruteren infanterie, verplaatsen grondstoffen en legers, plunderen rivaliserende Huizen, vormen allianties, handelen via markten met transport en volgen elk resultaat in de Kroniek. React en TypeScript draaien de client, terwijl Cloudflare Workers, door SQLite ondersteunde Durable Objects en WebSockets de simulatie gezaghebbend en persistent houden.
Het probleem
Een persistent strategiespel moet economieën, reizen en conflicten tijdens lange afwezigheid laten doorgaan zonder de browser te vertrouwen of één dure globale gamelus uit te voeren. Multiplayeracties moeten ook tegen de actuele toestand worden afgehandeld, zelfs wanneer twee Huizen bijna tegelijk handelen.
De aanpak
De React-client verzorgt de presentatie en stuurt opdrachten naar een gezaghebbende Cloudflare Worker. Door SQLite ondersteunde Durable Objects beheren elk Huis en de gedeelde wereldsystemen. Tijdgebonden toestand wordt uitgesteld berekend wanneer een speler terugkeert, terwijl alarms gebeurtenissen verwerken die niet tot de volgende aanmelding kunnen wachten. Aparte WebSocket-gevechtssessies verspreiden gevalideerde momentopnamen voor realtime coalitiegevechten.
Opmerkelijke beslissingen
- Serverautoriteit voor economie, campagnes, markten en gevechten. De client beslist nooit over uitkomsten die een andere speler raken.
- Uitgestelde grondstoffenberekening in plaats van een globale tick. Elke leesactie of opdracht verwerkt eerst de verstreken tijd, met opslaglimieten en maximaal 72 uur opbouw.
- Domeinspecifieke Durable Objects voor Huizen, Kronieken, regio's, allianties, diplomatie, markten, territoria, oorlogen, correspondentie en accounts.
- Idempotente acties en SQLite-transacties voorkomen dat nieuwe pogingen bouw, zendingen, rekrutering of beloningen dupliceren.
- WebSocket-gevechtssessies houden het slagveld responsief terwijl het Durable Object de bron van waarheid blijft.
- Inloggen met wachtwoord en Google, eenmalig herstel, HttpOnly-sessies, Turnstile-controles en gelokaliseerde Heraut-e-mails draaien op hetzelfde Worker-platform.
Status
De speelbare alpha staat live op play.bannermarch.com en wordt actief ontwikkeld. De huidige versie bevat economieën met meerdere leengoederen, plundertochten tegen NPC's en spelers, allianties, verdragen, markten met transport, territoriale oorlogen, bezettingen, correspondentie en realtime coalitiegevechten.
Vergelijkbaar werk nodig voor uw team?
Senior engineering voor AI-, cloud- en webproducten, van architectuur tot productie.