A C++23 cross-platform game framework, with emphasis on addressing pain points in existing game engines. Notable features:
- Fast Parallel ECS, with support for querying by base class
- Multithreaded physics simulation
- 3D spatial audio, including room reverbation modeling
- Automatic memory management handled via reference counting, no garbage collector
- GPU-driven render engine that supports modern rendering APIs (Metal, DirectX 12, Vulkan)
- Fully-programmable GPU particle system, supporting both arbitrary meshes and billboarded sprites
- Physically-based lighting model
- Author shaders in vanilla GLSL
- Declarative user interface system based on HTML and CSS
- Support for SVGs in the UI and for textures
- Built-in multiplayer networking system
- FSM animation blending tree system
- Compute shader mesh skinning with automatic batching
- Programmable audio effect processing system
- AR/VR support via OpenXR integration
- CI/CD-friendly build process powered by CMake
- Quality-of-life features like automatic incremental shader compilation
- Integrates with GPU debugging tools (Xcode Metal Debugger, RenderDoc, PIX, NSight)
A complete list of third party technologies can be found in the deps folder.
Note: RavEngine does not have a graphical editor.
Expect bugs and frequent breaking changes. Do not use in serious projects.
Use CMake:
cmake_minimum_required(VERSION 3.23) set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}) # set output dirs set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>) PROJECT(Example_RavEngine_Game) add_subdirectory("RavEngine") # configure the engine library # configure your executable like normal file(GLOB SOURCES "src/*.cpp" "src/*.hpp" "src/*.h") add_executable("${PROJECT_NAME}" ${SOURCES}) target_link_libraries("${PROJECT_NAME}" PUBLIC "RavEngine" ) # also adds header includes target_compile_features("${PROJECT_NAME}" PRIVATE cxx_std_23) # Set C++ version # inform engine about your different assets file(GLOB objects "objects/*.obj" "objects/*.fbx") file(GLOB textures "textures/*") file(GLOB shaders "shaders/*.vsh" "shaders/*.fsh" "shaders/*.csh") file(GLOB fonts "fonts/*.ttf") file(GLOB sounds "sounds/*.ogg") file(GLOB uis "${sample_dir}/ui/*.rml" "${sample_dir}/uis/*.rcss") pack_resources(TARGET "${PROJECT_NAME}" OBJECTS ${objects} SHADERS ${shaders} TEXTURES ${textures} UIS ${uis} FONTS ${fonts} SOUNDS ${sounds} ) # fixup macOS / iOS / tvOS bundle if(APPLE) INSTALL(CODE "include(BundleUtilities) fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/$<CONFIGURATION>/${PROJECT_NAME}.app\" \"\" \"\") " COMPONENT Runtime ) endif()Then build with CMake as normal. Other notes:
- Windows:
- You will need to run your initial configure twice before building (known bug).
- If on an older OS (Windows 10), you'll need to clone recursive to get an updated version of DXC.
| Platform | Architecture | Compiler | CMake Generator | Rendering API |
|---|---|---|---|---|
| macOS 12+ | Intel, Apple Silicon | Apple Clang | Xcode | Metal |
| iOS 16+ | Device + Simulator* | Apple Clang | Xcode | Metal |
| tvOS 16+ | Device + Simulator* | Apple Clang | Xcode | Metal |
| visionOS 2D 1+ (WIP) | Device + Simulator* | Apple Clang | Xcode | Metal |
| Windows 10+ (Win32) | x86_64, aarch64 | MSVC | Visual Studio, Ninja | DX12, Vulkan |
| Windows 10+ (GDK) | x86_64 | MSVC | Visual Studio | DX12, Vulkan |
| Linux | x86_64, aarch64 | Clang, gcc | Ninja, Make | Vulkan |
| Android (WIP) | x86, x86_64, arm64-v8a, arm7a | NDK Clang | Ninja, Make, Android Studio | Vulkan |
| Emscripten (Early WIP) | WebAssembly | emcc | Ninja, Make | WebGPU |
* Simulator support is build-only. RavEngine uses GPU features that the simulator does not support.
Hardware
| Part | Recommended | Minimum |
|---|---|---|
| CPU | 16 threads | 4 cores |
| RAM | 32 GB | 16 GB |
| GPU | - | Any with DX12, VK 1.3, or Metal 3 |
| Disk | - | SSD w/ 40GB free space |
Note that for end users the minimum system requirements are much lower.
Software
- macOS, iOS, tvOS, visionOS
- Xcode 16.2+
- CMake
- Windows
- Visual Studio 2022 or later with the "Desktop Development in C++" and "Game Development in C++" modules
- CMake (included with Visual Studio)
- LunarG Vulkan SDK (optional unless Vulkan support is desired)
- Android
- Android Studio 4.2 or later with NDK 27 or later
- Host requirements:
- macOS host: Xcode 16.2+
- Windows Host: Visual Studio 2022 with the "Desktop Development in C++" and "Game Development in C++" modules
- Linux host: clang 16 or later (recommended) or gcc 13 or later
- The SDL Android Builder wrapper project
- Web Browsers
- Latest emsdk
- CMake
- Host requirements:
- macOS: Xcode 16.2+
- Windows: Visual Studio 2022 with the "Desktop Development in C++" and "Game Development in C++" modules
- Linux: clang 16 or later (recommended) or gcc 13 or later
- Linux
- ninja (recommended) or make
- clang 16 or later (recommended) or gcc 13 or later
- cmake
- libatomic
- libx11-dev
- libwayland-dev
- uuid-dev
- alsa-lib-devel or pulseaudio (or another SDL3-supported audio library)
- LunarG Vulkan SDK
View a repository with code samples here: https://github.com/RavEngine/Samples