轻量级的kcp会话实现-kcpp
kcpp
真正实现了只需要包含一个头文件再随意写几行代码就可以用上kcp, 而无需烦心如何组织代码来适配kcp
- 只需包含
kcpp.h
这一个头文件即可 - 只需调用
KcpSession::Send
和KcpSession::Recv
和KcpSession::Update
即可完成UDP的链接状态管理、会话控制、 RUDP协议调度
Features
- single-header-only
- session implementation
- dynamic redundancy
- two-channel
- reliable
- unreliable
kcpp Examples
- realtime-server : A realtime dedicated game server ( FPS / MOBA ). 一个实时的专用游戏服务器.
- realtime-server-ue4-demo : A UE4 State Synchronization demo for realtime-server. 为realtime-server而写的一个UE4状态同步demo, Video Preview 视频演示
- TestKcppServer.cpp
- TestKcppClient.cpp
kcpp Usage
the main loop was supposed as:
1 | Game.Init() |
The Recv/Send/Update functions of kcpp are guaranteed to be non-blocking.
Please read TestKcppClient.cpp and TestKcppServer.cpp for some basic usage.
kcp源码注释
本项目还附了一个注释版的kcp源码 ikcp.h
和 ikcp.c
, 算是另一种的 kcp详解, 方便自己学习也为大家更快的上手, 原始代码来自: https://github.com/skywind3000/kcp , 感谢 skywind3000 带来
这么短小精悍的好项目
注 : 项目中使用 tab 缩进且设置了tab = 2 space
几乎每个段落都有注释, 且关键数据结构还带有图解, 比如 :
1 | ... |
在注释的过程中, 除了少量空格和换行以及一处有无符号比较的调整(为保证高警告级别可编译过)外 :if ((IUINT32)count >= IKCP_WND_RCV) return -2;
没有对原始代码进行任何其他改动, 最大程度地保证了代码的“原汁原味”。
QQ群
因为 KCP 官方群已经满了, 可以加群 496687140