A 2D/3D game engine written in C++ with Vulkan/D3D11/D3D12/OpenGL support and a QtImGui-based editor.
It uses CMake Premake5 as build system for cross-platform support.
It allows cross-compilation.
Mostly educational but planning to be serious about it. I would like it to be my main project for a while and be the engine that I use for most of my games.
- Vane: The main engine,
should compile to a DLL(now statically linked) and be used as a library. - VaneEditor: The editor of the engine, will link with Vane. Uses
QtImGui. - Sandbox: A testbed for the engine.
The installation / build process is highly unstable at the moment as I am still figuring some stuff out with Premake5 and vcpkg. If it doesn't work, create an issue and I might be able to help.
Work in progress. Will support Linux & Windows with full testing. I am developing with macOS in mind but I do not own a Mac so it will be untested.
- Clone the repository:
git clone https://github.com/wowvain-dev/VaneEngine
- Install
vcpkg
from: https://github.com/microsoft/vcpkg - Set the
VCPKG_ROOT
environment variable to where you cloned thevcpkg
repo. - Make sure to download
Premake5
from https://premake.github.io/download and Lua from https://www.lua.org/download.html (also make sure to put them somewhere on the %PATH% env variable) - Make sure you have the
gcc/g++
compiler installed / the VS2022 build tools. - Run
premake5 vs2022
(haven't tested VS2017 build config yet, will do) - Run
. Compile from Visual Studio solution.make
- The binaries will be found in
build/[triplet]/{Sandbox | VaneEngine | Vane}
Most of the steps are the same as on Windows.
Use gmake instead of vs2022 on premake.
Build with make
.
With my current setup its a bit hard to consistently test both Windows and Linux, but I'll keep both as up-to-date as I can.
Extra dependencies: [WORK IN PROGRESS]
For now you can just run premake5 gmake
and see what build fails, find the lib missing which caused the failure, install it, and repeat until it fully builds.
- planning to simplify the building proccess, possibly having
vcpkg
as submodule - memory subsystem
- custom collection types / STL wrapper
- custom strings
- ...