Formerly 2022.10
- perf: Grid2D initial capacity to avoid warmup allocations
- perf: NetworkWriter.WriteString now writes directly into the buffer without the intermediate stringBuffer step
- perf: NetworkIdentity.assetId is now cached to avoid expensive "new GUID" construction
- breaking: perf: assetId as uint instead of Guid. saves 12 bytes and much conversion magic (as suggested by james). may need to resave prefabs once in case of spawn issues.
- breaking: perf: NetworkIdentity/NetworkBehaviour OnSerialize return type changed from bool to void to a-void confusion (and branches)
- NetworkManager: auto connect client build option for CCU test bots
- fix: InterestManagement.Awake is now protected virtual (#3214)
- feature: NetworkWriter.Capacity
- feature: NetworkWriter.ToString in form of "[DD-CC-BB-AA-FF @ 5/1000]"
- feature: NetworkWriter implicit ArraySegment conversion for convenience.
also allows for implicit NetworkWriter to NetworkReader conversion. - feature: AccurateInterval from Mirror II to prepare for proper RemoteStatistics measurements & snapshot time interpolation, which requires accurate send interval even if .targetFrameRate can't be set (i.e. in host)
- perf: NetworkServer: Broadcast() now only runs every tickInterval, even if Application.targetFrameRate isn't set in host mode.
previously a host may run at 120 Hz, and even with tickInterval set to 10 Hz, Broadcast() would run 120 times per second, checking every component's dirty bits + send interval. - perf: new NetworkTime based on the new global NetworkClient time snapshot interpolation: significantly more accurate, especially in the first few seconds
- fix: LatencySimulation now uses Time.unscaledTimeAsDouble for long running server precision
- fix: LatencySimulation now flushes properly. fixes barely any packets getting through even on 0 settings
- perf: all client NetworkTransforms now run on the same NetorkClient.timeline instead of each component computing its own
- perf: NetworkIdentity.Serialize bandwidth reduced from 1 byte per component index to (roughly) 1 bit per component (#3228)
- perf: NetworkBehaviour.Serialize safety check reduced from 4 bytes length header to 1 byte length hash, while keeping error correction (#3229)
- fix: Unity 2019, 2020 support added again (#3230)
- breaking: .hasAuthority renamed to .isOwned because it's easier to understand, and to prepare for SyncDirection where there is a difference between: (#3231)
- breaking: NetworkConnectionToServer.clientOwnedObjects renamed to .owned (simplify API)
- feature: NetworkConnection.owned objects are now available on server AND on client
- fix: #3234 assetId setter now allows overwriting an old assetId after duplicating a prefab.
- feature: NetworkWriter.WriteBytes(byte*) unsafe version
- feature: SyncDirection to easily support client auth components without extra Rpcs/Cmds. previously OnSerialize was only server-to-client direction. (#3244)
- feature: perf: NetworkConnectionToClient snapshot interpolated .remoteTimeline to simplify NetworkTransform (#3247)
- feature: NetworkBehaviour.SetDirty() to trigger custom OnSerialize without having to call SetSyncVarDirtyBit(1). prepares for NetworkTransform v3. (#3248)
- perf: breaking: NetworkTransformChild replaced by NetworkTransform with exposed .target. no more virtual property call. and no more redundant components which do the exact same thing. (#3249)
- breaking: NetworkTransform.clientAuthority flag obsoleted. use SyncDirection instead. automatically sets syncDirection if still used. (#3250)
- perf: NetworkBehaviour.IsDirty: check bits before time
- fix: NetworkTransform now always sends at the same sendInterval as time interpolation. as configured in NetworkManager.
- fix: NetworkLerpRigidbody now uses double time to keep precision over multiple days
- fix: NetworkRigidbody now uses double time to keep precision over multiple days
- fix: NetworkDiscovery BroadcastAddress exposed for iOS support (#3255)
- feature: manual DeltaCompression to prepare for NetworkTransform V3
- ... and lots of smaller improvements :)