Releases: needle-mirror/com.unity.netcode
Releases · needle-mirror/com.unity.netcode
1.0.10
[1.0.10] - 2023-05-23
Added
- What's New and Upgrade Guide section in the docs.
- New NetworkRequestListenResult cleanup component, that can be used to track the result of a listen request.
Changed
- documentation index page with up-to-date info and links.
- Removed forcing local client/server to alway use the loopback address to connect.
- It is now possible to listen to the NetworkEndPoint.Any also for IPC connection.
- The NetworkStreamDriver.GetRemoteAddress always return a consistent address for the connection when the NetworkDriver is configured to use the Unity Relay. Before, an invalid address was returned after the connection has been established, that was incorrect.
- Exposed all the internal state of the NetworkTimeSystem as public API
Fixed
- exceptions when NetworkRequestListen and/or. NetworkRequestConnect are handled and proper handling of multiple (erroneous) requests presents.
- A problem with InterpolatedTick, going back and not recovering correctly in presence of large application, either the server or the client, stalls (i.e after loading).
1.0.8
[1.0.8] - 2023-04-17
Changed
- Reduced the amount of memory allocated by allocating based on the maximum number of worker threads the running platform requires rather than defaulting to using a theoretical upper-bound of 128 worker threads.
- Removed the additional entity created for each predicted ghost prefab, that was necessary to support predicted spawning. This has the addition benefit to cut almost in half (in case all ghost prefabs support all modes) the number of required archetypes.
Fixed
- An issue with pre-spawned ghost not working correctly because sub-scene hash is calculated differently for client and server
- an issue when sub-scene are opened for live-conversion and baking, causing spawned ghosts to contains invalid blob asset references (i.e colliders), introducing potential crashes and other problems (i.e missing collision and mis-prediction)
- An issue with baking, not using the correct NetCodeClientTarget (either client or client/server) when baking a sub-scene for a client standalone build.
- An issue with the Entities/Build project settings UI that was not updating the ClientTarget to use is the ProjectSettings window was not closed, or another settings "tab" was selected.
- An issue with HasServerWorld reporting the presence of a server world even though no server was created.if it's not needed.
- A sporadic InvalidOperationException: GetSingleton<Unity.NetCode.LowLevel.SnapshotDataLookupCache>() thrown when retrieving the Unity.NetCode.LowLevel.SnapshotDataLookupCache.
- GhostCollectionSystem InvalidOperationException thrown when Ghost prefab validation fails, trying accessing invalidated DynamicBuffer.
- An issue in the GhostChunkSerializer, that was overwriting the snapshot data with some enable bits masks.
- An issue in the GhostUpdateSystem, that was reading and applying the wrong enable bits.
- An issue when restoring enable bits state from the predicted ghost history buffer.
- Fixed a "System Creation Order" bug causing components with
[GhostField]
fields (or the[GhostEnableBit]
attribute) to silently default to theDontSerializeVariant
, especially in cases where Ghost Prefabs are created at runtime (viaGhostPrefabCreation.ConvertToGhostPrefab
).- "Ghost Registration" and "Default Variant Registration" Systems now use
[CreateBefore(typeof(DefaultVariantSystemGroup))]
, so that user-code can add[CreateAfter(typeof(DefaultVariantSystemGroup))]
when accessingGhostComponentSerializerCollectionData
data. - We now also guard all of these calls, giving explicit (fatal) errors if used improperly.
- "Ghost Registration" and "Default Variant Registration" Systems now use
- An issue in
GhostDistancePartitioningSystem
, which caused Netcode to add a shared component ECB entry for every single ghost containing aLocalTransform
, every single frame, whenGhostDistanceImportance
was enabled in a users project.
Deprecated
- Now that the
GhostAuthoringInspectionComponent
shows all replicated components, you shouldn't have to opt-into prefab overrides. Thus, deprecated theSupportsPrefabOverrides
attribute.
[1.0.0-pre.66] - 2023-03-21
Added
- Validate and sanitise connect and listen addresses when using IPCNetworkInterface. That was causing some nasty crash in the Transport without users understanding the actual problem.
Changed
- The following components have been renamed:
NetworkSnapshotAckComponent: NetworkSnapshotAck,
IncomingSnapshotDataStreamBufferComponent: IncomingSnapshotDataStreamBuffer,
IncomingRpcDataStreamBufferComponent: IncomingRpcDataStreamBuffer,
OutgoingRpcDataStreamBufferComponent: OutgoingRpcDataStreamBuffer,
IncomingCommandDataStreamBufferComponent: IncomingCommandDataStreamBuffer,
OutgoingCommandDataStreamBufferComponent: OutgoingCommandDataStreamBuffer,
NetworkIdComponent: NetworkId,
CommandTargetComponent: CommandTarget,
GhostComponent: GhostInstance,
GhostChildEntityComponent: GhostChildEntity,
GhostOwnerComponent: GhostOwner,
PredictedGhostComponent: PredictedGhost,
GhostTypeComponent: GhostType,
SharedGhostTypeComponent: GhostTypePartition,
GhostCleanupComponent: GhostCleanup,
GhostPrefabMetaDataComponent: GhostPrefabMetaData,
PredictedGhostSpawnRequestComponent: PredictedGhostSpawnRequest,
PendingSpawnPlaceholderComponent: PendingSpawnPlaceholder,
ReceiveRpcCommandRequestComponent: ReceiveRpcCommandRequest,
SendRpcCommandRequestComponent: SendRpcCommandRequest,
MetricsMonitorComponent: MetricsMonitor,
Removed
- internal ListenAsync/ConnectAsync methods (no visible API changes for users)
Fixed
- a very unfrequent exception thrown in presence of a ghost with a replicated component that does not present any prediction errors names (i.e an Entity reference).
- source generator crash when logging missing assembly dependency.
- source generator requiring Unity.Transport package dependency for generating serialization code.
- Snapshot history buffer not restore correctly, causing entities component to be stomped with random data.
- Fixed an issue when ClientServerBootstrap.AutoConnectPort is 0 indicating autoconnecting should be disabled and you will connect manually via the driver connect API, but the playmode tools ip/port fields would still triggering (so you get two connections set up and errors). We also now prevent attempts to make a connection while one is already established.
- an issue with source generator, validating incorrectly custom templates that uses overrides.
- removed warning for old temp allocation when converting sub-scene with pre-spawned ghosts.
- Forced all
ICommandData
'sInternalBufferCapacity
to be zero, because we were constantly wasting hundreds of bytes per entity to store data that we know for certain will not fit into the internal capacity (as the dynamic buffer required length is hardcoded to 64, for netcode input buffers). - Fixed potential crash in players when send queue is full
- Fixed exceptions when trying to use invalid interpolation ticks (could happen during snapshot updates or in predicted spawning system on disconnection)
1.0.0-pre.65
[1.0.0-pre.65] - 2023-03-21
Added
- validate and sanitise connect and listen addresses when using IPCNetworkInterface. That was causing some nasty crash in the Transport without users understanding the actual problem.
Changed
- the following components has been renamed: | Original Name | New Name | | ---------------| ---------------| |NetworkSnapshotAckComponent| NetworkSnapshotAck | |IncomingSnapshotDataStreamBufferComponent| IncomingSnapshotDataStreamBuffer | |IncomingRpcDataStreamBufferComponent| IncomingRpcDataStreamBuffer | |OutgoingRpcDataStreamBufferComponent| OutgoingRpcDataStreamBuffer | |IncomingCommandDataStreamBufferComponent| IncomingCommandDataStreamBuffer | |OutgoingCommandDataStreamBufferComponent|OutgoingCommandDataStreamBuffer| |NetworkIdComponent|NetworkId| |CommandTargetComponent|CommandTarget| |GhostComponent|GhostInstance| |GhostChildEntityComponent|GhostChildEntity| |GhostOwnerComponent|GhostOwner| |PredictedGhostComponent|PredictedGhost| |GhostTypeComponent|GhostType| |SharedGhostTypeComponent|GhostTypePartition| |GhostCleanupComponent|GhostCleanup| |GhostPrefabMetaDataComponent|GhostPrefabMetaData| |PredictedGhostSpawnRequestComponent|PredictedGhostSpawnRequest| |PendingSpawnPlaceholderComponent|PendingSpawnPlaceholder| |ReceiveRpcCommandRequestComponent|ReceiveRpcCommandRequest| |SendRpcCommandRequestComponent|SendRpcCommandRequest| |MetricsMonitorComponent|MetricsMonitor|
Removed
- internal ListenAsync/ConnectAsync methods (no visible API changes for the users)
Fixed
- a very unfrequent exception thrown in presence of a ghost with a replicated component that does not present any prediction errors names (i.e an Entity reference).
- source generator crash when logging missing assembly dependency.
- source generator requiring Unity.Transport package dependency for generating serialization code.
- Snapshot history buffer not restore correctly, causing entities component to be stomped with random data.
- Fixed an issue when ClientServerBootstrap.AutoConnectPort is 0 indicating autoconnecting should be disabled and you will connect manually via the driver connect API, but the playmode tools ip/port fields would still triggering (so you get two connections set up and errors). We also now prevent attempts to make a connection while one is already established.
- an issue with source generator, validating incorrectly custom templates that uses overrides.
- removed warning for old temp allocation when converting sub-scene with pre-spawned ghosts.
- Forced all
ICommandData
'sInternalBufferCapacity
to be zero, because we were constantly wasting hundreds of bytes per entity to store data that we know for certain will not fit into the internal capacity (as the dynamic buffer required length is hardcoded to 64, for netcode input buffers). - Fixed potential crash in players when send queue is full
- Fixed exceptions when trying to use invalid interpolation ticks (could happen during snapshot updates or in predicted spawning system on disconnection)
1.0.0-pre.47
[1.0.0-pre.47] - 2023-02-28
Fixed
- Snapshot history buffer not restore correctly, causing entities component to be stomped with random data.
1.0.0-pre.44
[1.0.0-pre.44] - 2023-02-13
Added
- Validation checks to the
GhostDistanceData
TileSize
to prevent invalid tile assignment or DivideByZeroException. - Added a HelpURL (linking to docs) for
DisableAutomaticPrespawnSectionReportingAuthoring
,GhostAuthoringComponent
,GhostAuthoringInspectionComponent
,DefaultSmoothingActionUserParamsAuthoring
,GhostPresentationGameObjectAuthoring
,NetCodeDebugConfigAuthoring
,GhostAnimationController
,GhostPresentationGameObjectEntityOwner
, andNetCodePhysicsConfig
. - New GetLocalEndPoint API to NetworkStreamDriver
Changed
- Make EnablePacketLogging component public to allow for per connection debug information.
- Updated
com.unity.transport
dependency to version 2.0.0-pre.6.
Fixed
- An issue with the
NetworkEmulator
in the editor when enabling domain reload (while switching play-mode) that was causing the game to forcibly immediately exit the the play state. - An issue with pre-spawned ghost baking when the baked entity has not LocalTransform (position/rotation for transform v1) component.
- "Ghost Distance Importance Scaling" is now working again. Ensure you read the updated documentation.
- Missing field write in
NetworkStreamListenSystem.OnCreate
, fixing Relay servers. - Code-Generated Burst-compiled Serializer methods will now only compile inside worlds with
WorldFlag.GameClient
andWorldFlag.GameServer
WorldFlags. This improves exit play-mode speeds (when Domain Reload is enabled), baking (in all cases), and recompilation speeds. - Fixed an issue where multiple ghost types with the same archetype but difference data could sometime trigger errors about ghosts changing type.
- Fix a mistake where the relay sample will create a client driver rather than a server driver
- Fix logic for relay set up on the client. Making sure when calling DefaultDriverConstructor.RegisterClientDriver with relay settings that we skip this unless, requested playtype is client or clientandserver (if no server is found), the simulator is enabled, or on a client only build.
- Fixed
ArgumentException: ArchetypeChunk.GetDynamicComponentDataArrayReinterpret<System.Byte> cannot be called on zero-sized IComponentData
inGhostPredictionHistorySystem.PredictionBackupJob
. Added comprehensive test coverage for theGhostPredictionHistorySystem
(via adding a predicted ghost version of theGhostSerializationTestsForEnableableBits
tests). - Fixed serialization of components on child entities in the case where
SentForChildEntities = true
. This fix may introduce a small performance regression in baking and netcode world initialization. Contact us with all performance related issues. GhostUpdateSystem
now supports Change Filtering, so components on the client will now only be marked as changed when they actually are changed. We strongly recommend implementing change filtering when reading components containing[GhostField]
s and[GhostEnabledBit]
s on the client.- Fixed input component codegen issue when the type is nested in a parent class
- Exposed NetworkTick value to Entity Inspector
1.0.0-pre.15
[1.0.0-pre.15] - 2022-11-16
Added
- A "Client & Server Bounding Boxes" debug drawer has been added to the package (at
Packages\com.unity.netcode\Editor\Drawers\BoundingBoxDebugGhostDrawerSystem.cs
), allowing you to view the absolute positions of where the client thinks a Ghost is, vs where it actually is on the server. This drawer can also be used to visualize relevancy logic (as you can see widgets for server ghosts that are "not relevant" for your client). Enable & disable it via theMultiplayer PlayMode Tools Window
. - FRONTEND_PLAYER_BUILD scripting define added to the NetCodeClientSetting project setting.
- new GhostSpawnBufferInspectorHelper and GhostSpawnBufferComponentInspector structs, that permit to read from the ghost spawn buffer any type of component. They can be used in spawn classification systems to help resolving predicted spawning requests.
- GhostTypeComponent explicit conversion to Hash128.
- Templates for serialising
double
type. - A
TransformDefaultVariantSystem
that optionally setup the default variant to use forLocalTransform
, (Rotation
,Position
for V1) if a user defined default is not provided. - A
PhysicsDefaultVariantSystem
that optionally setup the default variant to use forPhysicVelocity
if a user defined default is not provided.
Changed
- Updated com.unity.transport dependency to 2.0.0-exp.4
- SharedGhostTypeComponent is also added to the client ghost prefab to split ghosts in different chunks.
- GhostTypeComponent equals/match the prefab guid.
- Removed
CodeGenTypeMetaData
, and made internal changes to howVariantType
structs are generated. We also renamedVariantType
toComponentTypeSerializationStrategies
to better reflect their purpose, and to better distinguish them from the concept of "Variants". - Support for replicating "enable bits" on
IEnableableComponent
s (i.e. "enableable components") via new attributeGhostEnabledBitAttribute
([GhostEnabledBit]
), which can be added to the component struct.
Note: If this attribute is not added, your enabled bits will not replicate (even on components marked with[GhostField]
s).
This is a breaking change. Ensure all your "enableable components" with "ghost fields" on them now also have[GhostEnabledBit]
on the struct declaration. - All
DefaultVariantSystemBase
are all grouped into theDefaultVariantSystemGroup
. - It is not necessary anymore to define a custom
DefaultGhostVariant
system if aLocalTransform
(Rotation
orPosition
for V1) orPhysicsVelocity
variants are added to project (since a default selection is already provided by the package). - Updated com.unity.transport dependency to 2.0.0-pre.2
Removed
- Removing dependencies on
com.unity.jobs
package.
Fixed
- Error in source generator when input buffer type was in default namespace
- Always pass SystemState by ref to avoid UnsafeLists being reallocated in a copy but not the original.
- Use correct datatype for prespawned count in analytics.
- Use EditorAnalytics to verify whether it is enabled.
- exception thrown by the hierarchy window if a scene entity does not have a SubScene component.
- Issue with the GhostComponentSerializerRegistrationSystem and the ghost metadata registration system trying accessing the GhostComponentSerializerCollectionData before it is created.
- A crash in the GhostUpdateSystem, GhostPredictionHistorySystem and others, when different ghost types (prefab) share/have the same archetype.
- A NetCodeSample project issue that was causing screen flickering and entities rendered multiple times when demos were launched from the Frontend scene.
- an issue in the GhostSendSystem that prevent the DataStream to be aborted when an exception is throw while serialising the entities.
- InvalidOperationException in the
GhostAuthoringInspectionComponent
when reverting a Variant back to the default. - UI layout issues with the
GhostAuthoringInspectionComponent
. - Hashing issue with
GhostAuthoringInspectionComponent.ComponentOverrides
during baking, where out-of-date hashes would still be baked into the BlobAsset. You now get an error, pointing you to the offending (i.e. out-of-date) Ghost prefab. - quaternion cannot be added as field in ICommandData and/or IInputComponentData. A new region has been added to the code-generation templates for handling similar other cases.
- Fixed hash generation when using
DontSerializeVariant
(orClientOnlyVariant
) onDefaultVariantSystemBase.Rule
. They now use the constant hashes (DontSerializeHash
andClientOnlyHash
). - NetDbg will now correctly show long namespaces in the "Prediction Errors" section (also: improved readability).
- Removed CSS warning in package.
- A problem with baking and additional ghost entities that was removing
LocalTransform
,WorldTransform
andLocalToWorld
matrix. - Mismatched ClientServerTickRate.SimulationTickRate and PredictedFixedStepSimulationSystemGroup.RateManager.Timestep will throw an error and will set the values to match each other.
Upgrade Guide
NetCodeClientTarget
moved from namespaceAuthoring.Hybrid
toUnity.NetCode.Hybrid
VariantType
has been renamed toSerializationStrategy
, in an attempt to disambiguate the roles of “Variants” vs “Serialization Strategies”.ComponentTypeSerializationStrategy
- Denotes the rules used to serialize a specific Component, on a specific GhostType.- “Variant” (via
GhostComponentVariation
) - The name for a custom struct modifying the serialization rules for a singleComponentType
.
- Defining
DefaultVariantSystemBase
rules has changed. You now must pass in aDefaultVariantSystemBase.Rule
rather than theSystem.Type
of the VariantType. VariantHash
es for ghost variants may have changed. Make sure that there are no errors when baking all GhostTypes (in subscenes and prefabs), and use theGhostAuthoringInspectionComponent
to debug and validate that the “default rules” (for yourComponentTypes
) are correct. Note that GhostFields on components on child entities are no longer replicated (i.e. serialized) by default.- TRANSFORMS_V2 will break all Variant modifications made to (now legacy)
Translation
andRotation
Components. You'll need to either:- a) reimplement these custom Variants yourself (targeting
LocalTransform
) or - b) use one of the new built-in
LocalTransform
Variants provided. - Note that currently, these invalid "Component Overrides" on
GhostAuthoringInspectionComponents
are not automatically updated for you. They are simply force-deleted (with an associated error message, which should provide some useful context).
- a) reimplement these custom Variants yourself (targeting
1.0.0-exp.13
[1.0.0-exp.13] - 2022-10-19
Fixed
- quaternion cannot be added as field in ICommandData and/or IInputComponentData. A new region has been added to the code-generation templates for handling similar other cases.
- Removed the deprecated NativeList to NativeArray implicit cast and use NativeList.AsArray instead.
- fixed a NotImplementedException thrown in standalone player client build.
1.0.0-exp.8
[1.0.0-exp.8] - 2022-09-21
Added
- Added a new unified
NetCodePhysicsConfig
to configure in one place all the netcode physics settings. LagCompensationConfig and PredictedPhysicsConfig are generated from these settings at conversion time. - Predicted ghost physics now use multiple physics world: A predicted physics wold simulated the ghost physics and a client-only physics world can be used for effect. For more information please refer to the predicted physics documentation.
- When there is a protocol version mismatch error when connecting, the versions and hashes used for the protocol are dumped to the log so it's easier to see why the versions don't match
- added some sanity check to prevent updating invalid ghosts
- Added a new method,
GhostPrefabCreation.ConvertToGhostPrefab
which can be used to create ghost prefabs from code without having an asset for them. - Added a support for creating multiple network drivers. It is now possible to have a server that listen to the same port using different network interfaces (ex: IPC, Socket, WebSocket at the same time).
- Hybrid assemblies will not be included in DOTS Runtime builds.
- code generation documentation
- RegisterPredictedPhysicsRuntimeSystemReadWrite and RegisterPredictedPhysicsRuntimeSystemReadOnly extension methods, for tracking dependencies when using predicted networked physics systems.
- Support for runtime editing the number of ThinClients.
- Added: A new NetworkTime component that contains all the time and tick information for the client/server simulation. Please look at the upgrade guide for more information on how to update your project.
- Support for enabledbits.
- An input interface, IInputData, has been added which can be used to automatically handle input data as networked command data. The input is automatically copied into the command buffer and retrieved from it as appropriate given the current tick. Also added an InputEvent type which can be used inside such an input component to reliably synchronize single event type things.
- Added support for running the prediction loop in batches by setting
ClientTickRate.MaxPredictionStepBatchSizeRepeatedTick
andClientTickRate.MaxPredictionStepBatchSizeFirstTimeTick
. The batches will be broken on input changes unless the input data that changes is marked with[BatchPredict]
. - Some optimisation to reduce the number of predicted tick and interpolation frames when using InProc client/server and IPC connection.
- Added a
ConnectionState
system state component which can be added to connection to track state changes, new connections and disconnects. - Added a
NetworkStreamRequestConnect
component which can be added to a new entity to create a new connection sintead of callingConnect
. - Added
IsClient
,IsServer
andIsThinClient
helper methods toWorld
andWorldUnmanaged
. - Dependency on Unity.Logging package.
- Ghosts are now marked-up as Ghosts in the DOTS Hierarchy (Pink = Replicated, Blue = Prefab). The built-in Unity Hierarchy has a similar markup, although limited due to API limitations.
- The GhostAuthoringComponent now uses a ghost icon.
- Update API documentation for importance scaling functions and types
- Predicted Physics API documentation
- Helper methods to DefaultDriverBuilder, these allows creation and registering IPC- and Socket drivers. On the server both are used for the editor and only socket for player build. On the client either IPC if server and client is in the same process or socket otherwise.
- A Singleton API for Ghost Metrics.
- Helper methods RegisterClientDriver and RegisterServerDriver added to DefaultDriverBuilder. These takes certificate and keys necessary to initialize a secure connection.
- Improved the
GhostAuthoringComponent
window, and movedComponentOverrides
to a new, optional component;GhostAuthoringInspectionComponent
. - Source generators now use a CancellationToken to early exit execution when cancellation is requested.
- NetworkStreamRequestListen to start listening to a new connection instead of invoking NetworkStreamDriver.Listen
- Helper methods RegisterClientDriver and RegisterServerDriver added to DefaultDriverBuilder. These takes relay server data to connect using a relay server.
- Analytics callback for ghost configuration as well as scene setup scaling.
- A default spawn classification system is will now handle client predicted spawns if the spawn isn't handled by a user system first (matches spawns of ghost types within 5 ticks of the spawn tick).
- GhostCollectionSystem optimisation when importing and processing ghost prefabs.
- A new sample that show how to backup/rollback non replicated components as part of the prediction loop.
- ChangeMaskArraySizeInBytes and SnapshotHeaderSizeInBytes utility methods
- internal extension to dynamic buffer, ElementAtRO, that let to get a readonly reference for a buffer element.
Changed
- hybrid will tick the client and server world using the player loop instead of relying on the default world updating the client and server world via the Tick systems.
- Predicted ghost physics now use custom system to update the physics simulation. The built-in system are instead used for updating the client-only simulatiom.
- The limit of 128 components with serialization is now for actively used components instead of components in the project.
- all errors are now reporting the location and is possible to go the offending source code file / class by clicking the error in the console log.
- removed unused GHOST_MASK_BATCH region from all templates
- PhysicsWorldHistory register readonly dependencies to the predicted runtime physics data when predicted physics is enabled.
- fixed crash in source generator if package cache folder contains temporary or invalid directory names.
- refactored source generators and added support for .additionalfile (2021.2+)
- Renamed
ClientServerTickRate.MaxSimulationLongStepTimeMultiplier
toClientServerTickRate.MaxSimulationStepBatchSize
NetDebugSystem.NetDebug
has been replaced by aNetDebug
singleton.GhostSimulationSystemGroup.SpawnedGhostEntityMap
has been replaced by aSpawnedGhostEntityMap
singleton.- The interpolation delay is now calculated based on the perceived average snapshot ratio perceived by client, that help compensate for packet loss and jitter.
- Update to use StreamCompressionModel rather than deprecated type NetworkCompressionModel.
- Various improvements to the
Multiplayer PlayMode Tools Window
, including; simulator "profiles" (which are representative of real-world speeds), runtime thin client creation/destruction support, live modification of simulator parameters, and a tool to simulate lag spikes via shortcut key. - The ghost relevancy map and mode has moved from the
GhostSendSystem
to aGhostRelevancy
singleton. - The
Connect
andListen
methods have moved to theNetworkStreamDriver
singleton. - The utility method
GhostPredictionSystemGroup.ShouldPredict
has been moved to thePredictedGhostComponent
. GhostCountOnServer
andGhostCountOnClient
has been moved fromGhostReceiveSystem
to a singleton APIGhostCount
- The API to register smoothing functions for prediction has moved from the
GhostPredictionSmoothingSystem
system to theGhostPredictionSmoothing
singleton. - The API to register RPCs and get RPC queues has moved from
RpcSystem
to the singletonRpcCollection
- Removed use of the obsolete AlwaysUpdateSystem attribute. The new RequireMatchingQueriesForUpdate attribute has been added where appropriate.
- Convert GhostDistancePartitioningSystem to ISystem
- GhostReceiveSystem converted to ISystem.
- Convert GhostSendSystem to ISystem. Public APIs have been moved to SingletonEntity named GhostSendSystemData
- PredictedPhysicsWorldHelper class visibility is internal.
- CommandReceiveClearSystem and CommandSendPacketSystem are not internal
- StartStreamingSceneGhosts and StopStreamingSceneGhosts to be internal RPC. If user wants to customise the prespawn scene flow, they need to add their own RPC.
- PrespawnsSceneInitialized, SubScenePrespawnBaselineResolved, PrespawnGhostBaseline,PrespawnSceneLoaded, PrespawnGhostIdRange have internal visibility.
- PrespawnSubsceneElementExtensions has internal visibility.
- LiveLinkPrespawnSectionReference are now internal. Used only in the Editor as a work around to entities conversion limitation. It should not be a public component that can be added by the user.
- Serialization code is now generated also for Component/Buffers/Commands/Rpcs that have internal visibility.
- The GhostCollectionSystem.CreatePredictedSpawnPrefab API is deprecated as clients will now automatically have predict spawned ghost prefabs set up for them. They can instantiate prefabs the normal way and don't need to call this API.
- Child entities in Ghosts now default to the
DontSerializeVariant
as serializing child ghosts is relatively expensive (due to poor 'locality of reference' of child entities in other chunks, and the random-access nature of iterating child entities). Thus,GhostComponentAttribute.SendDataForChildEntity = false
is now the default, and you'll need to set this flag to true for all types that should be sent for children. If you'd like to replicate hierarchies, we strongly encourage you to create multiple ghost prefabs, with custom, faked transform parenting logic that keeps the hierarchy flat. Explicit child hierarchies should only be used if the snapshot updates of one hierarchy must be in sync. RegisterDefaultVariants
has changed signature to now use aRule
. This forces users to be explicit about whether or not they want their user-defined defaults to apply to child entities too.- You must now opt-into "Prefab Override" customization for a specific type, via either:
a) Explicitly adding the[SupportPrefabOverride]
attribute to the component.
b) Explicitly adding a custom variant of a Component via `[GhostComponentVariat...
0.51.1-preview.21
[0.51.1] - 2022-06-27
Changed
- Package Dependencies
com.unity.entities
to version0.51.1
[0.51.0] - 2022-05-04
Changed
- Package Dependencies
com.unity.entities
to version0.51.0
- Updated transport dependency to 1.0.0.
Added
- prevent the netcode generator running if the assembly compilation that does not references netcode package.
0.51.0-preview.32
[0.51.0] - 2022-05-04
Changed
- Package Dependencies
com.unity.entities
to version0.51.0
- Updated transport dependency to 1.0.0.
[0.50.1] - 2022-03-18
Added
- Hybrid assemblies will not be included in DOTS Runtime builds.
Changed
- Changed: Tick systems (Initialization, Simulation, Presentation) are not created as part of the default client-server bootstrap for Hybrid and the Client and Server worlds are updated by the PlayerLoop instead.
Fixed
- Fixed an exception in
PhysicsWorldHistory
when enabling lag compensation. - Fixed a rare compile error when source generators found invalid data in the package cache.
- Fixed issue that prevent systems been shown in System Hierarchy window.
- Fixed an issue where RPCs could be lost in rare cases when sending too many of them.
- Fix an incorrect overflow exception when pre-spawned or predicted spawned ghost serialize a subset of the fields.