Archive

Posts Tagged ‘KCP’

《原神》也在使用 KCP 加速游戏消息

November 8th, 2022 No comments

最近看到米哈游《原神》的客户端安装文件里附带了 KCP 的 LICENSE:

于是找米哈游的同学求证了一下,果然他们在游戏里使用 KCP 来保证游戏消息可以以较低的延迟进行传输,这里还有一篇文章分析了原神使用 KCP 的具体细节:

文章见:https://forum.ragezone.com/f861/genshin-impact-private-server-1191004/index7.html

KCP 是我之前开源的一套低延迟可靠传输协议,能够有比 TCP/QUIC 更快的端到端传输效果,适合游戏、音视频以及各类延迟敏感的应用。

欢迎大家尝试:

目前使用 KCP 的商用项目包括不限于:

  • 原神:米哈游的《原神》使用 KCP 降低游戏消息的传输耗时,提升操作的体验。
  • SpatialOS: 大型多人分布式游戏服务端引擎,BigWorld 的后继者,使用 KCP 加速数据传输。
  • 西山居:使用 KCP 进行游戏数据加速。
  • CC:网易 CC 使用 kcp 加速视频推流,有效提高流畅性
  • BOBO:网易 BOBO 使用 kcp 加速主播推流
  • UU:网易 UU 加速器使用 KCP/KCPTUN 经行远程传输加速。
  • 阿里云:阿里云的视频传输加速服务 GRTN 使用 KCP 进行音视频数据传输优化。
  • 云帆加速:使用 KCP 加速文件传输和视频推流,优化了台湾主播推流的流畅度。
  • 明日帝国:Game K17 的 《明日帝国》,使用 KCP 加速游戏消息,让全球玩家流畅联网
  • 仙灵大作战:4399 的 MOBA游戏,使用 KCP 优化游戏同步

KCP 成功的运行在多个用户规模上亿的项目上,为他们提供了更加灵敏和丝滑网络体验。

Categories: 游戏开发, 网络编程 Tags:

KCP同 UDT/ENET的性能比较

February 18th, 2016 9 comments

如果不丢包那么 KCP(https://github.com/skywind3000/kcp)和 TCP性能差不多,KCP不会有任何优势,但是网络会卡,造成卡的原因就是丢包和抖动,有同学在内网这样好的环境下没有用任何丢包模拟直接跑,跑出来的数据是差不多的,但是放到公网上,放到3G/4G网络情况下,差距就很明显了,公网在高峰期有平均接近10%的丢包,wifi/3g/4g下更糟糕,这正是造成各种网络卡顿的元凶。

感谢 asio-kcp 的作者 zhangyuan 对 KCP 与 enet, udt做过的一次横向评测,结论如下:

  • ASIO-KCP has good performace in wifi and phone network(3G, 4G).
  • Extra using 20% ~ 50% network flow for speed improvement.
  • The kcp is the first choice for realtime pvp game.
  • The lag is less than 1 second when network lag happen. 3 times better than enet when lag happen.
  • The enet is a good choice if your game allow 2 second lag.
  • UDT is a bad idea. It always sink into badly situation of more than serval seconds lag. And the recovery is not expected.
  • enet has the problem of lack of doc. And it has lots of functions that you may intrest. kcp’s doc is chinese. Good thing is the function detail which is writen in code is english. And you can use asio_kcp which is a good wrap.
  • The kcp is a simple thing. You will write more code if you want more feature.
  • UDT has a perfect doc. UDT may has more bug than others as I feeling.

具体见:横向比较这里。截取一段在网络糟糕时,asio-kcp/enet的延迟数据:

worst network lag happen:
asio: 10:51.21
291  295   269   268   231   195   249   230   225   204

enet: 10:51.21
1563   1520    1470    1482    1438    1454    1412    1637    1588    1540

我当年主要测试了 KCP和 TCP/UDT的比较,扫了一眼 libenet觉得协议实现中规中矩,缺乏很多现代传输协议的技术,所以并没有详细测试。而 asio-kcp的作者同时给出了KCP/enet/udt三者的详细比较,为更多犹豫选择使用那一套的人提供了更多指引。

Categories: 网络编程 Tags: ,
Wordpress Social Share Plugin powered by Ultimatelysocial