Overview
Bedbug is a custom-built 3D engine written in C & Odin, designed for modularity, dynamic reloading, and graphics experimentation. It combines a Vulkan-based renderer, a plugin system for live-reloading DLLs, and a minimal ECS architecture, giving developers full control over memory, layout, and draw flow.
The engine supports both OpenGL and Vulkan backends and is built from scratch without external game frameworks, enabling rapid iteration on rendering and tooling workflows for education, research, and simulation.
Architecture
1. Core Modules
- Renderer: Vulkan-first with optional OpenGL fallback
- Explicit descriptor management, pipeline layouts, and render passes
- Custom abstraction for hot-swappable shaders using
#includeand stringified GLSL
- Memory: Arena and freelist allocators, with debug overlays
- Platform: Cross-platform window/input/event abstraction (based on GLFW)
- UI Layer: Early experimental canvas with pixel-perfect draw calls
2. Dynamic Plugin System
- Game and editor logic live in hot-reloadable DLLs (
game.dll,editor.dll) - Core communicates via tagged unions and plugin registries
- Plugins compiled separately, reloaded in-place without restarting the app
- Supports live code editing, memory patching, and serialized state transfer
3. Editor Integration (In Progress)
- In-engine entity inspector and scene graph
- Live shader editing and render doc hooks
- Timeline-based animation editor planned
- Goal: A standalone editor powered entirely by
editor.dll, launched fromfuton.exe
Key Features
- Odin-native codebase (no bindings or wrappers)
- Modular
pipeline_infopatching system for Vulkan setup - Runtime-configurable ECS with tagged components and prefab support
- Custom logging, timing, and memory overlays
- CLI toolchain using
make,premake5, andbashscripting
Use Cases
- Educational graphics demos
- Custom medical visualization plugins (e.g., DICOM mesh viewer)
- Tooling experiments for interactive learning environments
- Minimal games and simulation prototypes