XRhodes - Cross-platform game development / creative coding framework
XRhodes is a game development / creative coding framework delivered as a set of static libraries. It's aimed at developers who seek more control and less complicated licensing terms than popular engines offer, and is best suited at small to medium sized games.
Its aim is to provide flexible tools, rather than a complete pipeline, while abstracting most platform-specific details away.
XRhodes is written in C++, and it currently supports Windows 8+ (32 / 64 bits) and Linux (64 bits). A MacOS configuration is provided, however no longer supported.
It comes with a fair amount of documentation and with unit tests and usage examples.
- Signals and generic callbacks;
- Lighter-than-JSON-weight text-based serialization format and structured reading;
- JSON parsing and writing;
- Vector maths library;
- Low level graphics API (Current implementation is OpenGL based);
- Asset management system with support for dependencies, offline building and asynchronous loading;
- Spritesheet support;
- Signed Distance Field fonts support with UTF-8 text;
- Mouse, touch, keyboard and game controller support;
- Entity / component system;
XRhodes is made up from the following libraries:
- xr3core: low level, platform-independent utilities with no external dependencies;
- xr3json: XRhodes' JSON parsing and writing library for both event-based parsing and building a DOM-tree;
- xr3: device abstraction, file system, input, graphics, asset management, meshes, sprites, text and other higher level facilities;
- xr3scene: entity / component system;
Graphics: OpenGL3.3 capable GPU.
- Visual Studio Community 2017+ and Vcpkg
./vcpkg install --triplet=x86-windows libpng sdl2 tinyxml2 gtest
./vcpkg install --triplet=x64-windows libpng sdl2 tinyxml2 gtest
Linux (Tested under Ubuntu 18.04)
sudo apt-get install build-essential mesa-common-dev mesa-utils libpng-dev \ libsdl2-dev libtinyxml2-dev
- Xcode 11+
brew install libpng sdl2 tinyxml2
tools/ subfolder for your chosen development platform and run the
generate_projects script. Alternatively, you can run premake directly with the
premake5.lua script in the root folder.
Projects are generated in the
.projects folder in the root. Run the
script from the same tools subfolder, or build the projects manually.
Run examples and unit tests.
Creating your own projects
- Set an
XR3_PATHenvironment variable with the location of XRhodes.
- Copy and rename the
template/folder to your desired location.
- Edit the
config.luafile with your desired settings for project name, files to include in the build, and external includes location.
- Run premake with the
The XRhodes Discord channel welcomes questions and discussion. This may be a faster option than filing a bug report.
If you find XRhodes useful...
...please consider supporting its development. You can do a lot with very little:
- read CONTRIBUTORS.md on contributing to the code base;
- consider making a regular donation;
- consider making a one-off donation;
- display a logo in your product / project or website;
- tell people about XRhodes;
- premake - build configuration tool;
- SDL2 - the desktop version of XRhodes would not exist without it;
- glLoadGen - fantastic OpenGL header generator with much friendlier licensing terms than its alternatives;
- bgfx - major inspiration for the graphics API;
- stb_truetype - TTF support;
- utf8cpp - concise and easy-to-use UTF8 library;
- tinyxml2 - XML parsing;
- MurmurHash - powers xr::Hash;