@onceworlds/sdk
v0.3.0
Published
Multiplayer rooms, saves, badges and phone controls for games on Onceworlds, and opt-in helpers for matches, host authority and bots. Types and modules for TypeScript and bundlers.
Readme
@onceworlds/sdk
Multiplayer rooms, saves, badges, leaderboards and phone controls for browser games on onceworlds. No server code: onceworlds runs the servers.
Games on onceworlds already get the SDK as window.onceworlds, so plain
JavaScript needs nothing installed. This package is for TypeScript and bundlers
(Vite, webpack): the same object, with types and autocomplete.
npm i @onceworlds/sdkimport onceworlds from '@onceworlds/sdk';
const player = await onceworlds.player.get();
const room = await onceworlds.rooms.join({ maxPlayers: 8 });
room.on('join', (p) => console.log(`${p.name} joined`));
room.on('presence', (p) => drawPlayer(p.id, p.presence));
room.setPresence({ x: 10, y: 20 });
await onceworlds.save.set('progress', { level: 3 });
// What outlives a session: the player's (onceworlds.save), the server's own world
// (written by its host, kept by private servers), and values every server shares.
if (onceworlds.data.server.canWrite) await onceworlds.data.server.set('town', { houses: 3 });
await onceworlds.data.game.add('donations', 10); // declared in onceworlds.json's "data"
// A demo (turned on in the dashboard's Sell tab): where it stops, the platform shows
// its end-of-demo card (Buy, or Favorite for a free game). True once the player closes
// it; false at once for someone with the full game.
if (await onceworlds.demo.end()) showTitle();Outside Onceworlds (your own dev server) it still runs: saves and data use the
browser's storage and rooms.join() gives you a room of one, so the same code
works everywhere.
- Docs: https://onceworlds.com/docs
- Full reference:
AGENTS.md, from the guide's download button (give it to your AI)
