For developers
Your game deserves better than a zip file and a link.
Publish to a curated shelf people actually browse. Instant play, real reviews, honest numbers, and a cut of the revenue your game brings in.
Zip your build
Most HTML5 exports work — Phaser, PlayCanvas, Unity WebGL (Brotli, Gzip or uncompressed), Godot with thread support off, or plain canvas and JavaScript. We need index.html at the root, and every file the game loads inside the zip.
Upload and preview
Drag the zip in. We unpack it, find your entry point, and give you a live player link in seconds so you can check it before anyone else sees it.
Submit for review
A human plays it. We're checking that it runs, that it's yours, and that the store page describes what's actually in the box. Most decisions land within a few days. New builds of a live game are reviewed too, and the current build stays up meanwhile.
Watch it land
Plays, ratings, average session length and hours played, per title, in your studio. No vanity metrics — just the numbers that tell you whether to make another one.
How you get paid
Every subscriber’s money is split between the games they played — not pooled and shared out by whoever was biggest that month. If somebody plays only your game all month, their whole contribution is yours. There is no advertising on Aicade, so there is nothing else to divide and no reason to pad your game with interruptions.
Sessions under a minute don’t count, and one player’s time on one game is capped at three hours a calendar month — so nobody out-earns you by leaving a tab open. Ratings work both ways: once a game has twenty ratings, scoring above the site average adds up to 15%, and scoring below it can cut up to 10%. The site average is measured from the ratings themselves, not set by us, and only reviews from people who actually played your game count — a review from someone who never opened it moves nothing.
Payout rails are not wired up in this build yet — the model is, and earnings reports arrive with them.
What we promise
- Your game runs isolated. It cannot be tampered with by the page around it.
- You keep your IP. Publishing here is a licence to host and show it, nothing more.
- Take it down whenever you want, and it disappears from browse the same minute.
- Review notes come from someone who actually played it, not a checklist bot.
Technical specs
- Archive
- ZIP, up to 100 MB compressed and 200 MB unpacked
- Entry point
- index.html at the archive root (a single wrapping folder is unwrapped for you)
- Files
- Up to 5,000 files per build
- Runtime
- Sandboxed iframe with an opaque origin — no cookies, no localStorage
- Saves
- postMessage bridge (below), up to 64 KB per player
- Network
- Same-origin only. Bundle every script, font and asset — CDN scripts, analytics and ad tags are blocked, so nothing about a player leaves Aicade
- Formats
- WASM, WebGL, WebGPU, Web Audio, gamepad, pointer lock and fullscreen all supported
- Unity
- Brotli and Gzip builds are served with the right Content-Encoding; Decompression Fallback builds work too
- Godot
- Godot 4.3+ with Thread Support off (or Godot 3). Threaded exports need cross-origin isolation, which a sandboxed player can't provide
- Offline
- Aicade Pro members can download your game and play it with no connection (nobody else can download it). It runs from the device as one self-contained page: classic scripts, ES modules and import maps, fetch, XHR, images and audio all work. A module worker that imports other files can't load offline, so keep a main-thread fallback
- Leaderboards
- A score only counts from a signed-in player's run on your live build, timed by our server from when the run started — never by the device. Runs that don't beat a player's best aren't stored, impossible ones are refused, and one far ahead of the field waits for a human check. Runs played offline are never submitted
The host bridge
Your game talks to Aicade with postMessage. Every message is { type, payload }, sent with window.parent.postMessage(message, "*"). Start with aicade:ready; everything else follows from it.
aicade:readygame → host- Send once on boot. Optional payload { safeArea: true } if you lay out around the notch yourself. The host answers with aicade:load.
aicade:loadhost → game- The player's saved data, or null if there is none (or they're signed out). Wait for it before starting, or you'll overwrite their progress.
aicade:savegame → host- Payload is any JSON value up to 64 KB. Stored per player per game; send it whenever progress changes.
aicade:scoregame → host- Payload { score: number } at the end of a run. Positive integers go on the leaderboard (see Leaderboards above). A game with a deterministic simulation can add replay — the run's inputs, up to 32 KB of JSON — so the run can be re-played on our server.
aicade:sessionhost → game- Payload { seed } once a signed-in player's run is open on your live build. If your game replays deterministically, seed the run with it: a replay is only checked against the seed it was given.
aicade:rewardedgame → host- Payload { id: string } to ask for a short break in exchange for a reward (e.g. a continue). Pause your game while you wait.
aicade:rewarded:resulthost → game- Payload { id, granted: boolean, reason } after the break. Only give the reward when granted is true and the id matches. Offline there is no break: the reward is granted at once with reason "offline".
aicade:mutehost → game- Payload { muted: boolean } when the player toggles sound in the toolbar.
aicade:insetshost → game- Payload { top, right, bottom, left, menu } in CSS pixels — only sent to games that announced safeArea. menu is the player’s floating menu button { left, top, right, bottom } when it sits over your game (a phone held sideways, fullscreen, the home-screen app), or null: keep scores and titles clear of it.
Submission guidelines
- It has to be yours, or licensed to you. Assets included.
- It has to run. A build that crashes on load is the most common rejection by far.
- The store page has to match the game. Screenshots from a different build, or a tagline promising a mode that isn’t in there, gets sent back.
- Be honest about AI involvement. Listing your tools is a feature here, not a confession.
- No external payment flows, no data collection beyond the save bridge, no ads of your own inside the game.
Ready when you are.
Set up a studio in under a minute. You can upload a build before you decide whether to publish it.