Skip to content

Unity Debugging

This page covers Editor workflows that are available in the public SDK today. Start with Installation and Quick Start.

A Core desktop capability is connected when:

  1. InitializeAsync() succeeds.
  2. IGPRuntimeManager.IsDesktopSessionAttached == true.
  3. 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.

  • PROD uses IndieGamesPass.
  • PREVIEW uses IndieGamesPass Preview.
  • DEV uses IndieSpark and permits explicit Desktop Launch Command or INDIEGP_DESKTOP_PATH debugging overrides.

The override applies only in the Editor. A built player uses its own executable path.

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.

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.

  • Always detached: verify desktop sign-in, permission to debug the current appId, 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.