
Why Egor?
- Stupid Simple – You can grok the whole engine without falling into a rabbit hole
- Cross-Platform – Same code runs native & on the web via WASM
- Zero Boilerplate – Primitives, textures, input, text & more without writing a book
- Extensible & Minimal – If it's not required, it’s probably not included (by default)
Features
- Primitives
- Textures
- Input Handling
- Camera System
- Text/Fonts
- Plugin System
Platform Support
| Target | Backend(s) | Status |
|---|---|---|
| Windows | DX12, Vulkan, OpenGL | ✅ Stable |
| MacOS | Metal, Vulkan (MoltenVK) | ✅ Stable |
| Linux | Vulkan, OpenGL | ✅ Stable |
| Web (WASM) | WebGPU, WebGL2 | ✅ Working |
[!NOTE] Mobile (Android/iOS) isn't (intended to be) supported & neither is touch input
Getting Started
Add egor to your project:
Example:
init.run
To see more of egor in action, checkout demos/
[!TIP] Running a demo for WASM? You’ll need to move index.html into a demo, or just use the included run.sh script (see usage). It simplifies running native, WASM & hot-reload builds
Running a Native Build
Simply run cargo:
Running a WASM Build
Run trunk (defer to Trunk docs for setup):
Try Out Subsecond Hot-reloading
Add the plugin:
App:init.plugin...
Run dioxus-cli (defer to Dioxus CLI docs for setup):
[!NOTE] Subsecond hot-reloading is experimental; native is working
Contributing
egor is moving fast.. Got an idea, bugfix, or question? Check out some issues, open a new one, drop a PR, or come hang in Discord
egor is maintained with ❤️ by Open Source Force