Platform vs Engine SDK
The single most important concept in HELIX — what belongs to the engine-agnostic Platform API versus an engine-specific runtime.
Everything in the HELIX SDK falls into one of two buckets. Knowing which bucket you're in tells you where to find the docs, whether the code is portable, and what to expect on another runtime.
Platform API — engine-agnostic
The Platform API is the shared layer. It has nothing to do with rendering. It's the same behavior, the same guarantees, and the same function names on every runtime:
| Capability | Namespace | Docs |
|---|---|---|
| Authentication & identity | Helix.auth, Helix.profile | Authentication |
| LIX & economy | Helix.wallet, Helix.marketplace | LIX & economy |
| Durable storage | Helix.dataStore | Data Store |
| Volatile storage | Helix.memoryStore | Memory Store |
| Items & inventory | Helix.inventory | Inventory |
| Social & presence | Helix.social | Social |
Write against the Platform API and your logic is portable: it behaves identically whether your world runs on the web or inside Unreal.
Engine-specific runtime
A runtime is where your world actually renders and executes. Runtimes add the things only an engine can provide — scene graph, input, physics, rendering — plus engine-flavored conveniences.
- Web SDK — TypeScript. This is the canonical contract. It also ships a full multiplayer & networking API (HELIX's own implementation) that is web-specific.
- Unreal SDK — the same Platform API exposed to C++, Blueprint, and Lua, plus engine-specific helpers like replication wrappers. Unreal worlds use the engine's own networking rather than the web stack.
Web is the source of truth
The Web TypeScript SDK is frozen first and treated as the canonical API surface. The Unreal runtime mirrors it 1:1 — every function, including character and world functions. When the two ever differ, the web signature wins and the difference is documented in the feature matrix.
The same call, five ways
Because the Platform API is identical across runtimes, the same operation looks like idiomatic code in each language. Here's reading the current player's LIX balance:
const wallet = await Helix.wallet.getBalance();
console.log(`You have ${wallet.lix} LIX`);UHelixWallet* Wallet = UHelix::Get()->Wallet();
Wallet->GetBalance(FOnBalance::CreateLambda([](const FHelixBalance& B) {
UE_LOG(LogHelix, Display, TEXT("You have %lld LIX"), B.Lix);
}));Helix → Wallet → Get Balance (latent node)
↳ On Success → Break Helix Balance → "Lix" → Print Stringlocal wallet = Helix.wallet.getBalance()
UE.Log(string.format("You have %d LIX", wallet.lix))This groupId is shared across the docs: pick Web (TS) once and every runtime-tabbed example on
every page follows you.
How to use this distinction
- Reading about a concept (auth, LIX, storage)? You're in the Platform API. It applies to every runtime.
- Reading about rendering, input, networking, or engine conveniences? You're in a runtime section — Web SDK or Unreal SDK.