Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xtaci/libkcp
FEC enhanced KCP session library for iOS/Android in C++
https://github.com/xtaci/libkcp
Last synced: about 2 months ago
JSON representation
FEC enhanced KCP session library for iOS/Android in C++
- Host: GitHub
- URL: https://github.com/xtaci/libkcp
- Owner: xtaci
- License: mit
- Created: 2016-07-10T13:51:44.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2022-04-26T05:17:09.000Z (over 2 years ago)
- Last Synced: 2024-06-15T07:32:49.298Z (3 months ago)
- Language: C
- Homepage:
- Size: 337 KB
- Stars: 297
- Watchers: 36
- Forks: 117
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# ***libkcp***
[![Powered][1]][2] [![Build Status][3]][4]
[1]: https://img.shields.io/badge/KCP-Powered-blue.svg
[2]: https://github.com/skywind3000/kcp
[3]: https://travis-ci.org/xtaci/libkcp.svg?branch=master
[4]: https://travis-ci.org/xtaci/libkcp
FEC enhanced KCP client session library for iOS/Android, compatible with [kcp-go](https://github.com/xtaci/kcp-go).## ***Features***
1. Optimized for ***Online Games***.
1. Stream based interface, you can easily switch from your TCP based protocol to libkcp or dualstack.
1. [FEC(Forward Error Correction)](https://en.wikipedia.org/wiki/Forward_error_correction) Support with [Reed-Solomon Codes](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction)## ***Usage***
libkcp has been designed as a ***Frame-Driven*** library, the main loop was supposed as:
```
GameInit()
NetworkInit()
While (!isGameOver) Do // e.g: A 30FPS Game
LibKCP.Read()
LibKCP.Write()
LibKCP.Update()
Game.Logic()
Game.Render()
Wait(33ms) // clock
End
```The ```Read/Write/Update``` functions of libkcp are ***guaranteed*** to be ***non-blocking***.
Please read ```kcp_test.cpp fec_test.cpp``` for library usage.## ***Demo***
start echo server(golang)
```
$go get github.com/xtaci/kcp-go
$go run kcpserver.go
```
compile and run libkcp(Best with CLion), and watch output.## ***Caveats***
1. Packet level encryption has not been implemented yet.
## ***Troubleshooting***
1. C++11 is required for compiling.