Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## [1.1.0-exp.1] - 2023-09-18 ### Added * source generator can now be configure to enable/disable logs, report timings. It also possible to set the minimal log level (by default is now Error). * new public template specs and generator documentation * Added convenience methods for getting the clientworld / serverworld (or thin client list) added to ClientServerBootstrap * Additional analytics events. Multiplayer tools fields, prediction switching counters, tick rate configuration. * New method on the `PredictedFixedStepSimulationSystemGroup` class to initialise the rate as a multiple of a base tick rate. * `Packet Fuzz %` is now configurable via the Network Simulator. It's a security tool that should not be enabled during normal testing. It's purpose is to test against malicious MitM attacks, which aim to take down your server via triggering exceptions during packet deserialization. Thus, all deserialization code should be written with safeguards and tolerances, ensuring your logic will fail gracefully. * CopyInputToCommandBufferSystemGroup group, that contains all the system that copy IInputCommandData to the underlying ICommand buffer. This let you now target this group with the guarantee that all inputs are not copied after it run. * CopyCommandBufferToInputSystemGroup group, that contains all the system that copy ICommandData to their IInputCommandData representation. It runs first in the prediction loop and you can easily target it to do logic before or after the input are updated. * GhostSpawnClassificationSystemGroup, that is aimed to contains all your classification systems in one place. * Error messages to some missing `NetworkDriver.Begin/EndSend` locations. * defining `ENABLE_UNITY_RPC_REGISTRATION_LOGGING` will now log information about registered RPCs during netcode startup * We now automatically detect `Application.runInBackground` being set to false during multiplayer gameplay (a common error), and give advice via a suppressible error log as to why it should be enabled. * We introduced the new InputBufferData<T> buffer, that is used as underlying container for all IInputComponentData. * conditional compilation for some public interfaces in DefaultDriverBuilder to exclude the use of RegisterServer methods for WebGL build (they can't listen). It is possible to do everything manually, but the helper methods are not present anymore. * new method for creating a NetworkDriver using WebSocketNetworkInterface. * Added two new values to the `NetworkStreamDisconnectReason` enum: `AuthenticationFailure` and `ProtocolError`. The former is returned when the transport is configured to use DTLS or TLS and it fails to establish a secure session. The latter is returned for low-level unexpected transport errors (e.g. malformed packets in a TCP stream). ### Changed * relaxed public field condition for variants. When declaring a ghost component variations, the variant fields are not required to be public. This make the type pretty much unusable for any other purpose but declaring the type serialisation. * Increased the ThinClient cap on `MultiplayerPlayModePreferences.MaxNumThinClients` from 32 to 1k, to facilitate some amount of in-editor testing of high-player-counts. * NetcodeTestWorld updates the worlds in the same way the package does: first server, then all clients worlds. * When Dedicated Server package is installed, the PlayMode Type value is overridden by the active Multiplayer Role. ### Deprecated * The public `PredictedFixedStepSimulationGroup.TimeStep`. You should always use the `PredictedFixedStepSimulationGroup.ConfigureTimeStep` to setup the rate of the `PredictedFixedStepSimulationSystemGroup.`. * the IInputBufferData interface (internal for code-gen use but public) has been deprecated and will be removed in the 1.2 release. ### Fixed * incorrect code generated serialization and calculated ChangeMask bits for component and buffers when the GhostFieldAttribute.Composite flag is set to true (in some cases). * wrong check for typename in GhostComponentVariation * missing region in unquantized float template, causing errors when used for interpolated field. * improper check when the ClientServerSetting asset is saved, causing worker process not seeing the changes in the settings. * The server world was not setting the correct rate to the group, if that was not done as part of the bootstrap. * Exception thrown when the NetDbg tools is connecting to either the editor or player. * Renamed (and marginally improved) the "Multiplayer PlayMode Tools" Window to the "PlayMode Tools" Window, to disambiguate it from "[MPPM] Multiplayer Play Mode" (an Engine feature). * Attempting to access internals of Netcode for Entities (e.g. via Assembly Definition References) would cause compiler errors due to `MonoPInvokeCallbackAttribute` being ambiguous between AOT and Unity.Entities. * Packet dump logging exception when using relevancy, despawns, and packet dumps enabled. Also fixed performance overhead (as it was erroneously logging stack traces). * An issue with variant hash calculation in release build, causing ghost prefab hash being different in between development/editor and release build. * GhostUpdateSystem.RestoreFromBackup does not always invalidate/bump the chunk version for a component, but only if the chunk as changed since the last time the restore occurred. * Issue in TryGetHashElseZero, that was using the ComponentType.GetDebugName to calculate the variant hash, leading incorrect results in a release player build * A `NetworkDriver.BeginSend` error causing an infinite loop in the `RpcSystem`. * Deprecated Analytics API when using 2023.2 or newer. * compilation issue when using 2023.2, caused by an ambiguous symbol (define in both Editor and in Entities.Editor assembly) * Errant netcode systems no longer show up in the DefaultWorld: `PhysicsWorldHistory`, `SwitchPredictionSmoothingPhysicsOrderingSystem`, `SwitchPredictionSmoothingSystem`, `GhostPresentationGameObjectTransformSystem`, `GhostPresentationGameObjectSystem`, and `SetLocalPlayerGraphicsColorsSystem`. * Previous was hard to retrieve the generated buffer for a given IInputComponentData. Now is easy as doing something like InputBufferData<MyInputComponent>. * Compilation error when building for WebGL * SnapshotDataLookupCache not created in the correct order, causing custom classification system using the SnapshotBufferHelper to throw exceptions, because the cache was not initialised. * A replicated `[GhostEnabledBit]` flag component would throw an `ArgumentException` when added to a Prespawned Ghost due to `ArchetypeChunk.GetDynamicComponentDataArrayReinterpret`.
- Loading branch information