Infra Games

For operators

Infra Games titles are own-hosted HTML5 bundles. Integrating one means pointing an iframe at a versioned launch URL on our game origin and handling a handful of postMessage events — the same contract this site uses for its own demos.

Everything below is what exists today, and today that is demo play only. There is no real-money integration yet; what is planned is at the end, marked as such.

Launch URL

A versioned, immutable path plus four query parameters:

https://infra-games-play.pages.dev/games/moonies-alter-ego/1.0.7/index.html?gameId=moonies-alter-ego&mode=demo&lang=en&currency=FUN
gameIdpermanent kebab-case id, matching the one in the path
mode'demo' — the only accepted value today
langISO 639-1 code, optional ISO 3166-1 region (en, pt-BR); defaults to 'en'
currency'FUN' — the fictional demo currency

The version lives in the path, never in a query string, so every asset under it — the HTML included — is served immutable for a year. An operator can pin a version and know the bytes behind it will never change; publishing a fix means publishing a new version.

Unknown parameters are ignored rather than rejected. These six names are reserved so that a future real-money launch cannot collide with them: sessionID, device, rgs_url, sessionToken, operatorId, realCurrency. The demo contract implements no behaviour for any of them and cannot read them.

postMessage

Every message carries a versioned envelope (protocol: infra-games-embed, v: 1) and is validated on receipt in both directions — exact origin match, sender-window identity, then schema. Anything that fails is dropped without reply.

TypeDirectionMeaning
GAME_READYgame → hostthe bundle has booted and is ready to be shown
GAME_RESIZEgame → hostan optional size or aspect request — acting on it is the host’s choice
EXIT_GAMEgame → hostthe player asked to leave; the host navigates away
HOST_ACKhost → gameacknowledges GAME_READY, sent to the game origin exactly

The bundle has 10 seconds from the moment its frame is attached to send GAME_READY. Miss that window and the host shows a retry state rather than an endless loader. The acknowledgement itself is immediate and names the host origin, which the bundle then locks onto for everything it sends afterwards.

Isolation

The game runs on a separate origin from the site, not a path on the same one — a path split would leave the sandbox with nothing to isolate. The frame withholds top-level navigation, popups and forms, which is precisely why leaving a game is a message the host acts on rather than something the bundle can do for itself.

No game code reaches the host page; the two share only the contract package, and a build probe fails if anything else crosses. Content-Security-Policy on the game origin names the site as the only permitted embedder.

What is planned

For real-money integrations, a future Infra RGS would call the operator’s own seamless-wallet API — balance, bet, win and rollback. Player funds never leave the operator. That component does not exist yet.

The intended order is independent lab certification per title, then direct operator integrations through our own RGS, then — once certification and a B2B supplier licence are in place — wider distribution through aggregators. Stake Engine is not a dependency; at most a later, optional export channel. Everything here is future-tense — no certifications or licenses are claimed today.

Contact

Want the integration pack or a conversation? Email hello@infra.games.