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 modern C++, and it currently supports Windows 8+ (32 / 64 bits), Mac OS and Linux (64 bits); support for other platforms are in the pipeline - stay tuned!
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;
- 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;
- Texture pack 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.
- Windows: Visual Studio Community 2015+
- MacOS: Xcode 4+
- Linux: GCC v5.4+ & make; get the libsdl2-dev, libpng16-16, zlib and libtinyxml2-dev libraries from your distribution provider.
Visit the 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 examples and unit tests.
Creating your own projects
- Set an 'XR3_PATH' environment variable with the location of XRhodes.
- Copy and rename the template/ folder to your desired location.
- Edit the config.lua file with your desired settings for project name, files to include in the build, and external includes location.
- Run premake with the premake5.lua script.
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;