-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## [0.8.0] - 2021-03-23 ### New features * Added overloads of `PopEvent` and `PopEventForConnection` which return the pipeline used as an out parameter. ### Changes ### Fixes * Fixed some compatility issues with tiny. * Fixed a crash when sending messages slightly less than one MTU using the fragmentation pipeline. * Fixed a bug causing `NetworkDriver.RemoteEndPoint` to return an invalid value when using the default network interface. ### Upgrade guide ## [0.7.0] - 2021-02-05 ### New features * Added `DataStreamWriter.WriteRawbits` and `DataStreamWriter.ReadRawBits` for reading and writing raw bits from a data stream. ### Changes * Optimized the `NetworkCompressionModel` to find buckets in constant time. * Changed the error behavior of `DataStreamReader` to be consistent between the editor and players. ### Fixes * Fixed a crash when receiving a packet with an invalid pipeline identifier ### Upgrade guide ## [0.6.0] - 2020-11-26 ### New features * An error handling pass has been made and `Error.StatusCode` have been added to indicate more specific errors. * `Error.DisconnectReason` has been added, so when NetworkDriver.PopEvent returns a `NetworkEvent.Type.Disconnect` the reader returned contains 1 byte of data indicating the reason. ### Changes * The function signature for NetworkDriver.BeginSend has changed. It now returns a `int` value indicating if the function succeeded or not and the DataStreamWriter now instead is returned as a `out` parameter. * The function signature for INetworkInterface.Initialize has changed. It now requires you to return a `int` value indicating if the function succeeded or not. * The function signature for INetworkInterface.CreateInterfaceEndPoint has changed. It now requires you to return a `int` value indicating if the function succeeded or not, and NetworkInterfaceEndPoint is now returned as a `out` parameter. ### Fixes * Fixed a potential crash when receiving a malformated packet. * Fixed an issue where the DataStream could sometimes fail writing packet uints before the buffer was full. ### Upgrade guide * `NetworkDriver.BeginSend` now returns a `int` indicating a `Error.StatusCode`, and the `DataStreamWriter` is passed as an `out` parameter.
- Loading branch information
Unity Technologies
committed
Mar 23, 2021
1 parent
bda56ac
commit 8750010
Showing
26 changed files
with
508 additions
and
196 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Unity Transport Design Rules | ||
|
||
## All features are optional | ||
Unity transport is conceptually a thin layer on UDP adding a connection concept. All additional features on top of UDP + connection are optional, when not used they have zero performance or complexity overhead. If possible features are implemented as pipeline stages. | ||
|
||
Features that have a limited audience are implemented outside the package - either in game code or other packages. | ||
|
||
## Full control over processing time and when packets are sent/received | ||
UTP is optimized for making games. It can be used without creating any additional threads - only using the JobSystem. The layer on top has full control over when the transport schedules jobs. The layer on top also has full control over when packets are sent on the wire. There are no internal buffers delaying messages (except possibly in pipelines). | ||
|
||
There is generally no need to continuously poll for messages since incoming data needs to be read right before simulation starts, and we cannot start using new data in the middle of the simulation | ||
|
||
## Written in HPC# | ||
All code is jobified and burst compiled, there is no garbage collection. The transport does not spend any processing time outside setup on the main thread, and it allows the layer on top to not sync on the main thread. | ||
|
||
## Follows the DOTS principles, is usable in DOTS Runtime and always compatible with the latest versions of the DOTS packages | ||
There should always be a version compatible with the latest verions of the DOTS dependencies such as Unity Collections. | ||
|
||
## The protocol is well defined and documented | ||
Other implementations can communicate with games written with Unity Transport, without reverse engineering or reading the transport source code |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.