| Concept | What it is |
|---|---|
| Achievement | A milestone or reward that players unlock while playing, like "First Win" or "Score 1,000 Points." You define them in the Developer Portal or with the CLI and unlock them from your game. See Achievements & stats. |
| API key | A secret token that lets the CLI and other tools act on your behalf. Create one in Developer Portal → API Keys. |
| Build | A versioned snapshot of your game's files. Each upload — from the Developer Portal or wavedash build push — creates a new build. You can always roll back to an earlier one. |
| Cloud save | Per-player files Wavedash stores for you and syncs across devices. The SDK calls this Remote Storage (uploadRemoteFile, downloadRemoteFile, listRemoteDirectory) — useful for save games, settings, and player progress. See Cloud saves. |
| Deferred events | An init() option (deferEvents: true) that queues all SDK events until your game calls readyForEvents(), so handlers don't fire while you're still loading. |
| Developer Portal | The browser-based home for your team at wavedash.com/dev-portal. Manage API keys, builds, store pages, monetization, payouts, achievements, and leaderboards. |
| Document ID | The server-side ID returned when you create a stat or achievement with the CLI. CLI update/delete commands take this ID, while your game code uses the stable string identifier you chose (e.g. KILLS_TOTAL). |
| Entrypoint | The first file Wavedash loads inside your upload_dir: an HTML page (.html/.htm) or a JavaScript file (.js). Defaults to index.html; set it in wavedash.toml if your build uses a different filename. |
| Game ID | Your game's unique ID on Wavedash. Created in the Developer Portal or with wavedash project create, then stored as game_id in wavedash.toml (or passed via --game-id). |
| Gameplay token | A short-lived, game-scoped token Wavedash issues so the SDK can call platform APIs on the player's behalf. The SDK fetches and refreshes it for you — you don't read or store it in normal game code. |
| ICE restart | What the SDK does when a peer's WebRTC connection flaps. You'll see P2P_PEER_RECONNECTING, then either P2P_PEER_RECONNECTED or P2P_CONNECTION_FAILED. |
init() | The one call every game makes once when it finishes loading. Reveals your game from behind the loading screen and marks it ready to play; also fires loadComplete(). |
| Launch params | Key/value data passed to your game when it opens, read with getLaunchParams() (available as soon as the game starts; init() isn't required first). Wavedash strips the wvdsh_ prefix from query string keys (?wvdsh_lobby=abc becomes { lobby: "abc" }). Used for lobby invite links and similar deep-link flows. |
| Leaderboard | A scoreboard for your game. You pick the name, sort order, and format — your game submits scores through the SDK, and Wavedash handles ranking. See Leaderboards. |
| Leaderboard entry metadata | Small key/value data submitted alongside a score — the character used, deaths taken — that reads back with the entry. String, number, and boolean values; replaced by each saved score; capped at 16 keys and 2048 bytes. See Attaching metadata. |
| Load progress | The 0-to-1 value your game reports during boot with updateLoadProgressZeroToOne() so the platform shell can render its loading bar. Call it repeatedly as assets load — report it only once at the end and the bar jumps straight from 0% to 100%. Pair with loadComplete() to signal the player can interact (often called for you by init()). |
| Lobby | A room where players can gather before or during a game. Supports chat, invites, a member list, and connects to peer-to-peer networking automatically. |
| Lobby host | The lobby member treated as owner. Only the host can change certain lobby settings, and if they leave, hosting migrates to another member automatically. |
| Lobby invite | A friend-directed invite to join a lobby. Opening the invite link launches your game with the lobby ID delivered through launch params — your game just needs to call joinLobby() on startup. |
| Lobby metadata | Key/value data attached to a lobby that all members stay synced on — string, number, and boolean values. The host sets it with setLobbyData; members get LOBBY_DATA_UPDATED when it changes. See Metadata. |
| Marketplace fee | What Wavedash takes on each Paid Content purchase and donation: 10% plus a $0.50 flat fee. See Monetization. |
| P2P channel | One of up to eight numbered lanes (0–7) for binary peer-to-peer messages. Each send picks a channel and whether delivery is reliable (ordered, guaranteed) or unreliable (fast, lossy). |
| P2P networking | Once everyone's in a lobby, the SDK opens direct WebRTC data channels between all members in a full mesh — no dedicated game server. NAT traversal uses managed TURN credentials, so you don't host any infrastructure yourself. |
| Paid Content | Something players buy inside your game. A durable is purchased once and never expires, like a base game or downloadable content; it gates build files, and Wavedash fulfills it. A consumable can be bought repeatedly, and your game fulfills it. You set the price and paywall copy in Developer Portal → Monetization, and your game opens the paywall and handles purchases through the SDK. See Paid content. |
| Payouts | How money reaches you. Wavedash pays out through Stripe Connect on the 1st of each month once your team's available balance reaches $20. The team owner connects Stripe under Team → Earnings → Payouts. See Getting paid. |
| Player | Someone with a Wavedash account. They have a username, avatar, friends list, and game library. Your game can read their info with Wavedash.getUser(). See Players. |
| Presence | Status and activity the signed-in player exposes to friends, set with updateUserPresence(). See Players. |
| Project | A game record under a team. wavedash project create makes one and returns the game_id you store in wavedash.toml; wavedash project list shows everything your team owns. |
| Promote | Another word for Publish — choosing which uploaded build players see. |
| Publish | Choosing which build players see when they open your game. Publish a new build to update, or publish an older one to roll back. You can publish from the CLI or the Developer Portal. |
| Sandbox | A separate server-side environment for your game's SDK data — leaderboards, achievements, saves — that wavedash dev and playtest builds use, so testing never touches production data. |
| Secret achievement | An achievement hidden from the player's list until they earn it. Set with --secret on wavedash achievement create, or via the Developer Portal. |
| Session | The time between a player opening your game and leaving. Wavedash tracks sessions automatically so you can see how people play. |
| Slug | A short, URL-safe identifier. Your game's slug is the part of its store URL. Renaming the title doesn't change it, but you can edit it under Metadata → Game URL, which breaks existing links. Teams and projects also expose slugs in CLI tables. |
| Stat | A number your game tracks per player — things like total kills, distance traveled, or games played. Stats persist between sessions and can automatically unlock achievements. See Achievements & stats. |
| Stat-triggered achievement | An achievement that unlocks automatically when a configured stat crosses a threshold — no setAchievement() call needed. Wired up with --triggered-by-stat-id and --threshold on the CLI, or via the Developer Portal. |
| Store page | What players see when they find your game: the title, description, cover art, preview video, and tags. You can update it anytime without pushing a new build. |
| Team | A group of developers who work on games together. Team members share access to builds, analytics, and settings. Manage members, billing, and payouts in the Developer Portal. |
| UGC | User-generated content. Things players create and share — custom levels, replays, screenshots, mods. Your game decides what players can upload, and other players can browse and download it. See User-generated content. |
| UGC type & visibility | Two enums on every UGC item. Type classifies it (SCREENSHOT, VIDEO, COMMUNITY, GAME_MANAGED, OTHER). Visibility controls who can see it (PUBLIC, PRIVATE). |
| upload_dir | The folder on your computer that contains your game's built files. Set it in wavedash.toml — the CLI uses it for local testing and uploads. |
| User JWT | A short-lived signed JWT for the signed-in player, fetched with getUserJwt(). Forward it to your own backend and verify it against Wavedash's public keys for trusted identity (payload.sub is the stable user ID). |
| Wavedash CLI | The wavedash command-line tool. Authenticates your machine, runs your game locally in the sandbox (wavedash dev), manages teams and projects, uploads new builds (wavedash build push), and publishes uploaded builds (wavedash publish). |
| Wavedash SDK | How your game talks to Wavedash at runtime. The Wavedash global is injected automatically in the browser; Godot, Unity, and Defold have native bindings, and @wvdsh/sdk-js provides optional typed access in JavaScript/TypeScript projects. |
| wavedash.toml | A small config file in your project that tells the CLI your game ID, where your build files are, and any engine-specific settings. |
| WAVEDASH_TOKEN | Environment variable that holds an API key. When set, the CLI uses it instead of saved credentials — the standard way to authenticate in CI runners and other headless environments. |
Glossary
Key terms used across the docs, the Developer Portal, and the CLI.