Links

Break Solutions

Sometimes logic has to be broken for the better, but it doesn't have to be a rough experience. You may find planned breaks here, and how to resolve them.

4.0.0

Planned release is between 2023/10/01 and 2024/01/01.
ReaderPool and WriterPool
GetReader, GetWriter have been renamed to be consistent with other API.
Changed to Retrieve.
Recycle has been renamed to be consistent with other API.
Changed to Store.
Observer Conditions
DistanceCondition.UpdateFrequently is missing.
Method no longer used.
ObserverCondition.Timed is missing.
Changed to GetConditionType().
MatchCondition had several fields replaced. The following fields were removed:
  • MatchConnections
  • Changed to GetMatchConnections(NetworkManager)
  • ConnectionMatch
  • Changed to GetConnectionMatches(NetworkManager)
  • MatchObject
  • Changed to GetMatchObjects(NetworkManager)
  • ObjectMatch
  • Changed to GetObjectMatches(NetworkManager)
ObserverCondition.Clone is missing.
Method no longer used. Use Awake to initialize custom conditions.
SyncTypes
SyncVar and SyncObject attribute are no longer used. Initialize your SyncTypes in Awake using syncType.Initialize.
Remove SyncVar/SyncObject attribute. If you were using values other than defaults initialize your field in Awake using yourSyncTypeVariable.Initialize().
ISyncType, SyncBase.Reset is missing.
Changed to ResetState.
SyncBase.Read(PooledReader) is missing.
Changed to Read(PooledReader, bool).
SyncVar fields must be declared as SyncVar.
Fields previously identified as SyncVars using the SyncVar attributes must now use SyncVar<Type> as the field, and must be initialized like SyncObjects.
//Example.
private SyncVar<float> _health = new();
private void MyMethod()
{
Debug.Log($"Current health is {_health.Value}");
//Set health to a new value.
_health.Value = 10f;
}
SceneUnloadEndEventArgs
UnloadedSceneHandles, UnloadedSceneNames, UnloadedScenesV2 is missing.
Changed to UnloadedScenes.
NetworkManager
GetPooledInstantiated(GameObject, ushort, bool) is missing
Changed to GetPooledInstantiated(GameObject, bool).
GetPooledInstantiated(int, bool) is missing
Changed to GetPooledInstantiated(int, ushort, bool).
GetPooledInstantiated(NetworkObject, ushort, bool) is missing
Changed to GetPooledInstantiated(NetworkObject, bool).
StorePooledInstantiated(NetworkObject, int, bool) is missing.
Changed to StorePooledInstantiated(NetworkObject, bool).
Authenticator is missing.
Use ServerManager.GetAuthenticator or ServerManager.SetAuthenticator instead.
GetInstance(bool warn = true) is missing.
Use GetInstance() or TryGetInstance(T).
PredictedObject
XYZMethod is missing.
A variety of methods within PredictedObject have been replaced by a simpler variant.
The following methods were removed:
  • GetSmoothTicks
  • GetInterpolation
  • SetInterpolation
The removed methods have been replaced with SetSpectatorSmoothingType.
Misc
NetworkAnimator.ForceSend is missing.
Method no longer used. NetworkAnimator.SendAll may be of use.
NetworkConnection.Tick is missing.
Changed to NetworkConnection.LocalTick
ServerObjects RebuildObservers method is missing.
All IEnumerable RebuildObservers methods have been replaced with IList variants.
ServerManager.Authenticator is missing.
Changed to GetAuthenticator and SetAuthenticator.
NetworkBehaviour.DirtySyncTypes is missing.
Method no longer used.
NetworkObject.ResetForObjectPool is missing.
Changed to ResetState.
NetworkObject.ClientInitialized is missing.
Changed to NetworkObject.IsClientInitialized.
Replicate and Reconcile attribute Resends is missing.
Replaced with PredictionManager.RedundancyCount.
Rollback(PreciseTick, PhysicsType, bool asOwner)
Changed to Rollback(PreciseTick, RollbackPhysicsType, bool)
ReadDictionary<TKey, TValue>()
Changed to ReadDictionaryAllocated<TKey, TValue>()
ListCache<T>, ListCaches is missing
Classes replaced with better versions under a different namespace.
The following are their replacements:
  • CollectionCaches
  • ResettableCollectionCaches
  • ObjectCaches
  • ResettableObjectCaches
RetrieveObject(int, bool) is missing.
Changed to RetrieveObject(int, ushort, bool).

3.3.0

Unscheduled break.
ObserversRpc IncludeOwner is missing.
Changed to ExcludeOwner. Remeber to flip the values.

3.1.1

