Skip to content

Commit 0e8affe

Browse files
author
Unity Technologies
committed
# Change log ## [0.0.1-preview.6] - 2019-11-26 ### New features * Made it possible to scale importance based on distance to support more ghosts. * Nested entities constaining replicated data are now supported. * Entity references now supported as ghost fields. The references are weak references which will resolve to Entity.Null if the target is not guaranteed to exist. * NativeString64, enums and bools are supported as ghost fields. * `ClientServerTickRate` added where you can configure certain behavior relating to timestepping. A headless server can be configured to sleep after hitting target framerate to conserve CPU usage. * Send different data depending on if the entity is predicted or interpolated, some savings can be done in the predicted case. * Added a protocol version which must match for the connection to succeed. * Added time graphs and server view to the network debugger. * Network simulator now supports jitter. ### Changes * The authoring flow has been improved. * `GhostAuthoringComponent` now automatically detects what components an entity has after conversion runs and automatically populates them when you press the "Update component list" button. You no longer need to manually type in each component name. * Default values can be defined for certain component types, for example with Translation components you usually want to synchronize the Value field. When default handling has been defined the ghost authoring component uses that when it parses the entity component list. * `[GhostDefaultField]` attribute added. This can be added to ghost variable which are to be synchronized. The GhostAuthoringComponent detects these fields. * `[GhostDefaultComponent]` attribute added. This can be used to define default behavior for how a component should be synchronized, InterpolatedClient, PredictedClient and Server. * `GhostCollectionAuthoringComponent` added. This is where all spawned prefabs can be registered * Paths are easier in general as you can set up the root of where you want generated files placed and defaults can be specified in code. * Which components result in variable data being replicated are marked in bold in the inspector, so it's easier to see how much data will be sent per ghost. * Improved snapshot prediction handling * Uses the servers delta times now instead of the clients. * Support for dynamic timestep and fractional tick prediction. * Handles stalls and won't try to replay to far back in the rollback (64 frames is maximum) * Less boilerplate code needed to setup a predicted entity, more default handling moved to code generation * Added `GhostPredictionSystemGroup` with better calculations for the currently predicting tick on the client * Interpolation time is an offset from prediction time to make sure they do not drift. * Multiple inputs are sent together so dropped inputs have less effect on misprediction. * Thin clients added, these use fewer resources than full client simulations so it's easier to test with many clients now. * An RPC heartbeat system was added which only runs when nothing is being sent from the client to the server, preventing a disconnect timeout from happening. As soon as inputs are sent and snapshot synchronization starts, the system stops running. * RPC boilerplate code reduced, when a component inheriting`IRpcCommandRequestComponentData` is added to an entity along with `SendRpcCommandRequestComponent` it will be sent automatically. * The client/server world bootstrapping has been simplified, you can now use your own custom bootstrapping more easily and create the client/server worlds depending on which one you want at runtime. By default the world creation in the editor is controlled by the playmode tools. * `NetCodeConversionSettings` added which makes it possible to specify which type of build you want (client/server) in the subscene build settings workflow. * Detect when ackmask desyncs occur * Improved ghost code generation to make it able to regenerate code when there are compile errors. * Snapshots are now acknowleged when there is no CommandSendSystem. * Use the entities TimeData struct instead of getting time from Client/ServerSimulationSystemGroup ### Fixes * The code generation in Ghost Authoring Components now generate imports for user namespaces. * Code generation triggers an asset database refresh so the modified files are compiled. * Command inputs now correctly respects the `NetworkStreamInGame` being present before starting transmission. * Acks can now arrive with bigger interval than 64 ticks * Generated code no longer requires unsafe code to be enabled in the project. ### Upgrade guide * Unity 2019.3 is now required (beta 11 minimum) and Entities 0.2.0-preview. * The `NetCode` folder was moved to a proper package, `com.unity.netcode` which should now be used instead. * All the netcode was moved to a `Unity.NetCode` namespace. * `[NotClientServerSystem]` attribute removed, use `[UpdateInWorld(UpdateInWorld.TargetWorld.Default)]` instead, it will do the same thing. * `GhostPrefabAuthoringComponent` removed, use the new `GhostCollectionAuthoringComponent` instead for setting up ghost data. * `ClientServerSubScene` removed, it's not needed anymore. * `NetworkTimeSystem.predictTargetTick` removed, use `GhostPredictionSystemGroup.PredictingTick` instead. * The interface for RPCs has changed and they no longer require a generated collection. ## [0.0.1-preview.2] - 2019-07-17 ### New features * Added a prefab based workflow for specifying ghosts. A prefab can contain a `GhostAuthoringComponent` which is used to generate code for a ghost. A `GhostPrefabAuthoringComponent` can be used to instantiate the prefab when spawning ghosts on the client. This replaces the .ghost files, all projects need to be updated to the new ghost definitions. * Added `ConvertToClientServerEntity` which can be used instead of `ConvertToEntity` to target the client / server worlds in the conversion workflow. * Added a `ClientServerSubScene` component which can be used together with `SubScene` to trigger sub-scene streaming in the client/ server worlds. ### Changes * Changed the default behavior for systems in the default groups to be included in the client and server worlds unless they are marked with `[NotClientServerSystem]`. This makes built-in systems work in multiplayer projects. * Made standalone player use the same network simulator settings as the editor when running a development player * Made the Server Build option (UNITY_SERVER define) properly set up the right worlds for a dedicated server setup. Setting UNITY_CLIENT in the player settings define results in a client only build being made. * Debugger now shows all running servers and clients. ### Fixes * Change `World.Active` to the executing world when updating systems. * Improve time calculations between client and server. ### Upgrade guide All ghost definitions specified in .ghost files needs to be converted to prefabs. Create a prefab containing a `GhostAuthoringComponent` and authoring components for all required components. Use the `GhostAuthoringComponent` to update the component list and generate code. ## [0.0.1-preview.1] - 2019-06-05 ### New features * Added support systems for prediction and spawn prediction in the NetCode. These can be used to implement client-side prediction for networked objects. * Added some support for generating the code required for replicated objects in the NetCode. * Generalized input handling in the NetCode. * New fixed timestep code custom for multiplayer worlds. ### Changes * Split the NetCode into a separate assembly and improved the folder structure to make it easier to use it in other projects. * Split the Asteroids sample into separate assemblies for client, server and mixed so it is easier to build dedicated servers without any client-side code. * Upgraded Entities to preview 33. ### Fixes ### Upgrade guide ## [0.0.1-preview.0] - 2019-04-16 ### New features * Added a new sample asteroids game which we will be using to develop the new netcode. ### Changes * Update to Unity.Entities preview 26 ### Fixes ### Upgrade guide Unity 2019.1 is now required.
0 parents  commit 0e8affe

