Skip to content
Cross-platform game development / creative coding framework for the patient and awesome out there.
C++ C Lua Batchfile Shell GLSL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
external
template
tools
unittests
xr3
xr3core
xr3json
xr3scene
.editorconfig
.gitignore
CHANGES
CONTRIBUTORS.md
LICENSE
README.md
premake5.lua

README.md

XRhodes - Cross-platform game development / creative coding framework

License

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.

Main features

  • Signals and generic callbacks;
  • Tweening;
  • 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;

Structure

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;

System Requirements

Graphics: OpenGL3.3 capable GPU.

Build environment:

  • 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.

Getting started

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

  1. Set an 'XR3_PATH' environment variable with the location of XRhodes.
  2. Copy and rename the template/ folder to your desired location.
  3. Edit the config.lua file with your desired settings for project name, files to include in the build, and external includes location.
  4. Run premake with the premake5.lua script.

Happy building!

Community

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;

Thank You!

Acknowledgements

  • 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;
You can’t perform that action at this time.