Ymir Engine
Written in the Odin Programming language using Data-Oriented-Design. The intention is to create a fast, modern, 3d game-engine. Odin is chosen for it's simplicity and for how easy it is to learn compared to other low-level languages. Long-term, this will minimize pain-points for developers, especially considering comp-time.
Alpha intent: Feature-complete Minimum-Viable-Product for 1.0 release, but not yet polished. IOT acheive feature completeness, this is a non-exhaustive set of roadmap 'features' that are desired for the MVP:
Editor -- Full 3d editor
--- Important Editor features ---
Base editor - folder hierarchy panel - needs refactor.
Base editor - folder creation - needs refactor.
Base editor - folder deletion - needs refactor.
Base editor - Backend selection and config saving - needs refactor.
Base editor - window management - needs refactor.
Base editor - layout reset button (to default) - needs refactor.
Base editor - editor theme/font selection - needs refactor.
level and layer hierarchy + selection - GUI implemented, non-functional
asset management gui - basic functionality implemented
asset import gui - needs refactor.
asset export gui - needs refactor.
gizmos - not started
level + layer editing - not started
material node graph - not started
animation node graph - not started
run game button from editor.. external window - not started
run game from viewport in editor - not started
Scene graph - not started
Functional Rendering backends - doing software renderer ATM
At least a 3d PBR SDL3 GPU backend - not started
Complete level and layer saving with API calls - in progress, saves and loads basic level data. - very basic
ECS - Not started, but may just allow for end user to use own.. not sure yet.
In-game UI system. - not started
logger - not started
game-config load/save - completed
controls-config load/save - completed
graphics-settings load/save - not started
window creation/handling - completed / at least for software backend.
asset manager - not started
job scheduler - not started
more to follow...
Beta intent: Polished to the point of external developer satisfaction, at least one game shipped IOT exit beta.
Usage: Build helper script:
- Use
build_from_game_config.ps1to compileAppand name the exe fromApp/Config/game.jsongame_name. - Output is written to
Build/<game_name>.exe. - Example:
./build_from_game_config.ps1
For the editor you will need to compile the vendor supplied imgui_impl_sdl3, otherwise it will not work.