A Vulkan-based C++ game engine in active development. Targets 2D first
(visual-novel style scenes) with a 3D OBJ pipeline already wired in
for prototyping. The editor (GameEngineSDL) ships alongside
IlmeeeHub (project launcher) and HandlerIlmeeeEngine (companion
process used while the editor is running).
The build is pinned to a Nix shell that brings in SDL2/3, GLFW, Vulkan, GTK3, FFmpeg, shaderc, etc.
mkdir -p build && cd build
nix-shell ../shell.nix --run 'cmake ..'
nix-shell ../shell.nix --run 'make -j$(nproc) GameEngineSDL'Shader compilation uses glslc which is not in shell.nix directly:
nix-shell -p shaderc --run 'glslc input.vert -o output.vert.spv'Two normal entry points:
# Through the Hub (recommended — wires up the project handshake):
./build/IlmeeeHub
# Standalone with an explicit project:
./build/GameEngineSDL --project /path/to/MyProjectWhen no --project is supplied, the editor boots a hardcoded debug
scene so the renderer always has something to display:
./build/GameEngineSDL # 3D: loads assets/3dmodels/yixuan.obj
./build/GameEngineSDL --2d=true # 2D: loads assets/testimage.png as a sprite
./build/GameEngineSDL --2d # same as --2d=trueThe 2D fallback drops a single sprite at world origin (300x300 px) and shows a dynamic editor grid + colored XY axes overlay that follow pan/zoom.
- 3D mode (mesh loaded):
RMB drag— mouselookWASD— flyShift— fast modifierLMB drag— move selected mesh in screen plane
- 2D mode (no mesh):
RMB drag— pan cameraWheel— zoom (0.1×–5×)- Toolbar
Reset Viewresets camera
src/cpp/
main.cpp # editor entry, CLI parsing
ApplicationManager.cpp # lifecycle, network, propagates CLI to MainWindow
Hub.cpp # IlmeeeHub launcher
core_engine/
SceneRenderer2D.cpp # Vulkan renderer (2D sprites + 3D mesh pipeline)
TextureManager.cpp # sprite texture loads
IlmeeeScene.cpp # binary .ilmeeescene serializer
ui/
MainWindow.cpp # ImGui shell
HandlerChildWindow.cpp # scene/hierarchy/inspector panels, debug bootstrap
HandlerProject.cpp # project IO
assets/
3dmodels/ # OBJ test models
testimage.png # 2D debug-fallback sprite
shaders/vulkan/*.spv # compiled shaders
Projects use a binary .ilmeeescene v1 layout. User data (recents,
preferences) lives at a cross-platform ~/.ilmeeeengine/ location via
ilmeee::UserDataRoot().
- Vulkan renderer with offscreen target + ImGui presentation: ✅
- 2D sprite pipeline + dynamic grid overlay: ✅
- 3D OBJ loader (positions + normals, flat lighting): ✅
- 3D primitives (cube/sphere/plane): ✅
- OBJ material / texture support: ⏳ planned
- Android target: ⏳ planned