in_game is about your title
in_game is true when the friend is playing the same game_id as this client — the id Arcane Powered launched you with. A friend playing something else on Arcane is online, not in_game. That presence is set by the Arcane desktop app when a game opens its play session, so it costs your game nothing.
false is never a guess about your own title: the client always knows its game_id, so in_game is false only when the friend is playing something else, or nothing at all.
stale
The Arcane desktop app caches the list for 15 seconds. When it is offline it serves that cache and says so:
stale: true is a success, not an error. The SDK keeps no list of its own: every call asks the desktop app, and the desktop app decides what to answer with.
What stays in the launcher
This is a read of presence, and only that. Friend requests, accepting or removing a friend, chat and the in-game overlay stay in the Arcane Powered desktop app. A game does not send friend requests on the player’s behalf, and there is nothing to call for it.Errors
Full table and what to do about each: Errors.
In C
-4 means it failed — read arcane_sdk_last_error_json for the code. Size the buffer to the player’s friend list (a few hundred bytes per friend); a short buffer gives -3 and an empty string, never a truncated one. Details: C ABI.
Next steps
- Session — the play session that makes your player “in game” for their friends
- Achievements —
unlock("first_blood"), one line, idempotent - Errors — every code, and its fix
- Rust API · C ABI