A fast C++20 3D game engine for modern devices, with wide platform support
A C++20 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_20) # require C++20
# 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()
RavEngine is sensitive to file extensions with shaders. vsh
, fsh
, and csh
determine if the shader is compiled as vertex, fragment, or compute.
Then build with CMake as normal. On Windows, you will need to run your initial configure twice before building (known bug). Example scripts are provided.
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 |
Windows 10+ (UWP) | x86_64, aarch64 | MSVC | Visual Studio | DX12 |
Xbox Series (UWP) | x86_64 | MSVC | Visual Studio | DX12 |
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