Sigildream Tech Blog

Tech · Piattaforma Sigilwake

La sala macchine dietro un RPG multiplayer a turni.

Sigilwake sembra un duello disegnato a mano tra due campioni — e nella sua forma più semplice è esattamente questo. Due giocatori scelgono un campione da un roster originale e si alternano, eseguendo una mossa per turno: lanciare un'abilità, difendersi, spezzare il ritmo dell'altro, finché uno cade. Niente riflessi, niente scatti — ogni partita è una piccola partita a scacchi travestita da rissa fantasy disegnata a mano, giocabile su telefono, browser e desktop, in diretta o in replay.

Dietro questa apparente semplicità, l'architettura gestisce fino a diecimila giocatori simultanei, porta un giocatore dalla coda a una partita in tempo reale in circa quattro secondi, ovunque si trovi, e mantiene ogni scontro fluido su telefono, browser e desktop. Il gioco è arbitrato interamente dai nostri server; le istanze cloud dedicate al combattimento vengono avviate e dismesse in base alla domanda; ogni partita conclusa alimenta inoltre il sistema di IA che impara a giocare autonomamente. Il resto della pagina ne esplora ogni livello, uno dopo l'altro.

10.000 giocatori simultanei Telefono · browser · desktop Self-hosted · cloud multi-regione IA neurale
L'arena su desktop
L'arena su desktop — 238 fps. Ogni numero sullo schermo è calcolato lato server dal motore di combattimento; il client si limita a disegnare.
Lo stesso match su telefono a 120 fps
Lo stesso match su telefono a 120 fps — un'unica base di codice Flutter per tutte le piattaforme.
La progressione del personaggio: cinque statistiche, affinità elementali, curve di crescita
La progressione del personaggio: cinque statistiche, affinità elementali, curve di crescita — tutti dati gestiti lato server.
L'economia del roster: i personaggi si sbloccano con valuta di gioco, con prezzi gestiti dal server e mai inseriti direttamente nel codice
L'economia del roster: i personaggi si sbloccano con valuta di gioco, con prezzi gestiti dal server e mai inseriti direttamente nel codice.

Panoramica

Perché un RPG a turni ha bisogno di tutto questo backend.

A prima vista Sigilwake sembra semplice — due campioni, una mossa per turno, zero riflessi. Verrebbe da pensare che basti pubblicarlo con un'architettura economica e pronta all'uso. È esattamente la strada che imbocca la maggior parte dei giochi indie, ed è esattamente il motivo per cui così tanti vengono infestati dai cheater e colpiti dalle frodi sui rimborsi e abbandonati nel giro di un anno. Sigilwake è costruito nel modo opposto — ed ecco cosa comporta.

Autoritativo sul server dal primo giorno

Il dispositivo del giocatore è uno schermo, non un arbitro. Ogni punto di vita, ogni risorsa, ogni tiro di dado, ogni ricompensa è deciso dalla nostra parte — l'app mostra soltanto il risultato. Un giocatore non può modificarsi la vita, assegnarsi un premio o proclamarsi vincitore. È l'unica architettura che regge nel momento in cui entrano in gioco denaro vero e competizione vera.

Un backend costruito a due velocità

Non tutto ciò che fa un gioco ha la stessa urgenza. Operazioni come l'autenticazione, il salvataggio dei progressi e la gestione del negozio o delle classifiche possono tollerare qualche istante di attesa. Risolvere un duello dal vivo, turno dopo turno, no. Così abbiamo costruito il backend a due velocità — uno strato meno sensibile alla latenza per le operazioni ordinarie e uno ottimizzato per le fasi in tempo reale della partita — ognuno capace di crescere per conto suo insieme al pubblico.

Combattimento che scala su richiesta

Una partita dal vivo non ha bisogno di una macchina ferma ad aspettarla. Le nostre istanze di combattimento sono usa-e-getta: un'istanza viene avviata non appena due giocatori vengono abbinati, gestisce lo scontro e viene dismessa appena finisce. La capacità segue la domanda in automatico, in tutto il mondo — così paghiamo solo i minuti in cui i giocatori stanno davvero combattendo, mai la capacità inutilizzata.

Un'IA che impara da ogni partita

