Releases: Unity-Technologies/com.unity.netcode.gameobjects
BitStream Bugfix & Safety
This is a minor release fixing a bug in the BitStream causing garbage bits to be sent as messages if the message stream was not byte aligned. It also adds a call to resolve this: BitStream.ZeroLastByteGarbageBits();
Send Overloads!
Options are great!
This update adds channel name and security options in all the send overloads. Security Options can be set to None and channel can be set empty or null. Both options are optional and default to None & Default Message Channel.
This means you can now once again select the channel (Yes, it was missing from the lib. for a version or two.. or three 😒), but you can now also authenticate and encrypt messages! Adding even more security to the library.
KeyExchange-Key API
This version adds a public Key API. From the CryptographyHelper, you can grab the server's shared key (as client) or a client's shared key (as server). This key is safe to be used for cryptographic purposes.
However! It is recommended to do your own key derrivation from this key to your own key to ensure cryptographic vulnerabilities won't affect the MLAPI protocol encryption and authentication.
It also fixes a bug where garbage bits from the pooled stream would be used to calculate the NetworkConfig hash making it turn out different.
Cryptography Update!
This version fixes many bugs, it also adds protocol level encryption and authentication.
Authentication will happen on the whole message buffer (even MLAPI headers), and the encryption will happen on everything except the first byte (which is just a flag containing wheter the message is encrypted and/or authenticated). Thus, everything, including header bytes like the messagetype is encrypted. This moves the security of the MLAPI to a new level. It now also supports PFX certificate. They are only required to be set by the server. Essentially what we have is a custom TLS implementation.
Happy networking!
Installer Hotfix
This is a minor bugfix release. It fixes some issues with UnityAsset importing in the installer.
Fixes & Improvements
This release adds new functionality to NetworkedVars. Negative Tickrates will not cause NetworkedVars to only sync on spawn. It also fixes a bug that caused the tickrate to previously be ignored.
It also fixes a bug causing scene switching to not function properly.
Custom types can now be sent in the conventional methods of RPC's by making the type implement the IBitWritable interface.
NetworkedVar.OnValueChanged is now invoked on the sender as well.
It also fixes a bug with the NetworkedTransform when extrapolation was in use, causing it to infinitely extrapolate if the object was not in motion.
It also adds zero argument overloads to certain convenience RPC methods that were previously missing.
Overall, this is a stability release and should not break any current code.
v2.0 Major Update
Version 2.0.0 is the biggest update yet! The release is 326 commits ahead of the previous version. v1.3.3. Here are some the changes:
- Replaced internal byte handling with Streams
- New Messaging System (See Wiki)
- Starting with Version 2.0.0. Releases will be using Semantic Versioning
- Removed SyncedVar
- Removed HLAPI Command, ClientRpc and TargetRPC (Replaced by the new Messaging System)
- Reduced MLAPI generic header size to 1 byte
- New BitStream
- New BitWriter & BitReader
- New NetworkedVar
- NetworkedDictionary
- NetworkedList
- Custom Networked Structure support with custom delta encoding
- Removed Message Names
- Updated Installer to use Coroutines
- Changed isOwner behaviour (Now does what it's called. Returns if we own the object)
- Clarified Ownership states (Objects can now be owned by the server / host or a client, nothing in between)
- Optimized & Reworked Encryption
- Removed Observer System
- Adds Custom Message Support
- Improved NetworkingManager Inspector UI
- Improved the Namespaces of classes
- Added more helper methods and properties to make the MLAPI easier to use in game code. Ex:
SpawnManager.SpawnedObjects
SpawnManager.SpawnedObjectsList
SpawnManager.GetLocalPlayerObject()
SpawnManager.GetPlayerObject(uint clientId)
NetworkingManager.singleton.ConnectedClients
NetworkingManager.singleton.ConnectedClientsList
NetworkingManager.singleton.ServerClientId
NetworkingManager.singleton.LocalClientId
NetworkedBehaviour.GetBehaviour(ushort id)
NetworkedBehaviour.GetBehaviourId()
NetworkedBehaviour.isRunning
And many more.
As always, if you have any questions or encounter any bugs. Feel free to open an issue on GitHub or join our Discord Server. Contributors are always welcome.
Installer Upgrade
This release includes minor fixes but updates the installer to add more features and make it generally more stable.
Relay Support
This version adds support for the MLAPI.Relay and fixes a minor bug where ownerId would be assigned after the NetworkStart method is invoked.
Fixes & Spawn Changes
This release includes many fixes.
It fixes issues regarding the spawn system, BitWriter, BitReader and reworks the NetworkedProximity. It also changes behavior on SyncedVarHook's. They are now invoked on Server instances.