-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #17 from JohannesDeml/feature/dotnet6
Feature/dotnet6
- Loading branch information
Showing
52 changed files
with
1,922 additions
and
1,720 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
File renamed without changes.
This file was deleted.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,222 @@ | ||
V1.34 [2023-03-15] | ||
- Send/SendTo/Receive/ReceiveFrom NonBlocking extensions. | ||
to encapsulate WouldBlock allocations, exceptions, etc. | ||
allows for reuse when overwriting KcpServer/Client (i.e. for relays). | ||
|
||
V1.33 [2023-03-14] | ||
- perf: KcpServer/Client RawReceive now call socket.Poll to avoid non-blocking | ||
socket's allocating a new SocketException in case they WouldBlock. | ||
fixes https://github.com/MirrorNetworking/Mirror/issues/3413 | ||
- perf: KcpServer/Client RawSend now call socket.Poll to avoid non-blocking | ||
socket's allocating a new SocketException in case they WouldBlock. | ||
fixes https://github.com/MirrorNetworking/Mirror/issues/3413 | ||
|
||
V1.32 [2023-03-12] | ||
- fix: KcpPeer RawInput now doesn't disconnect in case of random internet noise | ||
|
||
V1.31 [2023-03-05] | ||
- KcpClient: Tick/Incoming/Outgoing can now be overwritten (virtual) | ||
- breaking: KcpClient now takes KcpConfig in constructor instead of in Connect. | ||
cleaner, and prepares for KcpConfig.MTU setting. | ||
- KcpConfig now includes MTU; KcpPeer now works with KcpConfig's MTU, KcpServer/Client | ||
buffers are now created with config's MTU. | ||
|
||
V1.30 [2023-02-20] | ||
- fix: set send/recv buffer sizes directly instead of iterating to find the limit. | ||
fixes: https://github.com/MirrorNetworking/Mirror/issues/3390 | ||
- fix: server & client sockets are now always non-blocking to ensure main thread never | ||
blocks on socket.recv/send. Send() now also handles WouldBlock. | ||
- fix: socket.Receive/From directly with non-blocking sockets and handle WouldBlock, | ||
instead of socket.Poll. faster, more obvious, and fixes Poll() looping forever while | ||
socket is in error state. fixes: https://github.com/MirrorNetworking/Mirror/issues/2733 | ||
|
||
V1.29 [2023-01-28] | ||
- fix: KcpServer.CreateServerSocket now handles NotSupportedException when setting DualMode | ||
https://github.com/MirrorNetworking/Mirror/issues/3358 | ||
|
||
V1.28 [2023-01-28] | ||
- fix: KcpClient.Connect now resolves hostname before creating peer | ||
https://github.com/MirrorNetworking/Mirror/issues/3361 | ||
|
||
V1.27 [2023-01-08] | ||
- KcpClient.Connect: invoke own events directly instead of going through peer, | ||
which calls our own events anyway | ||
- fix: KcpPeer/Client/Server callbacks are readonly and assigned in constructor | ||
to ensure they are safe to use at all times. | ||
fixes https://github.com/MirrorNetworking/Mirror/issues/3337 | ||
|
||
V1.26 [2022-12-22] | ||
- KcpPeer.RawInput: fix compile error in old Unity Mono versions | ||
- fix: KcpServer sets up a new connection's OnError immediately. | ||
fixes KcpPeer throwing NullReferenceException when attempting to call OnError | ||
after authentication errors. | ||
- improved log messages | ||
|
||
V1.25 [2022-12-14] | ||
- breaking: removed where-allocation. use IL2CPP on servers instead. | ||
- breaking: KcpConfig to simplify configuration | ||
- high level cleanups | ||
|
||
V1.24 [2022-12-14] | ||
- KcpClient: fixed NullReferenceException when connection without a server. | ||
added test coverage to ensure this never happens again. | ||
|
||
V1.23 [2022-12-07] | ||
- KcpClient: rawReceiveBuffer exposed | ||
- fix: KcpServer RawSend uses connection.remoteEndPoint instead of the helper | ||
'newClientEP'. fixes clients receiving the wrong messages meant for others. | ||
https://github.com/MirrorNetworking/Mirror/issues/3296 | ||
|
||
V1.22 [2022-11-30] | ||
- high level refactor, part two. | ||
|
||
V1.21 [2022-11-24] | ||
- high level refactor, part one. | ||
- KcpPeer instead of KcpConnection, KcpClientConnection, KcpServerConnection | ||
- RawSend/Receive can now easily be overwritten in KcpClient/Server. | ||
for non-alloc, relays, etc. | ||
|
||
V1.20 [2022-11-22] | ||
- perf: KcpClient receive allocation was removed entirely. | ||
reduces Mirror benchmark client sided allocations from 4.9 KB / 1.7 KB (non-alloc) to 0B. | ||
- fix: KcpConnection.Disconnect does not check socket.Connected anymore. | ||
UDP sockets don't have a connection. | ||
fixes Disconnects not being sent to clients in netcore. | ||
- KcpConnection.SendReliable: added OnError instead of logs | ||
|
||
V1.19 [2022-05-12] | ||
- feature: OnError ErrorCodes | ||
|
||
V1.18 [2022-05-08] | ||
- feature: OnError to allow higher level to show popups etc. | ||
- feature: KcpServer.GetClientAddress is now GetClientEndPoint in order to | ||
expose more details | ||
- ResolveHostname: include exception in log for easier debugging | ||
- fix: KcpClientConnection.RawReceive now logs the SocketException even if | ||
it was expected. makes debugging easier. | ||
- fix: KcpServer.TickIncoming now logs the SocketException even if it was | ||
expected. makes debugging easier. | ||
- fix: KcpClientConnection.RawReceive now calls Disconnect() if the other end | ||
has closed the connection. better than just remaining in a state with unusable | ||
sockets. | ||
|
||
V1.17 [2022-01-09] | ||
- perf: server/client MaximizeSendReceiveBuffersToOSLimit option to set send/recv | ||
buffer sizes to OS limit. avoids drops due to small buffers under heavy load. | ||
|
||
V1.16 [2022-01-06] | ||
- fix: SendUnreliable respects ArraySegment.Offset | ||
- fix: potential bug with negative length (see PR #2) | ||
- breaking: removed pause handling because it's not necessary for Mirror anymore | ||
|
||
V1.15 [2021-12-11] | ||
- feature: feature: MaxRetransmits aka dead_link now configurable | ||
- dead_link disconnect message improved to show exact retransmit count | ||
|
||
V1.14 [2021-11-30] | ||
- fix: Send() now throws an exception for messages which require > 255 fragments | ||
- fix: ReliableMaxMessageSize is now limited to messages which require <= 255 fragments | ||
|
||
V1.13 [2021-11-28] | ||
- fix: perf: uncork max message size from 144 KB to as much as we want based on | ||
receive window size. | ||
fixes https://github.com/vis2k/kcp2k/issues/22 | ||
fixes https://github.com/skywind3000/kcp/pull/291 | ||
- feature: OnData now includes channel it was received on | ||
|
||
V1.12 [2021-07-16] | ||
- Tests: don't depend on Unity anymore | ||
- fix: #26 - Kcp now catches exception if host couldn't be resolved, and calls | ||
OnDisconnected to let the user now. | ||
- fix: KcpServer.DualMode is now configurable in the constructor instead of | ||
using #if UNITY_SWITCH. makes it run on all other non dual mode platforms too. | ||
- fix: where-allocation made optional via virtuals and inheriting | ||
KcpServer/Client/Connection NonAlloc classes. fixes a bug where some platforms | ||
might not support where-allocation. | ||
|
||
V1.11 rollback [2021-06-01] | ||
- perf: Segment MemoryStream initial capacity set to MTU to avoid early runtime | ||
resizing/allocations | ||
|
||
V1.10 [2021-05-28] | ||
- feature: configurable Timeout | ||
- allocations explained with comments (C# ReceiveFrom / IPEndPoint.GetHashCode) | ||
- fix: #17 KcpConnection.ReceiveNextReliable now assigns message default so it | ||
works in .net too | ||
- fix: Segment pool is not static anymore. Each kcp instance now has it's own | ||
Pool<Segment>. fixes #18 concurrency issues | ||
|
||
V1.9 [2021-03-02] | ||
- Tick() split into TickIncoming()/TickOutgoing() to use in Mirror's new update | ||
functions. allows to minimize latency. | ||
=> original Tick() is still supported for convenience. simply processes both! | ||
|
||
V1.8 [2021-02-14] | ||
- fix: Unity IPv6 errors on Nintendo Switch | ||
- fix: KcpConnection now disconnects if data message was received without content. | ||
previously it would call OnData with an empty ArraySegment, causing all kinds of | ||
weird behaviour in Mirror/DOTSNET. Added tests too. | ||
- fix: KcpConnection.SendData: don't allow sending empty messages anymore. disconnect | ||
and log a warning to make it completely obvious. | ||
|
||
V1.7 [2021-01-13] | ||
- fix: unreliable messages reset timeout now too | ||
- perf: KcpConnection OnCheckEnabled callback changed to a simple 'paused' boolean. | ||
This is faster than invoking a Func<bool> every time and allows us to fix #8 more | ||
easily later by calling .Pause/.Unpause from OnEnable/OnDisable in MirrorTransport. | ||
- fix #8: Unpause now resets timeout to fix a bug where Mirror would pause kcp, | ||
change the scene which took >10s, then unpause and kcp would detect the lack of | ||
any messages for >10s as timeout. Added test to make sure it never happens again. | ||
- MirrorTransport: statistics logging for headless servers | ||
- Mirror Transport: Send/Receive window size increased once more from 2048 to 4096. | ||
|
||
V1.6 [2021-01-10] | ||
- Unreliable channel added! | ||
- perf: KcpHeader byte added to every kcp message to indicate | ||
Handshake/Data/Ping/Disconnect instead of scanning each message for Hello/Byte/Ping | ||
content via SegmentEquals. It's a lot cleaner, should be faster and should avoid | ||
edge cases where a message content would equal Hello/Ping/Bye sequence accidentally. | ||
- Kcp.Input: offset moved to parameters for cases where it's needed | ||
- Kcp.SetMtu from original Kcp.c | ||
|
||
V1.5 [2021-01-07] | ||
- KcpConnection.MaxSend/ReceiveRate calculation based on the article | ||
- MirrorTransport: large send/recv window size defaults to avoid high latencies caused | ||
by packets not being processed fast enough | ||
- MirrorTransport: show MaxSend/ReceiveRate in debug gui | ||
- MirrorTransport: don't Log.Info to console in headless mode if debug log is disabled | ||
|
||
V1.4 [2020-11-27] | ||
- fix: OnCheckEnabled added. KcpConnection message processing while loop can now | ||
be interrupted immediately. fixes Mirror Transport scene changes which need to stop | ||
processing any messages immediately after a scene message) | ||
- perf: Mirror KcpTransport: FastResend enabled by default. turbo mode according to: | ||
https://github.com/skywind3000/kcp/blob/master/README.en.md#protocol-configuration | ||
- perf: Mirror KcpTransport: CongestionControl disabled by default (turbo mode) | ||
|
||
V1.3 [2020-11-17] | ||
- Log.Info/Warning/Error so logging doesn't depend on UnityEngine anymore | ||
- fix: Server.Tick catches SocketException which happens if Android client is killed | ||
- MirrorTransport: debugLog option added that can be checked in Unity Inspector | ||
- Utils.Clamp so Kcp.cs doesn't depend on UnityEngine | ||
- Utils.SegmentsEqual: use Linq SequenceEqual so it doesn't depend on UnityEngine | ||
=> kcp2k can now be used in any C# project even without Unity | ||
|
||
V1.2 [2020-11-10] | ||
- more tests added | ||
- fix: raw receive buffers are now all of MTU size | ||
- fix: raw receive detects error where buffer was too small for msgLength and | ||
result in excess data being dropped silently | ||
- KcpConnection.MaxMessageSize added for use in high level | ||
- KcpConnection.MaxMessageSize increased from 1200 bytes to to maximum allowed | ||
message size of 145KB for kcp (based on mtu, overhead, wnd_rcv) | ||
|
||
V1.1 [2020-10-30] | ||
- high level cleanup, fixes, improvements | ||
|
||
V1.0 [2020-10-22] | ||
- Kcp.cs now mirrors original Kcp.c behaviour | ||
(this fixes dozens of bugs) | ||
|
||
V0.1 | ||
- initial kcp-csharp based version |
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 @@ | ||
// removed 2022-11-23 |
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 @@ | ||
// removed 2022-11-22 |
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 @@ | ||
// removed 2022-11-22 |
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 @@ | ||
// removed 2022-11-23 |
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 @@ | ||
// removed 2022-12-13 |
Oops, something went wrong.