- Upgraded to Netcode for Entities 1.0.0 prerelease version 2, see the Netcode for Entities changelog.
- Two new HelloNetcode samples have been added
- RelaySupport which shows how to use the Unity Relay service with Netcode for Entities. It's added to the Frontend sample.
- Importance which demonstrates how importance scaling works with many ghosts.
- Upgraded to Netcode for Entities 1.0.0 prerelease version, see the Netcode for Entities changelog.
- Added HelloNetcode suite of samples, these samples aim to be small, simple and show features in isolation. Later samples then re-use earlier ones so it's simpler to see exactly what's being shown.
- LagCompensation sample was moved to HelloNetcode/Intermediate/HitScanWeapon
- BootstapAndFrontend was moved to HelloNetcode/Basic/BootstrapAndFrontend and also split there into frontend (client only) and bootstrap (Client+Server) assemblies.
- Upgraded to Netcode for Entities 1.0.0-exp.8, see the Netcode for Entities changelog.
- Added a player list sample
- Upgraded to Netcode for Entities 0.50.0, see the Netcode for Entities changelog.
- Added a sample for prediction switching.
- Added a frontend sample, it is used for standalone builds and can launch all other samples in client-only or client/server mode.
- Modified asteroids to use the Hybrid Renderer package.
- Removed the transport samples.
- Upraded Unity NetCode to 0.6.0, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.6.0 see the Unity Transport changelog
- Brought back the custom 2d serialization rules for translation and rotation in asteroids.
- Upraded Unity NetCode to 0.4.0, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.4.1 see the Unity Transport changelog
- Upgraded all NetCode samples to use subscenes instead of ConvertToEntity. This means you now have to use the files in BuildSettings to make a standalone build.
- Upgraded all samples to use SystemBase and most of them to use Entities.ForEach.
- Upraded Unity NetCode to 0.3.0, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.4.0 see the Unity Transport changelog
- Added a new sample showing how to write custom network interfaces in the transport.
- Added support for switching between fixed and dynamic timestep in asteroids.
- Added a relevancy implementation to asteroids which can be used to only show ghosts within a specific radius of the player ship.
- Added a mode to asteroids which uses the new static optimization mode along with moving some calculations to the client for a massive bandwidth optimization.
- Rewrote predictive spawning of projectiles and "on spawn" handling in asteroids to be compatible with the new NetCode package.
- Upgraded Unity NetCode to 0.2.0, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.3.1 see the Unity Transport changelog
- Upgraded Unity NetCode to 0.1.0, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.3.0, see the Unity Transport changelog
- Added new sample demonstrating lag compensation.
- Upgraded Unity NetCode to 0.0.4, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.2.3, see the Unity Transport changelog
- Reduced maximum number of lines rendered in asteroids and added simple culling.
- Upgraded Unity NetCode to 0.0.3, see the Unity NetCode changelog
- Upgraded Unity Transport to 0.2.2, see the Unity Transport changelog
- Upgraded Entities to 0.3.0
- Unity Transport is a package, see the Unity Transport changelog for details.
- Unity NetCode is a package, see the Unity NetCode changelog for details.
- Added a new sample - NetCube - used in the Unite presentation about netcode.
- Removed Matchmaking, SQP and related samples.
- Added a prefab based workflow for specifying ghosts. A prefab can contain a
GhostAuthoringComponentwhich is used to generate code for a ghost. AGhostPrefabAuthoringComponentcan 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
ConvertToClientServerEntitywhich can be used instead ofConvertToEntityto target the client / server worlds in the conversion workflow. - Added a
ClientServerSubScenecomponent which can be used together withSubSceneto trigger sub-scene streaming in the client/ server worlds. - Added a new Ping-Multiplay sample based on the Ping sample
- Created to be the main sample for demonstrating Multiplay compatibility and best practices (SQP usage, IP binding, etc.)
- Contains both client and server code. Additional details in readme in
/Assets/Samples/Ping-Multiplay/.
- DedicatedServerConfig: added arguments for
-fpsand-timeout - NetworkEndPoint: Added a
TryParse()method which returns false if parsing fails- Note: The
Parse()method returns a default IP / Endpoint if parsing fails, but a method that could report failure was needed for the Multiplay sample
- Note: The
- CommandLine:
- Added a
HasArgument()method which returns true if an argument is present - Added a
PrintArgsToLog()method which is a simple way to print launch args to logs - Added a
TryUpdateVariableWithArgValue()method which updates a ref var only if an arg was found and successfully parsed
- Added a
- 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. - Deleted existing SQP code and added reference to SQP Package (now in staging)
- Removed SQP server usage from basic Ping sample
- Note: The SQP server was only needed for Multiplay compatibility, so the addition of Ping-Multiplay allowed us to remove SQP from Ping
- 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.
- Change
World.Activeto the executing world when updating systems. - Improve time calculations between client and server.
- DedicatedServerConfig: Vsync is now disabled programmatically if requesting an FPS different from the current screen refresh rate
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.
- 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.
- 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.
- Moved MatchMaking to a package and supporting code to a separate folder.
- Upgraded Entities to preview 33.
- Fixed an issue with the reliable pipeline not resending when completely idle.
- Added network pipelines to enable processing of outgoing and incomming packets. The available pipeline stages are
ReliableSequencedPipelineStagefor reliable UDP messages andSimulatorPipelineStagefor emulating network conditions such as high latency and packet loss. See the pipeline documentation for more information. - Added reading and writing of packed signed and unsigned integers to
DataStream. These new methods use huffman encoding to reduce the size of transfered data for small numbers. - Added a new sample asteroids game which we will be using to develop the new netcode.
- Update to Unity.Entities preview 26
- Enable Burst compilation for most jobs
- Made it possible to get the remote endpoint for a connection
- Replacing EndPoint parsing with custom code to avoid having a dependency on System.Net
- Change the ping sample command-line parameters for server to -port and -query_port
- For matchmaking - use an Assignment object containing the ConnectionString, the Roster, and an AssignmentError string instead of just the ConnectionString.
- Fixed an issue with building iOS on Windows
- Fixed inconsistent error handling between platforms when the network buffer is full
Unity 2019.1 is now required.
BasicNetworkDriver has been renamed to GenericNetworkDriver and a new UdpNetworkDriver helper class is also available.
System.Net EndPoints can no longer be used as addresses, use the new NetworkEndpoint struct instead.