See here for more details about the goals and approach of this project.
- Low level 2D rendering system by collecting vertices/indices and then uploading them in batches to the GPU through BGFX.
- Loading and drawing textures.
- Default shader that allows tinting of any textures drawn.
- Callback event-based input system.
- Bind inputs(such as character keys) to function pointers. Once the key is pressed the function is called.
- Abstract into "commands" which allows adding functions, adding multiple inputs, and assigning to "scenes" that can be enabled or disabled.
- Implementing further input abstractions by 5 categories:
- Binary (such as keys on a keyboard, or buttons on a controller)
- Bounded Range (such as the x and y joysticks on a controller)
- Bounded Magnitude (such as pressure sensitive triggers on a controller)
- Unbounded Range (such as the x and y mouse delta)
- Positional (such as the position of a mouse)
- Implemented logging system with 3 different levels(info, warn, error).
- System allows for setting your own logging function instead if the default "print to console" is not desired.
- Option to disable specific warning levels.
- CMake build system which manages pulling dependencies from git-submodules and building them automatically as required.
- Builds for all target platforms.
- Linux.
- Web(Emscripten).
- Windows.
- A basic system for loading sounds and music, as well as playing it.
- Add short descriptions above each function.
- Automated static site generator for the documentation, in the style of the Raylib Cheatsheet.
- Example games showing off common usages of the kit.
- Bindings to an embedded version of Ruby known as mruby.
- Create bindings directly to C versions of functions.
- Create comfortable API on top of the direct bindings.