跳转到内容

Unity Changelog

本页只记录 Unity SDK 各版本的实际变更,不使用其他引擎的 SDK 版本号。

如需查看下载包和版本号,请查看 Release Notes

  • Core 新增手机号验证码登录与 refresh、基础资料,以及统一的房间访问能力;仅明确支持的能力会在没有适用 Desktop provider 时组织 API 请求。
  • Multiplayer 新增可选 Rooms 服务,提供 Gateway 房间查询、创建、加入、连接、生命周期命令和地图信息;所有联机项目继续安装 Core + Multiplayer。
  • Hosted bootstrap 与显式 join 统一生成 IGPRoomJoinResult,并复用同一种 RoomNode Control/Game connection;连接身份使用 room/player 和当前 reliable credential。
  • 删除未发布的替代 Multiplayer 包、EntryMode 和旧的生成式房间身份类型与判断。CreateAndJoinAsync 仍固定执行 create 和 join 两个请求。
  • 从不透明 descriptor 的 expiresAtUnixSeconds 读取 Arena data-plane 过期时间,并统一使用 Unix 秒比较。
  • hosted-session Protobuf varint 改用 64 位存储解码,避免较大的时间戳溢出 32 位累加器。
  • Core、Multiplayer、Compliance 和 GameKit 均同时提供 .unitypackage 与离线 UPM .tgz;同一模块在下载页共用说明。
  • 删除会自动查找、创建、保存、刷新或绑定 IGPConfig 资源的 Unity Editor 回调。配置资源现在完全由接入项目显式创建、填写和引用。
  • Unity Core 的公开事件收敛为 ConnectionChangedAuthorizationChangedAntiAddictionChangedOfflineMapLaunchRequestedErrorOccurred
  • Unity Multiplayer 的公开事件收敛为 ConnectionChangedRoomChangedMessageReceivedErrorOccurredIGPNetwork 只公开 DataReceived
  • 房间、地图、Scene Gate、队伍、房主和玩家变化统一通过 RoomChanged 及 flags 描述;授权状态与失败信息统一通过 AuthorizationChanged 描述。
  • 结构化 custom/state/RPC 消息只触发 MessageReceived;KCP/UDP p2p_data 完成校验和分片重组后只触发一次 DataReceived,并携带 Transport
  • Desktop、Hosted、KCP 和 UDP 客户端改为 internal;Mirror 只依赖 Multiplayer internal backend。Desktop wire protocol 保持不变,Desktop 无需升级。
  • 这是破坏性版本,不提供旧事件的 [Obsolete] 转发层。接入方需要改用新的 C# event 名称、参数类型和 += / -= 订阅方式。
  • KCP 保活改为 SDK 内部固定的 1 秒空闲 probe;活跃流量和待 ACK 数据不会产生额外 ping。删除 Inspector 心跳字段、公开调节 API 和 GameState,不提供兼容入口。
  • 空闲 probe 采用最多 4 个未完成记录和 5 秒 Debug 汇总。无 ACK 继续执行 3 秒 SendSuspect / 15 秒 fault;KCP 已 ACK 但 Arena pong 延迟只记录限流 Warning,不误断 data plane。
  • Unity Core 与 Multiplayer 正式拆包:Hosted、Room、Realtime、KCP/UDP、网络诊断和 Mirror 集成迁入 cn.indiegp.sdk.unity.multiplayer

  • 新增 IGPMultiplayerRuntime,在房间和玩家上下文有效后自动建立数据面,并按 1s, 2s, 5s, 10s, 30s 退避重建 KCP。

  • Multiplayer 新增可靠 KCP GetSceneGateAsync;晚加入或重连客户端可定向读取 Owner 当前运行时 SceneGate,不依赖房间快照或通用状态 key。

  • IGPMirrorTransport.ClientConnect() / ServerStart() 只记录 Mirror 意图,不再发起 descriptor 或 KCP/UDP 连接,也不控制 Mirror.NetworkManager

  • 删除旧 cn.indiegp.sdk.unity.mirror-transport 包与旧序列化结构,不提供兼容 facade;desktop wire ID、JSON/protobuf 内容保持不变。

  • 发布 Unity SDK 0.2.15 主包以及 Multiplayer、Compliance 和 GameKit 可选包;本次 Unity-only release 不包含 GameMaker 产物。

  • Unity hosted KCP 将出站 ACK 进展与入站 payload/Pong 分开判断。有待确认数据时,连续 3 秒无 ACK 进展进入 SendSuspect,连续 15 秒无进展只触发一次 data-plane fault;SDK 不自动重连或重新 attach。

  • reliable 发送先进入有界原子 FIFO。分片逻辑消息只能整组接受或返回 kErrorWouldBlock,每 Tick 最多注入 64 个新 KCP 分片或 128 KiB。

  • 新 KCP client 和 Reset 后的 Runtime Manager 默认每 Tick 读取 128 个 UDP datagram,发送/接收窗口为 256/256;nocwnd = true 保持不变。

  • Mirror Transport 对 payload 队列实施全局和单玩家硬限制,并按条数、字节数和时间预算分帧派发;unreliable 溢出丢弃,reliable 溢出只断开对应逻辑玩家。

  • KCP 队列上限、发送停滞阈值和每 Tick 发送预算固定为 SDK 安全策略,不再暴露为 Inspector 配置;已有 datagram 和窗口序列化覆盖值保持不变。

  • 重新构建 Unity SDK 0.2.14 主包以及 Mirror transport、Compliance 和 GameKit 可选包。

  • 恢复 hosted RPC 契约以及 Unity SDK 的 RPC 注册、注销、调用、响应事件、样例和协议测试。hosted command 编号 1214rpc_namemode 重新启用;RPC realtime 消息名继续保留给 SDK 控制流量。

  • Unity Mirror Transport 诊断现在区分 Mirror logicalChannel 与每次发送实际采用的 effectiveTransportkcpraw-udp);raw UDP unreliable 通道不可用时会明确记录回退到 KCP。

  • Unity hosted KCP 新增只读 KcpHealthStateKcpLastFaultReason。dead-link、致命 socket 错误和发送队列硬溢出会关闭当前 data-plane、进入 ConnectionFailed 并通过 onError 上报。

  • 内置网络浮层改名为 ShowNetworkDiagnostics / showNetworkDiagnostics,并显示健康状态、最近故障、RTT、队列和 UDP 统计。

  • Unity KCP 在 WaitSnd >= 1024 时施加发送背压,并可越过 256 datagram 软预算自适应排空 UDP burst。

  • Arena KCP 使用 MTU 1200 并补充逐远端 UDP/KCP 进展诊断;Unity Mirror Transport reliable batching 默认值调整为 1024 bytes。

  • Unity hosted KCP 和 raw UDP unreliable 诊断现在会针对高延迟、高 datagram 速率和高字节速率输出结构化、只观察的 Warning。

  • Unity Mirror Transport 会针对合法 reliable 大包和深接收队列输出只观察 Warning,逐包摘要保留在 Debug

  • 高延迟、高流量和 Mirror payload/queue 告警仍为只观察 Warning,不改变网络行为。

  • 异常首次出现时立即记录;持续异常最多每 30 秒汇总一次;高延迟和高流量恢复并稳定 5 秒后记录一次恢复。

  • 绑定的 Mirror Transport 会在 Runtime 进入 ConnectionFailed 时立即清空待派发的入站消息,并向对应的客户端和服务端连接派发一次断开回调。

  • Published Unity SDK 0.2.13 packages for the main SDK, Mirror transport, Compliance and GameKit modules.
  • Reorganized the main Unity package source into Core, Platform, Capabilities, Multiplayer, Diagnostics, and Internal categories. Public APIs, namespaces, assembly identity, and Unity asset GUIDs are unchanged.
  • Unity in-game ready state APIs now live on IGPRuntimeManager as SetGameReadyAsync and GetGameReadyStates. They reuse Arena player state at Player.State["gameReady"]; batch queries read the current room snapshot.
  • Removed the Mirror Transport ready APIs and the dedicated KCP 41004 ready message path. Game ready state does not control Mirror connections.
  • Runtime Manager diagnostics now use the shared IGPLog pipeline, including Info game-ready logs under scope=game-ready.
  • Unity GameKit adds IGPProfile.GetProfileAsync for 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 GetDesktopUserAvatarAsync path while Profile exposes the selection metadata and public media URLs returned by desktop.
  • Published Unity SDK 0.2.12 packages for the main SDK, Mirror transport, Compliance and GameKit modules.
  • Unity hosted data-plane descriptors now carry raw UDP unreliable lane metadata (unreliableUdpHost, unreliableUdpPort, unreliableUdpToken, unreliableUdpExpiresAtUnixMs, unreliableUdpPayloadMaxBytes), while normal IGPNetwork.SendData and IGPNetwork.SendReliableData remain 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.Unreliable to raw UDP through the Use Raw UDP Unreliable Lane toggle; disabling the toggle restores the legacy all-KCP reliable path.
  • Unity Mirror Transport reports the unreliable packet max from the UDP lane (default 1200 bytes) 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 contentBytes payloads, and the SDK frame limit is raised to 16 MiB so Share can send up to 10 MiB of raw image bytes.
  • Published Unity SDK 0.2.11 packages for the main SDK, Mirror transport, Compliance and GameKit modules.
  • Unity IGPConfig.debugLogging is now an IGPLogLevel dropdown (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 Info summaries 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-second Q peak values.
  • Rebuilt the Unity 0.2.11 packages so KCP/RTT diagnostics stay observational: heartbeat IsKcpAlive no longer gates P2P/Mirror sends, and reading KcpTransportStats no longer advances UDP rate sampling.
  • Published Unity SDK 0.2.10 packages for the main SDK, Mirror transport, Compliance 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.
  • Published Unity SDK 0.2.8 packages for the main SDK, Mirror transport, Compliance and GameKit modules.
  • Unity SDK logs now include a per-process runId and startup event=session-start summary with app, SDK, platform, transport, endpoint, room, and local player context.
  • Unity KCP and P2P diagnostics now use explicit localPlayerId, sourcePlayerId, and targetPlayerId fields, add heartbeat timing details, and log payload size/checksum summaries without full base64 payloads.
  • Published Unity SDK 0.2.7 packages for the main SDK, Mirror transport, Compliance, and GameKit modules.
  • Unity achievement unlock and progress calls now generate an eventId when callers omit one, so desktop-session achievement uploads have a default idempotency key.
  • Unity achievement progress reports now accept the optional progressValueMode field for SET versus INCREMENT semantics.
  • Published Unity SDK 0.2.6 packages 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 by IGPRuntimeManager.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.
  • Published Unity SDK 0.2.5 packages 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.DiagnosticsSummary now exposes a readable KCP network snapshot for diagnostics exports without parsing console logs.
  • Published Unity SDK 0.2.4 packages for the main SDK, Mirror transport, and Compliance modules.
  • Unity hosted KCP now emits only control and data transport channels, matching Arena’s current control/data queue split.
  • Published Unity SDK 0.2.3 packages 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 IGPNetwork now 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.
  • Published Unity SDK 0.2.2 packages for the main SDK, Mirror transport, and Compliance modules.
  • Unity IGPNetwork can 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.DebugLogging as its only logging switch, and stays silent when no Runtime Manager is bound.
  • Unity hosted KCP now clears pending large-payload reassembly state when Arena sends reliable-message-aborted, and ignores late chunks for the same reliableMessageId until the reassembly timeout window expires.
  • Unity hosted KCP now separates control, data-small, and data-large transport 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-large queue overflow with reliable-message-aborted control 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.0 packages for the main SDK, Mirror transport, and Compliance modules.
  • Published Unity SDK 0.1.11 packages for the main SDK, Mirror transport, and Compliance modules.
  • 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 ConnectAccept packets cannot fire duplicate client connected callbacks.
  • Published Unity SDK 0.1.9 packages.
  • Published Unity SDK 0.1.8 packages.
  • Rolled back Unity IGPNetwork to the direct KCP send path through IGPRuntimeManager.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 removed IGPNetworkResult.kErrorSendQueueFull plus 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.7 packages.
  • Unity hosted data-plane attach 改为同一 roomId + playerId single-flight,避免并发重复请求 descriptor 和重复替换 KCP session。
  • Unity Direct KCP data-plane 现在只有收到 kcp_handshake_ack 后才进入 connected;重连前会先关闭旧 KCP,并按 500ms -> 1s -> 2s 退避重试,同时丢弃过期 attempt 的回调。
  • Unity runtime 将 STATE_NOT_FOUNDINVALID_STATE_SCOPEINVALID_REQUESTFORBIDDEN 分类为业务错误;STATE_NOT_FOUND 会为常见 global state key 写入默认值,不再触发连接服务不可用提示。
  • bridge/contracts/data-plane.md 补充 data-plane single-flight、重连关闭顺序、handshake ack 和 stale attempt 处理语义。
  • Unity SDK Environment 新增 PREVIEW,自动连接 IndieGamesPass Preview 桌面端与 \\.\pipe\igp-desktop-sdk-preview
  • Unity MirrorTransportDemo 调试面板新增 Rematch 按钮;Unity hosted session 增加 rematch 发送回归测试,锁定 RematchGame command code 为 16
  • Unity reliable data 发送改为按 KCP WaitSnd 可用容量 drain,不再受固定字节率/token bucket 限制;当 WaitSnd 不可用时保留每次 drain 的兜底上限。
  • Unity reliable 发送队列满时返回 kErrorSendQueueFull;Mirror transport 会将其视为可靠通道丢失并断开对应 peer,便于重连后重建状态。
  • Unity Mirror transport 优先发送小 reliable payload,不再静默丢弃已接收但未派发的 inbound transport 消息,并新增 10 秒入站静默断线和 shutdown disconnect best-effort flush。
  • Unity reliable reassembly 在 inflight/buffer 压力下驱逐最旧 partial 消息而不是抛异常,并在网络诊断中输出 reassemblyEvicted
  • Unity hosted data-plane 状态在 KCP 仍 alive 时会从陈旧 error 状态恢复,避免 transient transport error 后状态误报。
  • Unity KCP RTT 统计新增稳定/原始双口径:发送心跳时若 KCP 已有排队,样本会标记为拥塞,只进入 LastRTT / RawAvgRTT 和诊断日志,不再污染常规 AvgRTT 延迟显示。
  • Unity 网络诊断补充 rttLastMsrttAvgMsrttRawAvgMsrttCongestedpingQueueDepth,用于判断瞬时高延迟是业务包排队、真实网络波动还是接收侧积压。
  • Unity 网络诊断日志和屏幕 overlay 改为独立开关:EnableNetworkDiagnostics 只开启采样/日志,ShowNetworkDiagnosticsOverlay 才显示屏幕面板,避免测试或正式包开启日志时自动出现调试 UI。
  • Unity 点对点可靠消息新增出站调度器,按 token bucket、每帧 payload 上限和 WaitSnd 高低水位逐帧释放可靠分片,降低 Mirror / 大 payload 瞬时灌入 KCP 的风险;诊断补充 netOutQueuenetOutSentnetOutThrottle
  • Unity KCP 接收侧提高 burst drain 上限,并在需要时扩容 KCP receive buffer,避免合法较大消息因固定缓冲过小卡在接收队列头;诊断补充 recvLimitrecvBufGrowrecvOversize
  • Unity KCP 心跳 pong 不再每次输出普通 RTT 日志,避免高频日志在短时网络 burst 时放大 Unity 主线程抖动。
  • Unity SDK 新增可选网络诊断采样,输出 WaitSnd、Mirror produced、KCP out/recv、hit64pktQueuereassembly 等指标,并提供诊断 overlay。
  • Unity P2P 轮询兼容队列改为有界队列,避免只使用事件回调的游戏让 SDK 内部队列无限增长。
  • Unity hosted data-plane 协商会自动钳制可靠分片大小,避免 JSON/base64 包装超过 KCP frame 上限。
  • Unity 网络回调改为在 SDK 网络状态锁外触发,降低游戏回调执行重活时对 SDK 接收链路的放大影响。
  • Unity SDK 运行时上报版本改为显式包版本,避免接入侧误判 SDK 版本。
  • Unity hosted session 在同一房间 rematch 回到 waiting 时会重置 KCP data plane 和 P2P 会话状态,避免下一局复用上一局的数据面状态。
  • Unity SDK 在 desktop session 建联阶段新增 hosted bootstrap 请求,IGPRuntimeManager 可从桌面端拉取托管房间的初始化参数,简化托管模式接入。
  • IGPDesktopSessionClient / IGPDesktopSessionProtocol 同步补充 hosted bootstrap 请求、响应模型和协议常量,相关协议契约由根目录 igp-proto 统一生成。
  • Unity SDK 新增同一房间内运行中换地图事件,游戏可通过 IGPMultiplayerRuntime.onMapChanged 接收地图变化。
  • 新增 IGPMapChangeData,包含变更前后的 mapPublicId / mapVersionId 和已更新的房间快照。
  • Unity 快速接入、事件说明、房间生命周期示例、问题排查和官网房间文档已补充运行中换地图接入说明。
  • Unity 成就模块新增清除当前游戏全部成就的调用入口,并返回清除结果。
  • Unity Mirror 传输层默认兼容 Mirror v89.0.0 之后的版本,v90.0.0 以上仍作为推荐版本。
  • desktop session 连接阶段新增协议版本校验,desktop 过旧或协议不兼容时会立即给出清晰错误。
  • SDK 会根据 desktop 返回的能力清单判断功能是否可用,避免后续调用时才失败。
  • SDK 主动启动桌面端时,正式环境只允许启动官方可信的 IndieGamesPass;开发环境仍支持显式指定本机调试桌面端。
  • Unity Editor 中未配置游戏 exe 调试路径时,SDK 会自动带上 Unity Editor 当前进程路径,并通过桌面端 SDK 联调规则按 appId 联调。
  • Unity SDK 改为显式初始化,游戏需要主动调用 InitializeAsync()
  • Unity Editor 中 IGPRuntimeManager 会自动挂载项目里的 IGPConfig,缺失时自动创建配置。
  • desktop session、host bridge 和 hosted session 的协议常量改为统一生成,减少协议结构漂移。
  • Unity SDK 文档已同步最新接入方式和 Editor 联调说明。
  • Unity SDK 新增可选合规模块 cn.indiegp.sdk.unity.compliance,用于实名认证和防沉迷功能的事件读取和状态变化通知。
  • 合规模块新增实名认证和防沉迷功能的年龄段和剩余可玩时长读取入口,游戏无需自行换算。
  • 实名认证和防沉迷功能遇到网络或服务异常时,会在合规模块内按不允许进入处理,默认提示为「网络或服务异常」。
  • Unity SDK 加强本地通信、编辑器联调和离线授权缓存的安全处理,降低本机异常输入与调试信息残留风险。
  • Unity SDK 发布包调整为 .unitypackage,便于在 Unity Editor 中通过 Import Package 直接导入。

SDK 初始化版本。

  • 提供 Unity SDK 基础能力,支持启动连接、成就、房间联机大厅、实时消息、状态与 RPC 等核心功能。
  • 提供 Unity Mirror 传输层可选包,用于接入基于 Mirror 的联机场景。
  • 提供基础发布包、示例工程和接入说明,便于开发者完成首轮集成与验证。