A fast C++20 3D game engine for modern devices, with wide platform support
APACHE-2.0 License
A C++23 cross-platform game framework, with emphasis on addressing pain points in existing game engines. Notable features:
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:
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
View a respository with code samples here: https://github.com/RavEngine/Samples