- Notifications
You must be signed in to change notification settings - Fork46
A fast C++23 3D game engine for modern devices, with wide platform support
License
RavEngine/RavEngine
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 thedeps
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 dirsset(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 normalfile(GLOBSOURCES"src/*.cpp""src/*.hpp""src/*.h")add_executable("${PROJECT_NAME}"${SOURCES})target_link_libraries("${PROJECT_NAME}"PUBLIC"RavEngine" )# also adds header includestarget_compile_features("${PROJECT_NAME}"PRIVATE cxx_std_23)# Set C++ version# inform engine about your different assetsfile(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 bundleif(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
- TheSDL Android Builder wrapper project
- Web Browsers
- Latestemsdk
- 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
About
A fast C++23 3D game engine for modern devices, with wide platform support