Planned release is on or after 2023/01/01.
Prediction Changes
Replicate datas must now implement IReplicateData, and Reconcile datas must implement IReconcileData.
As of this release prediction methods can now have their Channels set, so you may ensure certain messages never drop. In result your replicate method signatures should now be as shown below.
private void MyReplicate(ReplicateData rd, bool asServer, Channel channel = Channel.Unreliable, bool replaying = false)
Reconcile methods must also now include a Channel parameter as shown.
private void MyReconcile(ReconcileData rd, bool asServer, Channel channel = Channel.Unreliable)
For more detailed instructions on these changes see the prediction guide.
TimeManager Fields and Events
Many prediction related events and values were moved out of the TimeManager and placed into the PredictionManager. Use PredictionManager.XYZ instead of TimeManager.XYZ.
The following events and fields were moved.
  • LastReconcileTick.
  • LastReplicateTIck.
  • IsReplaying(), IsReplaying(Scene).
  • OnPreReconcile.
  • OnPostReconcile.
  • OnPreReplicateReplay.
  • OnPostReplicateReplay.
In addition two events had their signatures changed. OnPre/PostReplicateReplay now also includes the tick being replayed.
Changed Signature OnPre/PostReplicateReplay(PhysicsScene, PhysicsScene2D).
Replaced with OnPre/PostReplicateReplay(uint, PhysicsScene, PhysicsScene2D).
Misc
Changed LoggingConfiguration is now a base class.
LoggingConfiguration can be used to create custom loggers. LevelLoggingConfiguration is now the default logger. If you were previously using a LoggingConfiguration with custom settings create new as a LevelLoggingConfiguration.
Changed Signature NetworkConnection.LoadedStartScenes.
Replaced with NetworkConnection.LoadedStartScenes().
Removed RigidbodyPauser.SetTimeManager.
Replaced with RigidbodyPauser.SetPredictionManager; now takes PredictionManager argument.
Removed NetworkBehaviour/NetworkObject.Deinitializing.
Replaced with NetworkBehaviour/NetworkObject.IsDeinitializing.
Removed NetworkObject.SceneObject.
Replaced with NetworkObject.IsSceneObject.
Removed ServerOnlyCondition.
Replaced with with OwnerOnlyCondition.
Removed TimeManager.TickPercent.
Replaced with TimeManager.GetPreciseTick or TimeManager.GetTickPercent.
Removed TimeManager.TicksToTime(bool).
Replaced with TimeManager.TicksToTime(TickType).
Removed TimeManager.OnPhysicsSimulation.
Replaced with TimeManager.OnPrePhysicsSimulation.
Removed NetworkManager.Authenticator.
Replaced with ServerManager.Get/SetAuthenticator.
Removed ServerManager.Authenticator.
Replaced with ServerManager.Get/SetAuthenticator.
Changed Signature Transport.GetServerBindAddress.
Replaced with Transport.GetServerBindAddress(IPAddressType).
Changed Signature Transport.SetServerBindAddress(string).
Replaced with Transport.SetServerBindAddress(string, IPAddressType).
Removed ListCaches.XYZCache.
Replaced with ListCaches.GetXYZCache, ListCaches.SetXYZCache.

2.0.0

Planned release is on or after 2022/06/01.
Misc
Removed NetworkBehaviour/NetworkObject.OwnerIsValid.
Replaced with NetworkBehaviour/NetworkObject.Owner.IsValid.
Removed NetworkBehaviour/NetworkObject.OwnerIsActive.
Replaced with NetworkBehaviour/NetworkObject.Owner.IsActive.
Changed Name LoadOptions.DisallowStacking.
Change references from DisallowStacking to AllowStacking and inverse value.
Changed Name Several enums are being changed from plural to singular. Those changed will be SceneScopeTypes, ServerUnloadModes, LocalConnectionStates, RemoteConnectionStates.
Remove plural (s) from each enum reference. EG: SceneScopeTypes will become SceneScopeType.
Removed TimeManager.TicksToTimeDouble.
Replaced with TimeManager.TicksToTime; now returns a double.
Changed Signature Transport.Initialize(networkManager).
Add int as a second parameter to your transport.Initialize method. Include Transport.Index within the following callback structures: ClientConnectionStateArgs, ServerConnectionStateArgs, RemoteConnectionStateArgs, ClientReceivedDataArgs, ServerReceivedDataArgs.
Removed Transport.GetChannelCount(), Transport.GetDefaultReliableChannel(), Transport.GetDefaultUnreliableChannel().
Delete call or overrides to methods. There will always only be two channel counts, 0 for reliable and 1 for unreliable.
Removed Transport.GetDefaultReliableChannel() and GetDefaultUnreliableChannel().
Delete calls or overrides to methods. Channel.Reliable should always be id 0, and Channel.Unreliable id 1.