Axle is a simple, lightweight and object-oriented game development framework based on Raylib.
Axle aims to provide all of Raylib's functionalities, acting as a wrapper with an object-oriented design. It makes installing and setting up a new project lightning fast thanks to the Axle toolchain script, and aims to provide higher-level and more advanced functionalities while staying stupid simple and decently optimized.
This project is currently in a very early stage of development. As a result, it has not been tested on any other installation than mine.
As the project progresses, I will make sure to edit the project to make it work on any OS regardless of the configuration.
That being said, if you wish to install the project anyways, here is my configuration.
OS : macOS Sequoia 15.2 arm64
Compiler : Apple clang version 16.0.0 (clang-1600.0.26.6)
IDE : Visual Studio Code 1.96.2
Doxygen : 1.13.1
Bash : 3.2.57
CMake : 3.31.3
C++ : C++17
You should be able to make Axle work on any Unix installation without much trouble, but the bash script sure is not compatible with Windows. However, if you of your favorite LLM knows the basics of batch, recreating the toolchain script or avoiding it completely shouldn't be too much trouble.
-
Clone or add the Axle repository as a submodule in the root of your project.
-
Run the build script to initialize the build system :
bash axle/axle.sh init
The script will automatically download Raylib, create a CMakeLists.txt file in your project, and add a shortcut to this script in the root of your project. Any subsequent call to this script can now be done using the following command :
./axle.sh <args>
-
Create an entry point called
main.cpp
inside of asrc
directory :// src/main.cpp #include <axle.h> int main() { // Run the basic window example Axle::Examples::basicWindow(); }
-
Build and run the project :
./axle.sh run
-
Any additional files will automatically be added to the project for compilation by the
CMakeLists.txt
file. Feel free to edit this file to change this behaviour if you wish, it won't be edited by Axle unless you run the./axle.sh clean
command. -
Run the
./axle.sh help
command for an exhaustive list of all available features.
The documentation of the project is automatically generated by Doxygen and is available in the docs
directory as an html page (index.html
). You can regenerate this documentation using the ./axle.sh docs
command.
The latest version of the documentation is also available online at https://herbemalveillante.github.io/axle/
- Unix-compatible toolchain shell script
- Window Initialization
- Basic Text Drawing
- Basic Rectangle Drawing
- Basic Color support
- Basic Vector2 support
- Keyboard Input support
- Complete port of the Raylib examples library
- Port of the main Raylib functions
- Automatic Generation of macOS apps
- Resource management for standalone executables
- Cross-platform toolchain shell script
- Example browser
- Custom Doxygen Theme
- Custom UI framework
- Touch and Gestures
- VR
- Automation and Event Management
- UI editor
- ✅ basic window
- 🔄 basic screen manager
- ⏳ 2D camera
- ⏳ 2D camera mouse zoom
- ⏳ 2D camera platformer
- ⏳ 2D camera split screen
- ⏳ 3D camera first person
- ⏳ 3D camera free
- ⏳ 3D camera mode
- ⏳ 3D camera split screen
- ⏳ 3D picking
- ⏳ Automation events
- ⏳ Custom frame control
- ⏳ Custom logging
- ⏳ Drop files
- ⏳ Input Gamepad
- ⏳ Input Gamepad info
- ⏳ Input Gestures
- ⏳ Input Keys
- ⏳ Input mouse
- ⏳ Input mouse wheel
- ⏳ Input multitouch
- ⏳ Loading thread
- ⏳ Random values
- ⏳ Scissor test
- ⏳ Smooth pixelperfect
- ⏳ Storage values
- ⏳ VR simulator
- ⏳ Window flags
- ⏳ Window letterbox
- ⏳ Window should close
- ⏳ World screen
- ⏳ basic shapes
- ⏳ bouncing ball
- ⏳ color palette
- ⏳ logo
- ⏳ rectangle scaling
- ⏳ lines bezier
- ⏳ collision area
- ⏳ following eyes
- ⏳ easings ball anim
- ⏳ easings box anim
- ⏳ easings rectangle array
- ⏳ draw ring
- ⏳ draw circle sector
- ⏳ draw rectangle rounded
- ⏳ splines drawing
- ⏳ top down lights
- ⏳ Raylib fonts
- ⏳ font spritefont
- ⏳ font filters
- ⏳ font loading
- ⏳ font sdf
- ⏳ formal text
- ⏳ input box
- ⏳ writing anim
- ⏳ rectangle bounds
- ⏳ unicode
- ⏳ draw 3D
- ⏳ codepoints loading
- ⏳ animation
- ⏳ billboard
- ⏳ box collisions
- ⏳ cubicmap
- ⏳ first person maze
- ⏳ geometric shapes
- ⏳ mesh generation
- ⏳ mesh picking
- ⏳ loading
- ⏳ loading gltf
- ⏳ loading vox
- ⏳ loading m3d
- ⏳ orthographic projection
- ⏳ rlgl solar system
- ⏳ yaw pitch roll
- ⏳ waving cubes
- ⏳ heightmap
- ⏳ skybox
- ⏳ draw cube texture
- ⏳ basic lighting
- ⏳ model shader
- ⏳ shapes textures
- ⏳ custom uniform
- ⏳ postprocessing
- ⏳ palette switch
- ⏳ raymarching
- ⏳ texture drawing
- ⏳ texture outline
- ⏳ texture tiling
- ⏳ texture waves
- ⏳ julia set
- ⏳ eratosthenes
- ⏳ fog
- ⏳ simple mask
- ⏳ hot reloading
- ⏳ lightmap
- ⏳ mesh instancing
- ⏳ multi sample2d
- ⏳ spotlight
- ⏳ write depth
- ⏳ hybrid render
- ⏳ deferred render
- ⏳ basic pbr
- This library is based on Raylib (https://github.com/raysan5/raylib)
- Doxygen theme by jothepro (https://github.com/jothepro/doxygen-awesome-css/tree/main)