Bannermarch
Gioco di strategia medievale persistente nel browser sulla crescita di una Casata attraverso feudi, alleanze, mercati e guerre.

Ho creato Bannermarch come gioco di strategia persistente pensato per il browser, in cui il giocatore inizia come cavaliere senza terre e fa crescere una Casata con più feudi. Il mondo continua ad avanzare anche quando il browser è chiuso. I giocatori gestiscono la produzione, costruiscono edifici, reclutano fanteria, spostano risorse ed eserciti, razziano Casate rivali, formano alleanze, commerciano attraverso mercati con trasporto e seguono ogni esito nella Cronaca. React e TypeScript gestiscono il client, mentre Cloudflare Workers, Durable Objects basati su SQLite e WebSocket mantengono la simulazione autoritativa e persistente.
Il problema
Un gioco di strategia persistente deve far avanzare economie, viaggi e conflitti durante lunghe assenze senza fidarsi del browser né eseguire un costoso ciclo di gioco globale. Anche le azioni multigiocatore devono essere risolte sullo stato corrente, perfino quando due Casate agiscono quasi nello stesso momento.
L'approccio
Il client React gestisce la presentazione e invia comandi a un Cloudflare Worker autoritativo. Durable Objects basati su SQLite controllano ogni Casata e i sistemi condivisi del mondo. Lo stato basato sul tempo viene risolto in modo differito quando un giocatore ritorna, mentre gli allarmi elaborano gli eventi che non possono attendere il prossimo accesso. Sessioni di battaglia WebSocket dedicate trasmettono stati convalidati per il combattimento di coalizione in tempo reale.
Decisioni degne di nota
- Autorità del server per economia, campagne, mercati e combattimento. Il client non decide mai risultati che riguardano un altro giocatore.
- Valutazione differita delle risorse invece di un tick globale. Ogni lettura o azione risolve prima il tempo trascorso, con limiti di deposito e un massimo di accumulo di 72 ore.
- Durable Objects specifici per dominio dedicati a Casate, Cronache, regioni, alleanze, diplomazia, mercati, territori, guerre, corrispondenza e account.
- Azioni idempotenti e transazioni SQLite impediscono ai tentativi ripetuti di duplicare costruzioni, spedizioni, reclutamento o ricompense.
- Le sessioni di battaglia WebSocket mantengono reattivo il campo mentre il Durable Object resta la fonte di verità.
- Accesso con password e Google, recupero monouso, sessioni HttpOnly, controlli Turnstile ed e-mail localizzate dell'Araldo sono integrati nella stessa piattaforma Worker.
Stato
Alpha giocabile online su play.bannermarch.com e in sviluppo attivo. La versione attuale comprende economie con più feudi, razzie contro PNG e giocatori, alleanze, trattati, mercati con trasporto, guerre territoriali, occupazioni, corrispondenza e battaglie di coalizione in tempo reale.
Vuoi un lavoro simile per il tuo team?
Ingegneria senior per prodotti AI, cloud e web, dall'architettura alla messa in produzione.