Domin8developer docs

Integration guide

Add your game

This guide takes your slot from zero to a first real spin on the Domin8 arcade. The split is simple: your game owns the presentation and the paytable — reels, features, RTP, animations. The platform owns the money and the randomness — two small REST services called the bank and the RNG. Your game never computes a balance and never rolls its own dice.

What you ship, what we host

You deliverWhat it is
Unity WebGL buildThe game runs inside an iframe on the hub (desktop + mobile web), so it must be a WebGL build — static files, no secrets inside.
A thin game backendYour spin logic (paytable, RTP, feature math) behind a small HTTP API, shipped as a Dockerfile. Any stack you like.

We deploy both on our infrastructure under a *.domin8.fun subdomain and register the game in the arcade. The API keys that move money stay on our servers — your backend reads them from environment variables at deploy time. You get a staging deployment with test balances to build against.

Environments

You develop against staging — a full copy of the platform (hub, bank, RNG) with its own databases, its own API keys and free test balances. Nothing you do there can touch real money.

StagingProduction
Base URLs & keysin your onboarding packe.g. bank.domin8.fun — keys never leave our servers
Balancestest money — ask us to top up anytimereal player funds
Your backend runson your machine, calling staging over HTTPSon our infrastructure

The flow: build locally against staging → we deploy your backend + WebGL build to the staging hub and you test the full arcade experience → we promote to production with fresh keys.

The map

iframe ?session=postMessageBearer <JWT>game-history · points & questsopen · settledrawbalance push (ws)DOMIN8 HUBhub.domin8.funlogin · wallet · arcadeUNITY WEBGL CLIENTstatic build in an iframeno secrets, no mathYOUR GAME BACKENDverifies JWT → user_idreels · paytable · RTPkeys from env (we host it)BANK/bet/open · /bet/settlethe moneyRNG/random · /seed/*the randomness
■ money■ randomness■ session & events

One spin, four steps

Every round — normal spin or bonus buy — is the same loop from your backend:

#CallWhat happens
1bank POST /bet/openlock the stake (the money is held)
2rng POST /randomget provably-fair floats — one per reel
3your gamemap floats → reels → paytable → payout
4bank POST /bet/settlerelease the lock, pay the win ("0" on a loss)

Why it never double-pays

Steps 1 and 4 are idempotent on a bet_id you generate. If anything crashes mid-spin, retry the whole spin with the same bet_id: the open returns the existing lock, the RNG replays the exact same draws (deterministic per seed + nonce), and the settle pays exactly once.