Axis is a modern C++ game framework/library. The framework is designed to be highly modular and leverages the modern C++ features for safe and fast codes.
Axis framework is sub-divided into many different modules for better project organization. Each of the modules is responsible for each specific task.
- System: This module provides our custom template container classes, math vectors, math matrices, and abstraction over low-level operating system function calls.
- Window: This module provides functionalities to display windows to the screen, process user events, and receive user inputs (mouse, keyboard, touch).
- Graphics: This module provides low-level abstractions over various next-gens Graphics APIs. Currently, the framework only supports Vulkan.
- Renderer: This module provides higher-level graphics functionalities such as:
SpriteBatch
class for fast and optimized 2D rendering - Core: This module provides high-level application functionalities and classes to create a game.
There are many features in the framework that aren't implemented but are coming in the future.
- Window and System modules: Currently, the framework's
Window
andSystem
modules are only implemented for Windows operating system. There will be more implementations for more operating systems. - Audio module: New
Audio
module will provide functionalities to load audio files, play audio and apply audio effects. - Full-blown engine: The framework will further extend into a usable game engine.
Currently, the framework doesn't provide any compiled binaries, Instead, build the framework and the dependencies from the source using CMake and link to your project.
Clone this repository recursively:
git clone --recursive https://github.com/SimmyPeet/Axis.git
Graphics APIs' SDKs:
The framework currently only uses Vulkan as a Graphics API backend. Make sure that Vulkan® SDK is installed in the system.
- Vulkan SDK: LunarG: Vulkan SDK
Currently, the framework only supports Windows, but many other operating system supports are coming in the future.
External third-party libraries are used in this project.
- glslang: Used in GLSL to SPIRV shader compilation.
- SPIRV-Tools: Used in GLSL to SPIRV shader compilation.
- SPIRV-Headers: Used in GLSL to SPIRV shader compilation.
- SPIRV-Cross: Used in GLSL to SPIRV shader compilation.
- freetype: Used in font-rendering.
- MonoGame: The project's structure is highly inspired by MonoGame framework.
- DiligentCore: The graphics subsystem's structure is highly inspired by DiligentGraphics/DiligentCore.