Ogni scontro disputato viene registrato e restituito a un'IA che impara. Notte dopo notte il sistema gioca migliaia di partite contro se stesso, trova dove il gioco è ingiusto e affina sia l'equilibrio sia l'avversario. Oggi quell'avversario è un motore di ricerca, già capace di battere la maggior parte dei tester umani; la rete neurale vera e propria — compatta, destinata a vivere dentro il gioco stesso — è progettata e in fase di addestramento, e un giorno combatterà a un livello che nessuna persona può raggiungere.

Giocatori simultanei 10 000

Dimostrato end-to-end a pieno carico — nessun hardware specializzato o esotico.

Dalla coda al match ~4 s

Dalla coda a un avversario dal vivo — in qualsiasi parte del mondo.

Giocatori per macchina 7 000

Gestiti da una singola istanza.

L'IA del gioco ~454k parametri

Un cervello compatto, progettato per girare dentro l'app e oggi in fase di addestramento.

Mappa dell'architettura

L'intera piattaforma in un colpo d'occhio.

Due nodi fisici. Nove microservizi. Un motore di combattimento canonico, compilato sia nel client (per anteprime locali e PvE) sia nel server (come fonte di verità per ogni match PvP).

Topologia della piattaforma Sigilwake Sei livelli. Colonna uno: il livello client — client web, mobile, desktop e macOS, tutti connessi su TLS 1.3. Colonna due: il livello edge — CDN e WAF, terminazione TLS, un gateway WebSocket, il matchmaker con motore di rating e un firewall con rilevamento delle intrusioni. Colonna tre: il livello core — il backend di gioco per stato, portafogli e progressione, il servizio di autenticazione che emette JWT, il motore di combattimento autoritativo lato server, database SQL, cache in memoria, router di eventi, motore di streaming, proxy media, un paywall per negozio e diritti d'uso, SSO amministrativo e osservabilità. Colonna quattro: il game cloud — server per singola partita in regioni globali, un autoscaler a warm-pool e object storage per asset e replay. Due bande a tutta larghezza chiudono la mappa. La prima è la fucina AI: una flotta di self-play, un motore di bilanciamento e un trainer neurale che chiudono un ciclo di apprendimento verso il motore di combattimento. La seconda è la fucina creativa, la pipeline media con supervisione umana: generazione di sprite, generazione di colonne sonore e generazione di cinematiche, tutte convogliate in un cancello di revisione umana dove ogni asset generato viene approvato a mano. Ogni collegamento è etichettato con lo standard aperto che lo protegge: TLS 1.3, JWT, HMAC, mTLS. CLIENTS web · mobile · desktop WEB CLIENT browser · WebGL MOBILE CLIENT iOS / Android DESKTOP CLIENT Steam MACOS CLIENT desktop app EDGE public entry · hardened CDN + WAF static edge · filtering TLS TERMINATION public certificates EDGE GATEWAY WebSocket · realtime MATCHMAKER rating engine BOT DEFENSE rate limits · fingerprinting CORE private backbone GAME BACKEND state · wallets · progression COMBAT ENGINE server-authoritative sim AUTH SERVICE JWT / OAuth CORE DATABASE durable state IN-MEMORY CACHE sessions / nonces EVENT ROUTER pub / sub STREAM ENGINE HLS live + replay MEDIA PROXY resize · cache PAYWALL store · entitlements ADMIN SSO 2FA · policies OBSERVABILITY metrics / alerts GAME CLOUD elastic session fleet MATCH SERVERS per-match · global regions WARM-POOL AUTOSCALER pre-warmed · scale-to-zero OBJECT STORAGE assets / replays regions on demand AI FORGE self-improving loop · runs nightly SELF-PLAY FLEET thousands of matches nightly BALANCE ENGINE autonomous tuning NEURAL TRAINER policy + value nets CREATIVE FORGE human-in-the-loop media pipeline SPRITE GENERATION character art SOUNDTRACK GENERATION music CINEMATIC GENERATION combat animation HUMAN REVIEW every asset approved by hand TLS 1.3 JWT HMAC mTLS mTLS match result telemetry training data DATA FLOW request path async result / feedback learning loop media pipeline