Skip to content

Changelog

This page records the concrete changes in each version.

If you are looking for downloads, version numbers, and checksums, see Release Notes.

  • Unity hosted data-plane attach is now single-flight per roomId + playerId, preventing concurrent duplicate descriptor requests and repeated KCP session replacement.
  • Unity Direct KCP data-plane now reports connected only after kcp_handshake_ack; reconnect closes the old KCP session first, retries with 500ms -> 1s -> 2s, and discards callbacks from stale attempts.
  • Unity runtime classifies STATE_NOT_FOUND, INVALID_STATE_SCOPE, INVALID_REQUEST, and FORBIDDEN as business errors. STATE_NOT_FOUND applies defaults for common global state keys and no longer surfaces as a connection-service failure.
  • bridge/contracts/data-plane.md now documents data-plane single-flight, reconnect close ordering, handshake ack, and stale-attempt semantics.
  • Added the PREVIEW SDK environment for Unity / Godot / GameMaker. It connects to the IndieGamesPass Preview desktop client and \\.\pipe\igp-desktop-sdk-preview.
  • Added a Rematch button to the Unity MirrorTransportDemo debug panel, plus Unity / Godot hosted-session rematch send regression coverage for command code 16.
  • Unity reliable data sending now drains by available KCP WaitSnd capacity instead of a fixed byte-rate/token bucket, with a fallback per-drain cap when WaitSnd is unavailable.
  • Unity reliable send queues now return kErrorSendQueueFull when capacity is exhausted. Mirror transport treats this as reliable-channel loss and disconnects the affected peer so state can be rebuilt cleanly.
  • Unity Mirror transport now prioritizes small reliable payloads, stops silently dropping inbound queued transport messages, detects 10-second inbound peer silence, and best-effort flushes disconnect packets on shutdown.
  • Unity reliable reassembly now evicts the oldest partial message under inflight/buffer pressure instead of throwing, and reports reassemblyEvicted in network diagnostics.
  • Unity hosted data-plane status now recovers from stale error state when KCP is still alive, avoiding misleading status after transient transport errors.
  • Added the independently versioned optional Unity Cloud Archive package cn.indiegp.sdk.unity.cloud-archive 0.1.4. It forwards cloud-save load/save requests through desktop session, restricts slot to fixed values "1" through "5", and exposes version / baseVersion plus currentVersion on 409 conflicts.
  • Added the cloudArchive desktop-session capability. cloudArchiveForward now fails early when the capability is missing, and Cloud Archive API failures parse Desktop’s normalized error body while keeping compatibility with the legacy API envelope.
  • Added the Cloud Archive optional .unitypackage to Unity release packaging, Unity package tests, installation docs, Release Notes, and the site download table.
  • Added stable/raw Unity KCP RTT statistics. If a heartbeat is sent while KCP already has queued data, that sample is marked congested and only contributes to LastRTT, RawAvgRTT, and diagnostics instead of polluting the normal AvgRTT latency display.
  • Added rttLastMs, rttAvgMs, rttRawAvgMs, rttCongested, and pingQueueDepth to Unity network diagnostics so short spikes can be classified as game-payload queueing, real network variance, or receive-side backlog.
  • Split Unity network diagnostics logging and the on-screen overlay into separate switches. EnableNetworkDiagnostics enables sampling/logging only, while ShowNetworkDiagnosticsOverlay controls the debug panel, so logging can stay on without automatically showing debug UI.
  • Added an outgoing scheduler for Unity point-to-point reliable messages. Reliable fragments are released over frames using a token bucket, per-drain payload cap, and WaitSnd high/low watermarks, reducing the risk of Mirror or large payload bursts flooding KCP. Diagnostics now include netOutQueue, netOutSent, and netOutThrottle.
  • Increased Unity KCP receive burst draining and grow the KCP receive buffer when needed, preventing valid larger messages from staying stuck at the receive-queue head. Diagnostics now include recvLimit, recvBufGrow, and recvOversize.
  • Stopped logging a normal RTT line for every KCP pong to avoid high-frequency logging amplifying Unity main-thread jitter during short network bursts.
  • Added optional Unity network diagnostics for WaitSnd, Mirror produced counters, KCP out/recv, hit64, pktQueue, and reassembly, plus a diagnostic overlay.
  • Bounded the Unity P2P polling compatibility queue so event-only integrations cannot grow the SDK queue without limit.
  • Clamped negotiated reliable chunk sizes so JSON/base64 wrapped chunks fit within the KCP frame limit.
  • Moved Unity network callbacks outside the SDK network-state lock to reduce SDK-side amplification when game callbacks do heavy work.
  • Switched Unity runtime version reporting to the explicit package version to avoid package/version detection mismatches.
  • Unity hosted sessions now reset the KCP data plane and P2P session state when a same-room rematch returns to waiting, preventing the next round from reusing stale data-plane state.
  • Added the optional Unity Lying Bottle package cn.indiegp.sdk.unity.lying-bottle, with typed desktop-session forwarding entry points for player profile, inventory, shop, order, and related bridge calls.
  • Added request/response call support to Unity desktop sessions. IGPRuntimeManager can now forward Lying Bottle requests through desktop session.
  • Added Lying Bottle quickstart, README, and Chinese developer guide updates, aligned with the latest bridge guide fields, routes, and purchase quantity rules.
  • Added hosted bootstrap requests during Unity desktop session attach, allowing IGPRuntimeManager to fetch hosted-room initialization parameters from desktop and simplify hosted-mode integration.
  • Updated IGPDesktopSessionClient / IGPDesktopSessionProtocol with hosted bootstrap request and response models plus generated protocol constants from the root igp-proto source.
  • Added a Unity same-room in-progress map change event. Games can receive map changes through IGPRuntimeManager.onMapChanged or IGPEventManager.onMapChanged.
  • Added IGPMapChangeData, including previous and next mapPublicId / mapVersionId plus the updated room snapshot.
  • Updated Unity quickstart, event reference, room lifecycle sample, troubleshooting, and website room docs with in-progress map change integration notes.
  • Unity / GameMaker / Godot achievements now include an API to clear all achievements for the current game and return the clear result.
  • The Unity Mirror transport now defaults to compatibility with Mirror v89.0.0 and newer. v90.0.0 or newer remains recommended.
  • Added desktop session protocol compatibility checks during attach, with a clear upgrade error when desktop is too old or incompatible.
  • The SDK now uses the capability list returned by desktop to decide whether a feature can be called, avoiding later failures.
  • When the SDK starts desktop, production builds now only launch the trusted IndieGamesPass desktop app; development builds can still point to a local debug desktop.
  • Unity Editor attach now falls back to the current Unity Editor process path when no game executable debug path is configured, and desktop validates the appId through SDK debugging rules.
  • Unity SDK initialization is now explicit. Games should call InitializeAsync() directly.
  • IGPRuntimeManager now auto-attaches or creates IGPConfig in the Unity Editor.
  • Desktop session, host bridge, and hosted session protocol constants are now generated from a shared source to reduce drift.
  • Unity SDK docs were updated for the latest initialization and Editor debugging flow.
  • Added the optional Unity compliance package cn.indiegp.sdk.unity.compliance for real-name verification, anti-addiction events, and status updates.
  • Added compliance APIs for age group and remaining play time so games do not need to calculate them locally.
  • Real-name verification and anti-addiction network or service errors are now handled as blocked entry, with the default message “network or service error”.
  • Improved Unity SDK handling for local communication, Editor debugging, and offline authorization cache safety.
  • Changed Unity SDK release artifacts to .unitypackage files so they can be imported directly through Unity Editor’s Import Package flow.

Initial SDK release.

  • Provided core Unity SDK capabilities, including startup connection, achievements, room lobby, realtime messaging, state, and RPC.
  • Provided the optional Unity Mirror transport package for Mirror-based multiplayer scenarios.
  • Provided initial packages, sample projects, and integration docs for first-round integration and validation.