File tree

216 files changed

+13878
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

216 files changed

+13878
-0
lines changed

CHANGELOG.md

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Change log
2+
3+
## [0.0.1-preview.6] - 2019-11-26
4+
### New features
5+
* Made it possible to scale importance based on distance to support more ghosts.
6+
* Nested entities constaining replicated data are now supported.
7+
* Entity references now supported as ghost fields. The references are weak references which will resolve to Entity.Null if the target is not guaranteed to exist.
8+
* NativeString64, enums and bools are supported as ghost fields.
9+
* `ClientServerTickRate` added where you can configure certain behavior relating to timestepping. A headless server can be configured to sleep after hitting target framerate to conserve CPU usage.
10+
* Send different data depending on if the entity is predicted or interpolated, some savings can be done in the predicted case.
11+
* Added a protocol version which must match for the connection to succeed.
12+
* Added time graphs and server view to the network debugger.
13+
* Network simulator now supports jitter.
14+
### Changes
15+
* The authoring flow has been improved.
16+
* `GhostAuthoringComponent` now automatically detects what components an entity has after conversion runs and automatically populates them when you press the "Update component list" button. You no longer need to manually type in each component name.
17+
* Default values can be defined for certain component types, for example with Translation components you usually want to synchronize the Value field. When default handling has been defined the ghost authoring component uses that when it parses the entity component list.
18+
* `[GhostDefaultField]` attribute added. This can be added to ghost variable which are to be synchronized. The GhostAuthoringComponent detects these fields.
19+
* `[GhostDefaultComponent]` attribute added. This can be used to define default behavior for how a component should be synchronized, InterpolatedClient, PredictedClient and Server.
20+
* `GhostCollectionAuthoringComponent` added. This is where all spawned prefabs can be registered
21+
* Paths are easier in general as you can set up the root of where you want generated files placed and defaults can be specified in code.
22+
* Which components result in variable data being replicated are marked in bold in the inspector, so it's easier to see how much data will be sent per ghost.
23+
* Improved snapshot prediction handling
24+
* Uses the servers delta times now instead of the clients.
25+
* Support for dynamic timestep and fractional tick prediction.
26+
* Handles stalls and won't try to replay to far back in the rollback (64 frames is maximum)
27+
* Less boilerplate code needed to setup a predicted entity, more default handling moved to code generation
28+
* Added `GhostPredictionSystemGroup` with better calculations for the currently predicting tick on the client
29+
* Interpolation time is an offset from prediction time to make sure they do not drift.
30+
* Multiple inputs are sent together so dropped inputs have less effect on misprediction.
31+
* Thin clients added, these use fewer resources than full client simulations so it's easier to test with many clients now.
32+
* An RPC heartbeat system was added which only runs when nothing is being sent from the client to the server, preventing a disconnect timeout from happening. As soon as inputs are sent and snapshot synchronization starts, the system stops running.
33+
* RPC boilerplate code reduced, when a component inheriting`IRpcCommandRequestComponentData` is added to an entity along with `SendRpcCommandRequestComponent` it will be sent automatically.
34+
* The client/server world bootstrapping has been simplified, you can now use your own custom bootstrapping more easily and create the client/server worlds depending on which one you want at runtime. By default the world creation in the editor is controlled by the playmode tools.
35+
* `NetCodeConversionSettings` added which makes it possible to specify which type of build you want (client/server) in the subscene build settings workflow.
36+
* Detect when ackmask desyncs occur
37+
* Improved ghost code generation to make it able to regenerate code when there are compile errors.
38+
* Snapshots are now acknowleged when there is no CommandSendSystem.
39+
* Use the entities TimeData struct instead of getting time from Client/ServerSimulationSystemGroup
40+
41+
### Fixes
42+
* The code generation in Ghost Authoring Components now generate imports for user namespaces.
43+
* Code generation triggers an asset database refresh so the modified files are compiled.
44+
* Command inputs now correctly respects the `NetworkStreamInGame` being present before starting transmission.
45+
* Acks can now arrive with bigger interval than 64 ticks
46+
* Generated code no longer requires unsafe code to be enabled in the project.
47+
48+
### Upgrade guide
49+
* Unity 2019.3 is now required (beta 11 minimum) and Entities 0.2.0-preview.
50+
* The `NetCode` folder was moved to a proper package, `com.unity.netcode` which should now be used instead.
51+
* All the netcode was moved to a `Unity.NetCode` namespace.
52+
* `[NotClientServerSystem]` attribute removed, use `[UpdateInWorld(UpdateInWorld.TargetWorld.Default)]` instead, it will do the same thing.
53+
* `GhostPrefabAuthoringComponent` removed, use the new `GhostCollectionAuthoringComponent` instead for setting up ghost data.
54+
* `ClientServerSubScene` removed, it's not needed anymore.
55+
* `NetworkTimeSystem.predictTargetTick` removed, use `GhostPredictionSystemGroup.PredictingTick` instead.
56+
* The interface for RPCs has changed and they no longer require a generated collection.
57+
58+
## [0.0.1-preview.2] - 2019-07-17
59+
### New features
60+
* Added a prefab based workflow for specifying ghosts. A prefab can contain a `GhostAuthoringComponent` which is used to generate code for a ghost. A `GhostPrefabAuthoringComponent` can be used to instantiate the prefab when spawning ghosts on the client. This replaces the .ghost files, all projects need to be updated to the new ghost definitions.
61+
* Added `ConvertToClientServerEntity` which can be used instead of `ConvertToEntity` to target the client / server worlds in the conversion workflow.
62+
* Added a `ClientServerSubScene` component which can be used together with `SubScene` to trigger sub-scene streaming in the client/ server worlds.
63+
64+
### Changes
65+
* Changed the default behavior for systems in the default groups to be included in the client and server worlds unless they are marked with `[NotClientServerSystem]`. This makes built-in systems work in multiplayer projects.
66+
* Made standalone player use the same network simulator settings as the editor when running a development player
67+
* Made the Server Build option (UNITY_SERVER define) properly set up the right worlds for a dedicated server setup. Setting UNITY_CLIENT in the player settings define results in a client only build being made.
68+
* Debugger now shows all running servers and clients.
69+
70+
### Fixes
71+
* Change `World.Active` to the executing world when updating systems.
72+
* Improve time calculations between client and server.
73+
74+
### Upgrade guide
75+
All ghost definitions specified in .ghost files needs to be converted to prefabs. Create a prefab containing a `GhostAuthoringComponent` and authoring components for all required components. Use the `GhostAuthoringComponent` to update the component list and generate code.
76+
77+
## [0.0.1-preview.1] - 2019-06-05
78+
### New features
79+
* Added support systems for prediction and spawn prediction in the NetCode. These can be used to implement client-side prediction for networked objects.
80+
* Added some support for generating the code required for replicated objects in the NetCode.
81+
* Generalized input handling in the NetCode.
82+
* New fixed timestep code custom for multiplayer worlds.
83+
84+
### Changes
85+
* Split the NetCode into a separate assembly and improved the folder structure to make it easier to use it in other projects.
86+
* Split the Asteroids sample into separate assemblies for client, server and mixed so it is easier to build dedicated servers without any client-side code.
87+
* Upgraded Entities to preview 33.
88+
89+
### Fixes
90+
### Upgrade guide
91+
92+
## [0.0.1-preview.0] - 2019-04-16
93+
### New features
94+
* Added a new sample asteroids game which we will be using to develop the new netcode.
95+
96+
### Changes
97+
* Update to Unity.Entities preview 26
98+
99+
### Fixes
100+
### Upgrade guide
101+
Unity 2019.1 is now required.

CHANGELOG.md.meta

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Documentation~/cube-prefab.png

39.5 KB
Loading

Documentation~/final-scene.png

252 KB
Loading

Documentation~/ghost-collection.png

120 KB
Loading

Documentation~/ghost-config.png

66.3 KB
Loading

0 commit comments

Comments
 (0)