Unity Debugging
This page covers Editor workflows that are available in the public SDK today. Start with Installation and Quick Start.
Connection success
Section titled “Connection success”A Core desktop capability is connected when:
InitializeAsync()succeeds.IGPRuntimeManager.IsDesktopSessionAttached == true.- The target capability, such as authorization or achievements, returns the expected result.
This does not mean that a room or RoomNode Game data plane is connected.
Validate Desktop capabilities in the Editor
Section titled “Validate Desktop capabilities in the Editor”You normally do not need to fill Desktop Executable Path Debug Override.
When it is empty, the SDK starts the desktop client selected by
SDK Environment and passes the Unity Editor process path and appId. The
desktop debugging policy decides whether the attach is allowed.
Set the override only when simulating an installed game or diagnosing executable
binding. It must point to the game’s real Windows executable, for example
D:\builds\MyGame\MyGame.exe, not the desktop client.
PRODuses IndieGamesPass.PREVIEWuses IndieGamesPass Preview.DEVuses IndieSpark and permits explicitDesktop Launch CommandorINDIEGP_DESKTOP_PATHdebugging overrides.
The override applies only in the Editor. A built player uses its own executable path.
Logging
Section titled “Logging”Set Debug Logging in IGPConfig to Error, Warning, Info, or Debug.
It can also be changed temporarily at runtime:
runtimeManager.Config.debugLogging = IGPLogLevel.Debug;Keep detailed logs disabled in release builds. Logs and exceptions must never contain session tokens, RoomNode tokens, or other connection credentials.
Current Multiplayer status
Section titled “Current Multiplayer status”Core checks the current Unity runtime platform in Desktop-then-Mobile order
and constructs exactly one matching Host runtime. Attach failure does not switch
platforms, and there is no platform setting. Multiplayer does not participate
in that choice: its parameterless creation API requests a descriptor
from the active Core provider, while the descriptor overload accepts one
explicitly from its caller. Runtime then connects only to KCP/TCP reliable and
optional UDP unreliable Game lanes.
The following legacy workflows are not target behavior and must not be used as new integration acceptance criteria:
- Hosted launch packages or launch-ticket auto-join;
Connect Current Test Room;- treating
RoomChanged,CurrentRoomData, or Runtime room commands as proof of a game-data connection.
Multiplayer acceptance covers IsRuntimeCreated, RoomNode Game-lane readiness,
game message exchange, and transport faults only. It must not depend on Gateway
room state.
Common issues
Section titled “Common issues”- Always
detached: verify desktop sign-in, permission to debug the currentappId, and the selected SDK environment. - Core succeeds but there are no room events: this matches the target boundary; Core does not own rooms and Runtime must not expose Gateway events.
- Core succeeds but Runtime is not created: this is the expected soft failure when the Host descriptor path is unavailable. Inspect the warning, fix the path, and call the explicit retry API.