A C++ library for creating secure client/server network protocols over UDP
C++ C Other
Latest commit 4344516 Mar 29, 2017 @gafferongames gafferongames committed on GitHub Merge pull request #44 from Vavius/endianness
Better endianness detection
Permalink
Failed to load latest commit information.
docker move tlsf back into its own directory so coverity doesn't get confused Jan 5, 2017
rapidjson getting close to removing libucl Jun 29, 2016
tests remove the client and server encryption keys from the challenge token… Jan 24, 2017
tlsf move tlsf back into its own directory so coverity doesn't get confused Jan 5, 2017
windows updated would be nice Oct 21, 2016
.gitignore accidental add of file Feb 10, 2017
.sublime add file Nov 16, 2016
.travis.yml coverity scan in coverity_scan branch only Jan 4, 2017
BUILDING.md Update BUILDING.md Jan 5, 2017
README.md Update README.md Mar 23, 2017
RESEARCH.md added more travis notes for multi-os Jul 28, 2016
ROADMAP.md Update ROADMAP.md Dec 26, 2016
TODO updated notes Jan 5, 2017
WOULD BE NICE merge Feb 10, 2017
doxygen.config remove moxygen api.md Jan 4, 2017
premake5.lua move tlsf back into its own directory so coverity doesn't get confused Jan 5, 2017
yojimbo.cpp some work on doxygen comments Dec 3, 2016
yojimbo.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_address.cpp added some notes for cleaning up address endianness. it's inconsistent Jan 17, 2017
yojimbo_address.h typo pass over documentation comments Jan 4, 2017
yojimbo_allocator.cpp move tlsf back into its own directory so coverity doesn't get confused Jan 5, 2017
yojimbo_allocator.h move tlsf back into its own directory so coverity doesn't get confused Jan 5, 2017
yojimbo_bit_array.h typo pass over documentation comments Jan 4, 2017
yojimbo_bitpack.h tabs to spaces pass Jan 30, 2017
yojimbo_channel.cpp tabs to spaces pass Jan 30, 2017
yojimbo_channel.h tabs to spaces pass Jan 30, 2017
yojimbo_client.cpp remove asserts that time passed in to advance time is strictly non-de… Jan 19, 2017
yojimbo_client.h Fix missing namespace in server/client macros Jan 25, 2017
yojimbo_client_server_packets.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_common.cpp simplify stream checks to use a single check value. remove old hash_s… Dec 27, 2016
yojimbo_common.h typo pass over documentation comments Jan 4, 2017
yojimbo_config.h better endianness detection Mar 29, 2017
yojimbo_connection.cpp updated notes Dec 27, 2016
yojimbo_connection.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_encryption.cpp even more checks Jan 10, 2017
yojimbo_encryption.h remove the client and server encryption keys from the challenge token… Jan 24, 2017
yojimbo_matcher.cpp tabs to spaces pass Jan 30, 2017
yojimbo_matcher.h tabs to spaces pass Jan 30, 2017
yojimbo_message.h typo pass over documentation comments Jan 4, 2017
yojimbo_network.cpp fix memory leak when client connection request is denied Nov 10, 2016
yojimbo_network.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_network_simulator.cpp remove asserts that time passed in to advance time is strictly non-de… Jan 19, 2017
yojimbo_network_simulator.h typo pass over documentation comments Jan 4, 2017
yojimbo_packet.cpp tabs to spaces pass Jan 30, 2017
yojimbo_packet.h tabs to spaces pass Jan 30, 2017
yojimbo_packet_processor.cpp upgraded protocol id to 64 bits Dec 27, 2016
yojimbo_packet_processor.h typo pass over documentation comments Jan 4, 2017
yojimbo_platform.cpp make sure time platform_time value is never negative Jan 19, 2017
yojimbo_platform.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_queue.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_replay_protection.h add doxygen file directive to each file in the project. this lets me … Jan 4, 2017
yojimbo_sequence_buffer.h fixed potential exploit where server CPU could be significantly hitch… Mar 22, 2017
yojimbo_serialize.h tabs to spaces pass Jan 30, 2017
yojimbo_server.cpp tabs to spaces pass Jan 30, 2017
yojimbo_server.h Fix missing namespace in server/client macros Jan 25, 2017
yojimbo_sockets.cpp security fix: don't reset sequence to 0 when connecting to next serve… Jan 18, 2017
yojimbo_sockets.h tabs to spaces pass Jan 30, 2017
yojimbo_stream.h tabs to spaces pass Jan 30, 2017
yojimbo_tokens.cpp remove the client and server encryption keys from the challenge token… Jan 24, 2017
yojimbo_tokens.h remove the client and server encryption keys from the challenge token… Jan 24, 2017
yojimbo_transport.cpp fix bug when network simulator is not allocated in transport reset Feb 10, 2017
yojimbo_transport.h tabs to spaces pass Jan 30, 2017

README.md

Travis Build Status Coverity Scan Build Status

libyojimbo

libyojimbo is a new, easy-to-use library for creating secure client/server network protocols over UDP.

It is designed around the networking requirements of competitive realtime multiplayer games such as first person shooters and action games. As such it provides the absolute fastest, most time critical networking layer over UDP, with a client/server architecture supporting up to 64 players per-dedicated server instance.

Status

libyojimbo is currently in pre-release for early feedback. Right now it provides support for: cryptographically secure authentication, client/server connection management, encryption for packets sent over UDP, reliable-ordered messages and data blocks, plus a serialization framework for extending the protocol with custom messages and packet types.

Work over the past few months has been focused on documenting and finalizing the API. This work is nearly complete and a new release is imminent. After the documentation push, new features coming soon include packet fragmentation and reassembly and extending the matcher to support dynamically registered server instances.

For more details please refer to the roadmap.

Author

The author of this library is Glenn Fiedler, a recognized expert in the field of game network programming with over 15 years experience in the game industry.

Glenn is currently writing an article series about the development of this library called Building a Game Network Protocol.

You can support Glenn's work writing articles and open source code via Patreon.

Sponsors

libyojimbo is generously sponsored by:

And by individual supporters on Patreon. Thank you. You make this possible!

License

BSD 3-Clause license.