VERSION 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. V1.19 [2022-05-12]
  2. - feature: OnError ErrorCodes
  3. V1.18 [2022-05-08]
  4. - feature: OnError to allow higher level to show popups etc.
  5. - feature: KcpServer.GetClientAddress is now GetClientEndPoint in order to
  6. expose more details
  7. - ResolveHostname: include exception in log for easier debugging
  8. - fix: KcpClientConnection.RawReceive now logs the SocketException even if
  9. it was expected. makes debugging easier.
  10. - fix: KcpServer.TickIncoming now logs the SocketException even if it was
  11. expected. makes debugging easier.
  12. - fix: KcpClientConnection.RawReceive now calls Disconnect() if the other end
  13. has closed the connection. better than just remaining in a state with unusable
  14. sockets.
  15. V1.17 [2022-01-09]
  16. - perf: server/client MaximizeSendReceiveBuffersToOSLimit option to set send/recv
  17. buffer sizes to OS limit. avoids drops due to small buffers under heavy load.
  18. V1.16 [2022-01-06]
  19. - fix: SendUnreliable respects ArraySegment.Offset
  20. - fix: potential bug with negative length (see PR #2)
  21. - breaking: removed pause handling because it's not necessary for Mirror anymore
  22. V1.15 [2021-12-11]
  23. - feature: feature: MaxRetransmits aka dead_link now configurable
  24. - dead_link disconnect message improved to show exact retransmit count
  25. V1.14 [2021-11-30]
  26. - fix: Send() now throws an exception for messages which require > 255 fragments
  27. - fix: ReliableMaxMessageSize is now limited to messages which require <= 255 fragments
  28. V1.13 [2021-11-28]
  29. - fix: perf: uncork max message size from 144 KB to as much as we want based on
  30. receive window size.
  31. fixes https://github.com/vis2k/kcp2k/issues/22
  32. fixes https://github.com/skywind3000/kcp/pull/291
  33. - feature: OnData now includes channel it was received on
  34. V1.12 [2021-07-16]
  35. - Tests: don't depend on Unity anymore
  36. - fix: #26 - Kcp now catches exception if host couldn't be resolved, and calls
  37. OnDisconnected to let the user now.
  38. - fix: KcpServer.DualMode is now configurable in the constructor instead of
  39. using #if UNITY_SWITCH. makes it run on all other non dual mode platforms too.
  40. - fix: where-allocation made optional via virtuals and inheriting
  41. KcpServer/Client/Connection NonAlloc classes. fixes a bug where some platforms
  42. might not support where-allocation.
  43. V1.11 rollback [2021-06-01]
  44. - perf: Segment MemoryStream initial capacity set to MTU to avoid early runtime
  45. resizing/allocations
  46. V1.10 [2021-05-28]
  47. - feature: configurable Timeout
  48. - allocations explained with comments (C# ReceiveFrom / IPEndPoint.GetHashCode)
  49. - fix: #17 KcpConnection.ReceiveNextReliable now assigns message default so it
  50. works in .net too
  51. - fix: Segment pool is not static anymore. Each kcp instance now has it's own
  52. Pool<Segment>. fixes #18 concurrency issues
  53. V1.9 [2021-03-02]
  54. - Tick() split into TickIncoming()/TickOutgoing() to use in Mirror's new update
  55. functions. allows to minimize latency.
  56. => original Tick() is still supported for convenience. simply processes both!
  57. V1.8 [2021-02-14]
  58. - fix: Unity IPv6 errors on Nintendo Switch
  59. - fix: KcpConnection now disconnects if data message was received without content.
  60. previously it would call OnData with an empty ArraySegment, causing all kinds of
  61. weird behaviour in Mirror/DOTSNET. Added tests too.
  62. - fix: KcpConnection.SendData: don't allow sending empty messages anymore. disconnect
  63. and log a warning to make it completely obvious.
  64. V1.7 [2021-01-13]
  65. - fix: unreliable messages reset timeout now too
  66. - perf: KcpConnection OnCheckEnabled callback changed to a simple 'paused' boolean.
  67. This is faster than invoking a Func<bool> every time and allows us to fix #8 more
  68. easily later by calling .Pause/.Unpause from OnEnable/OnDisable in MirrorTransport.
  69. - fix #8: Unpause now resets timeout to fix a bug where Mirror would pause kcp,
  70. change the scene which took >10s, then unpause and kcp would detect the lack of
  71. any messages for >10s as timeout. Added test to make sure it never happens again.
  72. - MirrorTransport: statistics logging for headless servers
  73. - Mirror Transport: Send/Receive window size increased once more from 2048 to 4096.
  74. V1.6 [2021-01-10]
  75. - Unreliable channel added!
  76. - perf: KcpHeader byte added to every kcp message to indicate
  77. Handshake/Data/Ping/Disconnect instead of scanning each message for Hello/Byte/Ping
  78. content via SegmentEquals. It's a lot cleaner, should be faster and should avoid
  79. edge cases where a message content would equal Hello/Ping/Bye sequence accidentally.
  80. - Kcp.Input: offset moved to parameters for cases where it's needed
  81. - Kcp.SetMtu from original Kcp.c
  82. V1.5 [2021-01-07]
  83. - KcpConnection.MaxSend/ReceiveRate calculation based on the article
  84. - MirrorTransport: large send/recv window size defaults to avoid high latencies caused
  85. by packets not being processed fast enough
  86. - MirrorTransport: show MaxSend/ReceiveRate in debug gui
  87. - MirrorTransport: don't Log.Info to console in headless mode if debug log is disabled
  88. V1.4 [2020-11-27]
  89. - fix: OnCheckEnabled added. KcpConnection message processing while loop can now
  90. be interrupted immediately. fixes Mirror Transport scene changes which need to stop
  91. processing any messages immediately after a scene message)
  92. - perf: Mirror KcpTransport: FastResend enabled by default. turbo mode according to:
  93. https://github.com/skywind3000/kcp/blob/master/README.en.md#protocol-configuration
  94. - perf: Mirror KcpTransport: CongestionControl disabled by default (turbo mode)
  95. V1.3 [2020-11-17]
  96. - Log.Info/Warning/Error so logging doesn't depend on UnityEngine anymore
  97. - fix: Server.Tick catches SocketException which happens if Android client is killed
  98. - MirrorTransport: debugLog option added that can be checked in Unity Inspector
  99. - Utils.Clamp so Kcp.cs doesn't depend on UnityEngine
  100. - Utils.SegmentsEqual: use Linq SequenceEqual so it doesn't depend on UnityEngine
  101. => kcp2k can now be used in any C# project even without Unity
  102. V1.2 [2020-11-10]
  103. - more tests added
  104. - fix: raw receive buffers are now all of MTU size
  105. - fix: raw receive detects error where buffer was too small for msgLength and
  106. result in excess data being dropped silently
  107. - KcpConnection.MaxMessageSize added for use in high level
  108. - KcpConnection.MaxMessageSize increased from 1200 bytes to to maximum allowed
  109. message size of 145KB for kcp (based on mtu, overhead, wnd_rcv)
  110. V1.1 [2020-10-30]
  111. - high level cleanup, fixes, improvements
  112. V1.0 [2020-10-22]
  113. - Kcp.cs now mirrors original Kcp.c behaviour
  114. (this fixes dozens of bugs)
  115. V0.1
  116. - initial kcp-csharp based version