Changelog
This page records the concrete changes in each version.
If you are looking for downloads, version numbers, and checksums, see Release Notes.
Unreleased
Section titled “Unreleased”0.2.14 - 2026-07-22
Section titled “0.2.14 - 2026-07-22”- Rebuilt Unity SDK
0.2.14packages for the main SDK, Mirror transport, Compliance, Lying Bottle, Cloud Archive, and GameKit modules. - Restored hosted RPC contracts and the Unity/Godot SDK RPC APIs, including register, unregister, call, response events, samples, and protocol tests. Hosted command numbers
12through14,rpc_name, andmodeare active again; RPC realtime message names remain reserved to SDK control traffic. - Unity Mirror Transport diagnostics now distinguish the Mirror
logicalChannelfrom theeffectiveTransport(kcporraw-udp) selected for each send, including explicit KCP fallback diagnostics when the raw UDP unreliable lane is unavailable. - Unity hosted KCP adds read-only
KcpHealthStateandKcpLastFaultReason. Dead links, fatal socket errors, and hard send-queue overflow close the current data plane, setConnectionFailed, and report throughonError. A bound Mirror Transport clears queued inbound messages and dispatches the corresponding Mirror disconnect callbacks once. - The built-in network overlay is now
ShowNetworkDiagnostics/showNetworkDiagnosticsand displays health, the last fault, RTT, queues, and UDP statistics. - Unity KCP applies send backpressure at
WaitSnd >= 1024and adaptively drains UDP bursts beyond the 256-datagram soft budget. - Arena KCP uses MTU 1200 with expanded per-remote UDP/KCP progress diagnostics, while Unity Mirror Transport reliable batching now defaults to 1024 bytes.
- Unity hosted KCP and raw UDP unreliable diagnostics now emit structured, observe-only warnings for high latency and high datagram or byte rates.
- Unity Mirror Transport now emits observe-only warnings for large reliable payloads and deep inbound queues while keeping per-payload summaries at
Debug. - High-latency, high-traffic, and Mirror payload/queue warnings remain observe-only and do not change networking behavior.
- Anomalies are logged immediately when first observed, summarized at most once every 30 seconds while ongoing, and high-latency/high-traffic recovery is logged once after a five-second quiet period.
0.2.13 - 2026-07-13
Section titled “0.2.13 - 2026-07-13”- Published Unity SDK
0.2.13packages for the main SDK, Mirror transport, Compliance, Lying Bottle, Cloud Archive, and GameKit modules. - Reorganized the main Unity package source into
Core,Platform,Capabilities,Multiplayer,Diagnostics, andInternalcategories. Public APIs, namespaces, assembly identity, and Unity asset GUIDs are unchanged. - Unity in-game ready state APIs now live on
IGPRuntimeManagerasSetGameReadyAsyncandGetGameReadyStates. They reuse Arena player state atPlayer.State["gameReady"]; batch queries read the current room snapshot. - Removed the Mirror Transport ready APIs and the dedicated KCP
41004ready message path. Game ready state does not control Mirror connections. - Runtime Manager diagnostics now use the shared
IGPLogpipeline, includingInfogame-ready logs underscope=game-ready. - Unity GameKit adds
IGPProfile.GetProfileAsyncfor fetching the signed-in user’s complete current profile through the desktop-owned user context. - Desktop session command
GetDesktopUserProfile(22) returns profile JSON including avatar and background selections, avatar-frame render metadata, bio, name-change state, activity time, and pending nickname review state. - Unity keeps avatar PNG retrieval on the existing
GetDesktopUserAvatarAsyncpath while Profile exposes the selection metadata and public media URLs returned by desktop.
0.2.12 - 2026-07-10
Section titled “0.2.12 - 2026-07-10”- Published Unity SDK
0.2.12packages for the main SDK, Mirror transport, Compliance, Lying Bottle, Cloud Archive, and GameKit modules. - Unity hosted data-plane descriptors now carry raw UDP unreliable lane
metadata (
unreliableUdpHost,unreliableUdpPort,unreliableUdpToken,unreliableUdpExpiresAtUnixMs,unreliableUdpPayloadMaxBytes), while normalIGPNetwork.SendDataandIGPNetwork.SendReliableDataremain reliable KCP. - Unity SDK adds an internal raw UDP unreliable client for Mirror transport, including token hello/ack, session-targeted envelopes, negotiated payload limits, and receive dispatch.
- Unity Mirror Transport now defaults
Channels.Unreliableto raw UDP through theUse Raw UDP Unreliable Lanetoggle; disabling the toggle restores the legacy all-KCP reliable path. - Unity Mirror Transport reports the unreliable packet max from the UDP lane
(default
1200bytes) when the raw lane is enabled. - Unity GameKit adds a desktop-owned Share module that submits versioned text,
multi-image binary payloads, and game-defined extension data through desktop
session command
RequestDesktopShare. - Desktop session command requests now support binary
contentBytespayloads, and the SDK frame limit is raised to 16 MiB so Share can send up to 10 MiB of raw image bytes.
0.2.11 - 2026-07-07
Section titled “0.2.11 - 2026-07-07”- Published Unity SDK
0.2.11packages for the main SDK, Mirror transport, Compliance, Lying Bottle, Cloud Archive, and GameKit modules. - Unity
IGPConfig.debugLoggingis now anIGPLogLeveldropdown (Off,Error,Warning,Info,Debug) with minimum-level filtering, so projects can keep warnings/errors without logging every network payload. - Unity Mirror Transport now keeps low-frequency
Infosummaries for reliable payloads over 16 KiB or expected to fragment, including direction, peer, original/wire bytes, compression state, and estimated fragments. - Unity RTT HUD diagnostics now show UDP datagram rates, packet totals, and
socket byte totals alongside App RTT, KCP
srtt/rto, 1-second Queue averages, and 5-secondQ peakvalues. - Rebuilt the Unity
0.2.11packages so KCP/RTT diagnostics stay observational: heartbeatIsKcpAliveno longer gates P2P/Mirror sends, and readingKcpTransportStatsno longer advances UDP rate sampling.
0.2.10 - 2026-07-06
Section titled “0.2.10 - 2026-07-06”- Published Unity SDK
0.2.10packages for the main SDK, Mirror transport, Compliance, Lying Bottle, Cloud Archive, and GameKit modules. - Unity Mirror Transport now defaults connection retry attempts to every 60 seconds, connection timeout to 300 seconds, and peer silence timeout to 300 seconds.
- Unity hosted KCP now supports binary envelope v2 for reliable chunk payloads, while preserving the existing JSON/base64 fallback path.
- Unity Mirror transport now adds compression decision diagnostics and a separate reliable batch threshold for Mirror message coalescing.
- Unity KCP send and receive windows are now configurable, with focused protocol/runtime tests covering the new binary reliable chunk behavior.
0.2.8 - 2026-07-03
Section titled “0.2.8 - 2026-07-03”- Published Unity SDK
0.2.8packages for the main SDK, Mirror transport, Compliance, Lying Bottle, Cloud Archive, and GameKit modules. - Unity SDK logs now include a per-process
runIdand startupevent=session-startsummary with app, SDK, platform, transport, endpoint, room, and local player context. - Unity KCP and P2P diagnostics now use explicit
localPlayerId,sourcePlayerId, andtargetPlayerIdfields, add heartbeat timing details, and log payload size/checksum summaries without full base64 payloads.
0.2.7 - 2026-06-30
Section titled “0.2.7 - 2026-06-30”- Published Unity SDK
0.2.7packages for the main SDK, Mirror transport, Compliance, and GameKit modules. - Unity achievement unlock and progress calls now generate an
eventIdwhen callers omit one, so desktop-session achievement uploads have a default idempotency key. - Unity achievement progress reports now accept the optional
progressValueModefield forSETversusINCREMENTsemantics.
0.2.6 - 2026-06-25
Section titled “0.2.6 - 2026-06-25”- Published Unity SDK
0.2.6packages for the main SDK, Mirror transport, and Compliance modules. - Unity internal hosted session, KCP, P2P, and hosted realtime logs now share
the structured
[IGP SDK]format with timestamp, level, scope, path, and event fields while remaining gated byIGPRuntimeManager.DebugLogging. - Unity KCP receive-drain diagnostics now include payload, payload byte, frame, queue, RTT, and window snapshots in the unified SDK log stream.
- Unity Mirror Transport now compresses payloads from 2 KiB by default before SDK size classification, reducing large-message pressure earlier.
0.2.5 - 2026-06-24
Section titled “0.2.5 - 2026-06-24”- Published Unity SDK
0.2.5packages for the main SDK, Mirror transport, and Compliance modules. - Unity hosted KCP now emits structured
[IGP KCP]diagnostics for handshake, UDP/KCP receive, send failures, heartbeat RTT, and internal queue/window state. - Unity
IGPKcpClient.DiagnosticsSummarynow exposes a readable KCP network snapshot for diagnostics exports without parsing console logs.
0.2.4 - 2026-06-24
Section titled “0.2.4 - 2026-06-24”- Published Unity SDK
0.2.4packages for the main SDK, Mirror transport, and Compliance modules. - Unity hosted KCP now emits only
controlanddatatransport channels, matching Arena’s current control/data queue split.
0.2.3 - 2026-06-24
Section titled “0.2.3 - 2026-06-24”- Published Unity SDK
0.2.3packages for the main SDK, Mirror transport, and Compliance modules. - Unity Mirror Transport now exposes
PeerSilenceTimeoutSeconds, defaults peer silence detection to 120 seconds, and keeps the value clamped to at least 1 second for long payload or reconnect-heavy sessions. - Unity
IGPNetworknow emits peer activity when inbound payloads or reliable chunks are accepted, allowing Mirror Transport to refresh peer silence timers while large reliable messages are still being reassembled. - Unity Mirror Transport logs now include timestamps when debug logging is enabled, making transport events easier to correlate with game and platform logs.
0.2.2 - 2026-06-23
Section titled “0.2.2 - 2026-06-23”- Published Unity SDK
0.2.2packages for the main SDK, Mirror transport, and Compliance modules. - Unity
IGPNetworkcan now disable retaining incoming packets for polling when an event-only consumer such as Mirror Transport is bound, preventing duplicate receive queues from accumulating the same realtime data. - Unity Mirror Transport now follows
IGPRuntimeManager.DebugLoggingas its only logging switch, and stays silent when no Runtime Manager is bound.
0.2.1 - 2026-06-23
Section titled “0.2.1 - 2026-06-23”- Unity hosted KCP now clears pending large-payload reassembly state when Arena
sends
reliable-message-aborted, and ignores late chunks for the samereliableMessageIduntil the reassembly timeout window expires.
0.2.0 - 2026-06-22
Section titled “0.2.0 - 2026-06-22”- Unity hosted KCP now separates
control,data-small, anddata-largetransport channels so large reliable fragments do not share the same send queue with ordinary small payloads or control notifications. - Ordinary p2p small payloads keep the existing binary envelope path, while large reliable fragments continue to use JSON chunk metadata for SDK-side reassembly.
- Arena reports
data-largequeue overflow withreliable-message-abortedcontrol messages, and the Unity SDK recognizes and logs those control events. - Mirror Transport payload compression is now enabled by default with a 16 KiB threshold before SDK size classification.
- Published Unity SDK
0.2.0packages for the main SDK, Mirror transport, and Compliance modules.
0.1.11 - 2026-06-18
Section titled “0.1.11 - 2026-06-18”- Published Unity SDK
0.1.11packages for the main SDK, Mirror transport, and Compliance modules.
0.1.9 - 2026-06-16
Section titled “0.1.9 - 2026-06-16”- Unity Mirror transport reconnect windows now use a 30-second connect timeout and 30-second peer silence timeout while keeping connect requests throttled to at most once every 5 seconds.
- Unity Mirror transport pending connect requests are now throttled to at most once every 5 seconds without changing the existing control payload format.
- Repeated
ClientConnect()calls for the same pending host now keep the current retry window instead of resetting it and sending another connect request. - Unity Mirror transport connection handshakes now carry a connect attempt id,
so stale or repeated
ConnectAcceptpackets cannot fire duplicate client connected callbacks. - Published Unity SDK
0.1.9packages.
0.1.8 - 2026-06-15
Section titled “0.1.8 - 2026-06-15”- Published Unity SDK
0.1.8packages.
0.1.7 - 2026-06-14
Section titled “0.1.7 - 2026-06-14”- Rolled back Unity
IGPNetworkto the direct KCP send path throughIGPRuntimeManager.SendP2PMessage, removing SDK-side outgoing reliable scheduling and send-queue backpressure. - Removed network diagnostics summaries, KCP queue diagnostics, RTT congestion filtering, and the diagnostics overlay that no longer apply after the rollback.
- Restored the Unity P2P receive buffer to an unbounded
ConcurrentQueue, and removedIGPNetworkResult.kErrorSendQueueFullplus the matching Mirror transport disconnect handling. - Removed tests and documentation for the reverted bounded packet queue, outgoing scheduler, KCP diagnostics, and error code.
- Published Unity SDK
0.1.7packages.
0.1.6 - 2026-06-12
Section titled “0.1.6 - 2026-06-12”- 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 with500ms -> 1s -> 2s, and discards callbacks from stale attempts. - Unity runtime classifies
STATE_NOT_FOUND,INVALID_STATE_SCOPE,INVALID_REQUEST, andFORBIDDENas business errors.STATE_NOT_FOUNDapplies defaults for common global state keys and no longer surfaces as a connection-service failure. bridge/contracts/data-plane.mdnow documents data-plane single-flight, reconnect close ordering, handshake ack, and stale-attempt semantics.- Added the
PREVIEWSDK 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.
0.1.5 - 2026-06-12
Section titled “0.1.5 - 2026-06-12”- Unity reliable data sending now drains by available KCP
WaitSndcapacity instead of a fixed byte-rate/token bucket, with a fallback per-drain cap whenWaitSndis unavailable. - Unity reliable send queues now return
kErrorSendQueueFullwhen 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
reassemblyEvictedin network diagnostics. - Unity hosted data-plane status now recovers from stale
errorstate when KCP is still alive, avoiding misleading status after transient transport errors.
0.1.3 - 2026-06-09
Section titled “0.1.3 - 2026-06-09”- 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 normalAvgRTTlatency display. - Added
rttLastMs,rttAvgMs,rttRawAvgMs,rttCongested, andpingQueueDepthto 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.
EnableNetworkDiagnosticsenables sampling/logging only, whileShowNetworkDiagnosticsOverlaycontrols 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
WaitSndhigh/low watermarks, reducing the risk of Mirror or large payload bursts flooding KCP. Diagnostics now includenetOutQueue,netOutSent, andnetOutThrottle. - 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, andrecvOversize. - Stopped logging a normal RTT line for every KCP pong to avoid high-frequency logging amplifying Unity main-thread jitter during short network bursts.
0.1.2 - 2026-06-09
Section titled “0.1.2 - 2026-06-09”- Added optional Unity network diagnostics for
WaitSnd, Mirror produced counters, KCP out/recv,hit64,pktQueue, andreassembly, 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.
0.1.1 - 2026-06-09
Section titled “0.1.1 - 2026-06-09”- 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.
0.0.8 - 2026-06-05
Section titled “0.0.8 - 2026-06-05”- Added hosted bootstrap requests during Unity desktop session attach, allowing
IGPRuntimeManagerto fetch hosted-room initialization parameters from desktop and simplify hosted-mode integration. - Updated
IGPDesktopSessionClient/IGPDesktopSessionProtocolwith hosted bootstrap request and response models plus generated protocol constants from the rootigp-protosource.
0.0.7 - 2026-05-27
Section titled “0.0.7 - 2026-05-27”- Added a Unity same-room in-progress map change event. Games can receive map changes through
IGPRuntimeManager.onMapChangedorIGPEventManager.onMapChanged. - Added
IGPMapChangeData, including previous and nextmapPublicId/mapVersionIdplus the updated room snapshot. - Updated Unity quickstart, event reference, room lifecycle sample, troubleshooting, and website room docs with in-progress map change integration notes.
0.0.6 - 2026-05-13
Section titled “0.0.6 - 2026-05-13”- 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.0and newer.v90.0.0or newer remains recommended.
0.0.5 - 2026-05-12
Section titled “0.0.5 - 2026-05-12”- 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.
0.0.4 - 2026-05-12
Section titled “0.0.4 - 2026-05-12”- 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. IGPRuntimeManagernow auto-attaches or createsIGPConfigin 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.
0.0.2 - 2026-04-29
Section titled “0.0.2 - 2026-04-29”- Added the optional Unity compliance package
cn.indiegp.sdk.unity.compliancefor 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
.unitypackagefiles so they can be imported directly through Unity Editor’sImport Packageflow.
0.0.1 - 2026-03-31
Section titled “0.0.1 - 2026-03-31”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.