Publish your game on Nexora Play
Upload an HTML5 build to the Developer Studio, pass the automated checks and a human review, and your game goes live with its own page, leaderboard and saves. Games run in an isolated sandbox on a separate domain and talk to Nexora only through the game SDK.
The Developer Studio isn't open yet. We're opening it to developers soon. Everything below is how it will work, and you can already build against the SDK.
How publishing works
- Sign in and join as a developer: accept the developer agreement and confirm you own what you publish.
- Create your game's page: title, tagline, description, how to play, genre and tags.
- Upload a
.zipof your build. It's checked straight away and saved as a draft you can play. - Submit the draft for review. A person plays it and approves it or sends it back with a note.
- Updates are new versions that go through the same review; the live version stays up meanwhile.
Build requirements
- You own, or have the rights to, every part of the game: code, art, audio, music and names. Suitable for all ages.
- A static build with
index.htmlat the top of the zip (a single top folder is fine). Up to 50 MB zipped, 120 MB unpacked. - Web files only: HTML, JavaScript, CSS, JSON, images, audio, video, fonts and WebAssembly. No server code.
- Everything bundled: games can't load files from other websites, and there are no trackers, ads or links out.
- Works with keyboard or touch, and pauses when the platform asks it to.
The game SDK
Download nexora-sdk-1.js, put it in your build and load it before your game. It works offline too: outside Nexora it saves to the browser instead. Use your game's address on Nexora (shown in the Studio) as gameSlug.
<script src="nexora-sdk-1.js"></script>
<script>
const sdk = NexoraSDK.createGameClient({ gameSlug: "your-game" });
await sdk.init(); // connects to Nexora (or local mode)
const save = await sdk.loadProgress(); // whatever you saved last time, or null
sdk.onPause(() => game.pause()); // the player opened a menu or switched tab
sdk.onResume(() => game.resume());
sdk.gameplayStart(); // when a run begins
await sdk.saveProgress({ level: 3 });
await sdk.submitScore(1200); // at the end of a run
</script>Every score is checked against the most points per second you say your game can award (set it in the Studio); scores above that rate are rejected. Without it, players keep their personal bests but there's no public leaderboard. Revenue sharing isn't live yet — when ads or premium launch, developers will be offered terms to accept.