• Stars
    star
    266
  • Rank 154,103 (Top 4 %)
  • Language
    C#
  • License
    MIT License
  • Created about 4 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

kcp2k

C# KCP based on the original C kcp.

Works with netcore and Unity.

Developed for Mirror Networking.

Features

  • Kcp.cs based on kcp.c v1.7, line-by-line translation to C#
  • Heavy test coverage
  • Fixed WND_RCV bug from original kcp
  • Optional high level C# code for client/server connection handling
  • Optional high level Unreliable channel added

Pull requests for bug fixes & tests welcome.

Unity

kcp2k works perfectly with Unity, see the Mirror repository's KcpTransport.

Allocations

The client is allocation free. The server's SendTo/ReceiveFrom still allocate.

Previously, where-allocation for a 25x reduction in server allocations. However:

  • It only worked with Unity's old Mono version.
  • It didn't work in Unity's IL2CPP builds, which are still faster than Mono + NonAlloc
  • It didn't work in regular C# projects.
  • Overall, the extra complexity is not worth it. Use IL2CPP instead.
  • Microsoft is considering to remove the allocation.

Remarks

  • Congestion Control should be left disabled. It seems to be broken in KCP.