Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Open Play overview

This page summarizes which ready-made building blocks Open Play offers your game and which channel you use to talk to each of them. Read it before you start integrating; follow the links at the end of each section for details.

What is Open Play?

Open Play covers a game’s backend needs as a single server: player identity and sessions, characters, inventory, economy, store, rewards, social features, leaderboards, notifications, webhooks, and realtime connections. You connect your game to this server over HTTP (REST) and WebSocket; the team that runs the game configures the same server from the admin panel.

Note

Today Open Play is a Docker Compose stack and runs on your or your team’s infrastructure. For installation and deployment, see the production deployment guide (docs/production-and-adapters.tr.md); this document describes the game developer’s point of view.

What does it offer? The module map

Most features are turned on and off as modules. The endpoints of a disabled module do not work and return 404 with the code module_disabled (see Concepts). Modules are managed in the panel under Game settings › Modules.

ModuleWhat it gives your gameGuide
charactersCharacter definitions, characters, commands, rules, traits, level curvesCharacters
economyCurrencies, wallets, transfers, ledgerEconomy
itemsItem definitions, item instances, inventoryInventory and items
tradingMerchants and player-to-player tradingRaw REST: endpoints
storeStore catalog, purchasing, in-app purchase (IAP) verificationStore and IAP
rewardsReward tables, quests, NPC rewards, VIP, daily login rewardRewards
socialClans and partiesSocial
chatChatChat
competitionLeaderboards and tournamentsCompetition
notificationsNotification channels, templates, player inbox, web pushNotifications
webhooksDelivering game events to your own server, signedWebhooks
scenesScenes and visual assetsScenes, assets, models
pluginsThe plugin platform and the realtime surfacePlugins, Realtime

Core surfaces that have no module switch are always on:

  • Player identity and sessions: guest, email/password, Google. See Authentication.
  • Content groups and catalog: data managed from the panel and read by the game. See Content groups.
  • Game rules and automations. See Game rules.
  • API keys, environments, and domains. See Concepts.

Which channel do you talk through?

ChannelWho uses it?CredentialWhat for?
REST (/v1/...) + server keyYour game server (trusted backend)Authorization: Bearer crx_live_<prefix>_<secret>Administration and operations that change money or items
REST + client keyYour game clienta client key in the same formatLimited, non-sensitive operations
REST + player sessionThe player’s own client (browser, Unity)cookie or session token + x-crx-envThe player’s own data: sign-in, catalog, store, rankings, plugin commands
WebSocket (/v1/realtime/ws etc.)The player’s clientsingle-use ticketPlugin state, live input, uninterrupted streaming
Webhook (Open Play → your server)Your serverX-Crx-Signature signatureEvent notification
SDKTypeScript and Unitya wrapper over the channels aboveTyped use of REST and WebSocket

Warning

A server key is a secret. Do not put it in the browser, in a mobile app, or in the game bundle. On the client side, use only the player session and (if needed) a client key.

A gRPC interface exists on the server side, but it is not a public channel for game developers; by default it listens on loopback only and the SDKs do not use it. This document does not cover it.

Where to start

  1. Concepts: studio, game, environment, module, key types, player session.
  2. Quickstart: your first server call and your first player sign-in.
  3. Architecture and hosting: direct CORS or reverse proxy, domains, what runs where.
  4. Authentication and the SDKs.

Current limits

The following are written honestly on purpose; plan your roadmap accordingly.

  • CORS is open only to origins in the environment’s domain list, and the cookie needs the same site. A browser game can call Open Play directly if its domain is bound to an environment; if the game is on a different registrable domain than Open Play, the SameSite=Lax session cookie is not sent (use a reverse proxy). See Architecture and hosting.
  • Loading third-party plugins is not supported. Plugins ship compiled into the server; you cannot upload a plugin from the panel. See Plugins.
  • SDK coverage is partial. Modules that have no typed client in the TypeScript SDK are used through raw REST. See TypeScript SDK.
  • On Unity, only Unity 6000.6.7f1 is verified. See Unity SDK.
  • Error bodies are mostly plain text. Only a few places have a JSON error envelope. See Errors.