Store game state as versioned documents, not one irreversible save blob.
Crux gives each player scoped JSON documents plus separate project-scoped documents for shared state. Writes carry versions so concurrent clients can detect conflicts instead of silently overwriting progress.
player/{player_id}/documents/profile
{
"schema": 4,
"level": 18,
"loadout": ["bow", "torch"]
}
version: 27
next write: version=27
conflict: reject + reload Inspect the storage contract before trusting it with saves.
The public OpenAPI specification exposes the document endpoints and concurrency fields. The useful test is to write real state, then deliberately create a stale-version conflict.
Live API status
A live check of the hosted API right now. No made-up uptime percentage and no hidden demo environment.
Check current statusPublic API contract
The hosted HTTP surface is documented as OpenAPI. Inspect the wire format before choosing an SDK or writing an adapter.
Open the specMIT client SDKs
The JavaScript, Godot, Unity, and Roblox client SDK source is public. The hosted backend itself remains a managed proprietary service.
Inspect the SDK sourceDocumented exit path
Read what is exportable today and the written commitment for advance notice plus an export window if the hosted service winds down.
Read the exit guaranteeCloud-save decision guide
Compare the managed document model with a database you own, including schema evolution, concurrency and operational burden.
Compare cloud-save architecturesPlayer documents
Split profile, progression, settings and inventory-shaped state into separate JSON documents instead of rewriting one monolith.
Optimistic concurrency
Every document has a monotonic version. Conditional writes fail when the caller is stale, giving your game a real conflict path.
Shared project state
Use project-scoped documents for state shared across players or servers without pretending it belongs to one player account.
A game-data API, not an unrestricted database.
Crux does not expose arbitrary SQL, relational joins or your own database schema. Keep analytics warehouses, complex relational queries and workloads that require direct database ownership outside Crux. The fit is durable game state with explicit player/project scope.