Skip to content

A lightweight, object-oriented C++ game development framework based on Raylib.

Notifications You must be signed in to change notification settings

HerbeMalveillante/axle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

axle

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.

Requirements

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.

QuickStart

  1. Clone or add the Axle repository as a submodule in the root of your project.

  2. 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>
  3. Create an entry point called main.cpp inside of a src directory :

    // src/main.cpp
    #include <axle.h>
    
    int main()
    {
       // Run the basic window example
       Axle::Examples::basicWindow();
    }
  4. Build and run the project :

    ./axle.sh run
  5. 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.

  6. Run the ./axle.sh help command for an exhaustive list of all available features.

Documentation

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/

Roadmap

Features

Done

  • Unix-compatible toolchain shell script
  • Window Initialization
  • Basic Text Drawing
  • Basic Rectangle Drawing
  • Basic Color support
  • Basic Vector2 support

Short Term

  • Keyboard Input support

Medium Term

  • 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

Long Term

  • Custom UI framework
  • Touch and Gestures
  • VR
  • Automation and Event Management

Maybe ?

  • UI editor

Examples

Core

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

Shapes

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

Text

  • ⏳ Raylib fonts
  • ⏳ font spritefont
  • ⏳ font filters
  • ⏳ font loading
  • ⏳ font sdf
  • ⏳ formal text
  • ⏳ input box
  • ⏳ writing anim
  • ⏳ rectangle bounds
  • ⏳ unicode
  • ⏳ draw 3D
  • ⏳ codepoints loading

Models

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

Shaders

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

Credits

About

A lightweight, object-oriented C++ game development framework based on Raylib.

Resources

Stars

Watchers

Forks