librg is a lightweight library that serves as a middleware between data-transferring libraries (networking, file-streaming, etc.) and core application/game logic.
Main responsibilities of the library include:
The library was born to solve complexities of setting up and managing the flow of multi-player games and dedicated game servers.It came a long way of stripping out things that were non-essential, slowly sculpting into its current form, which you are able to see and use today.
Is this a networking library?
Can I use any networking library with it?
UDP
, and up to Websocket
/WebRTC
.The repository contains a bunch of *.h
and *.c
files, and yet you suggest it is a single-header library, how is that possible?
Does librg offer an entity system?
How do I pack data, do you provide methods for that?
protobuf
, flatbuffers
, msgpack
, etc.), or make your own implementation.I see you mention chunks, does it mean my game/app should be chunk-based?
To read detailed documentation about the library, see examples and quick start guide, please visit our documentation page.
Additionally you can check code/apps folder for actual code examples.
Here is a simple illustration that attempts to describe how the library works on a simple 2d world of 4x4 chunks.For a 3d world of bigger size everything would work in a very similar way, just in 3 dimensions.
If you've used the library before version v6.0.0
, it is recommended to read the migration guide located here.
We are testing the library for various platforms. This table provides some sort of description for compatibility.If you have tested it, and your result is different from the one in the table, please feel free to describe the issue in the issues.
Platform / Result | Windows | macOS | Linux | iOS | Android | Raspberry Pi | OpenBSD | FreeBSD | Emscripten |
---|---|---|---|---|---|---|---|---|---|
|
clang | clang | gcc, clang | gcc, clang | gcc, clang | ||||
|
msvc, mingw | gcc, clang | gcc, clang | emcc |
If you wish to contribute, add new feature, optimizations, or overall improvements, here are the instructions on how to do that:
git clone https://github.com/zpl-c/librg.git
make
to build all projects, and verify everything workscode/tests/
make test
again to checkIn case you are working from Windows, and/or are not able to use make
, you can also use built-in cmake
config file to generate a Visual Studio solution, to do that:
mkdir build
cd build
cmake ../misc -G"Visual Studio 16 2019"
(or any configuration you have)cmake --open .
(opens VS with the solution)