Sigildream Tech Blog

Tech · Sigilwake platform

The engine room behind a turn-based multiplayer RPG.

Sigilwake looks like a hand-drawn duel between two champions — and at its simplest that is exactly what it is. Two players each pick a champion from an original cast and trade moves one at a time: cast an ability, defend, break the other's rhythm, until one falls. No reflexes, no twitch — every match is a small game of chess dressed as a hand-drawn fantasy brawl, played on phones, browsers and desktops, live or as a replay.

Underneath, the architecture handles ten thousand players at once, drops a queued player into a live match in about four seconds anywhere in the world, and runs every fight at full frame-rate from phone to desktop. The game is refereed entirely on our own servers; live combat spins up on cloud instances that appear and vanish with demand; and every finished match becomes fuel for a Neural AI that teaches itself to play. The rest of this page walks through it, layer by layer.

10 000 players at once Phone · browser · desktop Self-hosted · multi-region cloud Neural AI
The arena on desktop
The arena on desktop — 238 fps. Every number on screen is computed server-side by the combat engine; the client only renders.
The same match on a phone at 120 fps
The same match on a phone at 120 fps — one Flutter codebase, every platform.
Character progression: five core stats, elemental affinities, growth curves
Character progression: five core stats, elemental affinities, growth curves — all server-side data.
The roster economy: characters unlock with in-game currency, priced by the server, never hardcoded
The roster economy: characters unlock with in-game currency, priced by the server, never hardcoded.

Overview

Why a turn-based RPG needs this much backend.

At a glance Sigilwake looks simple — two champions, one move per turn, no reflexes. It is tempting to publish something that simple the cheap, off-the-shelf way. That is exactly the path most indie games take, and exactly why so many are overrun by cheaters, bled by refund fraud, and abandoned inside a year. Sigilwake is built the opposite way — and here is what that buys.

Server-authoritative from day one

The player's device is a screen, not a referee. Every point of health, every resource, every dice roll, every reward is decided on our side — the app only shows the result. A player can never edit their own health, hand themselves a prize, or declare themselves the winner. It is the one design that holds up the moment real money and real competition enter the room.

A backend built at two speeds

Not everything a game does is equally urgent. Signing in, saving progress, running the shop and the leaderboards can take a comfortable moment. Resolving a live duel, turn by turn, cannot. So we built the backend at two speeds — a calm layer for the everyday and a fast layer engineered purely for the heat of a match — each able to grow on its own as the audience does.

Combat that scales on demand

A live match does not need a machine sitting idle waiting for it. Our combat instances are disposable: one is summoned the instant two players are matched, runs the fight, and is retired the moment it ends. Capacity follows demand automatically, around the world — so we pay only for the minutes players are actually fighting, never for empty seats.

An AI that learns from every match

Every fight ever played is quietly recorded and fed back into a self-teaching AI. Night after night the system plays millions of matches against itself, finds where the game is unfair, and sharpens both the balance and the opponent. The destination is a compact AI mind — small enough to live inside the game itself — that already outplays most human testers and will one day fight at a level no person can.

Concurrent players 10 000

Proven end-to-end at full load — no specialised or exotic hardware.

Tap to live match ~4 sec

From the queue to a live opponent — anywhere in the world.

Live players per machine 7 000

Sustained on a single instance.

The game's own AI ~454k params

A brain small enough to run inside the app — already beats most human testers.

Architecture map

The whole platform at a glance.

Two physical nodes. Nine microservices. One canonical combat engine, compiled into both the client (for local previews and PvE) and the server (as the source of truth for every PvP match).

Sigilwake platform topology Six tiers. Column one: the client tier — web, mobile, desktop and macOS clients all connecting over TLS 1.3. Column two: the edge tier — CDN and WAF, TLS termination, a WebSocket edge gateway, the matchmaker with its rating engine, and a firewall with intrusion detection. Column three: the core tier — the game backend for state, wallets and progression, the auth service issuing JWTs, the server-authoritative combat engine, SQL database, in-memory cache, event router, stream engine, media proxy, a paywall for the store and entitlements, admin SSO and observability. Column four: the game cloud — per-match servers across global regions, a warm-pool autoscaler and object storage for assets and replays. Two full-width bands close the map. The first is the AI forge: a self-play fleet, a balance engine and a neural trainer closing a learning loop back into the combat engine. The second is the creative forge, the human-in-the-loop media pipeline: sprite generation, soundtrack generation and cinematic generation, all feeding a human review gate where every generated asset is approved by hand. Every hop is labelled with the open standard that guards it: 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