ARCANE_GAME_ID and ARCANE_USER_ID on your game process when it launches it from the player’s library. Running your build from an IDE or a terminal skips the launcher, so nothing sets them and init fails with missing_game_id. Set them yourself and everything else works the same way.
What you need
- The Arcane desktop app running and signed in. The SDK talks to it on loopback to mint a ticket, and reads the account it recorded.
- An account that owns the title — or a title with DRM disabled. The backend only mints an ownership ticket for a game the account owns, so a developer account that has not been granted the title gets
not_owned, no matter how the variables are set. - The game id of your title, from the Arcane portal.
Set the variables
Leaving
ARCANE_USER_ID unset is the simpler local setup: sign in to the desktop app, and the SDK follows whichever account is signed in. Set it when several accounts have tickets on the machine and you want a specific one.
A malformed ARCANE_USER_ID — anything outside ASCII letters, digits and -, or over 256 bytes — is ignored rather than reported, and the SDK falls back to session.json. The variable only picks a file; the ticket in it is verified in full either way, so naming an account proves nothing.
Errors you are likely to hit
Full table: Errors.
Developer and QA overrides
These are separate from the two launch variables: they change where the SDK looks and who it talks to. Never set them in a shipped game.ARCANE_GAME_ID and ARCANE_USER_ID are the exception to that rule: they are set in production, by the desktop app. ARCANE_OFFLINE_ONLY is the one to reach for when testing your error handling — it can only make a check fail earlier, never let one pass.