Oak Engine is a game engine I’ve been working on for around 7 years built completely from scratch. The runtime dependencies are restricted to SDL with some small C libraries for loading images, assets, etc… My main goals for the engine are to learn as much as possible by diving deep into the underlying topics and knowledge required for implementing each feature, as well as to have a production ready application for indie game development and game jams. Checkout some of the games I’ve made with Oak Engine
Features
Cross-platform runtime with support for Linux, Android and Windows, editor support for Linux and Windows
Multithreaded execution engine using fibers
Custom multi-threaded arena based memory allocation
Module/plugin system with an extensible application architecture and main game loop
Written in orthodox c++, does not depend on the c++ standard library runtime
Resource manager with async asset loading
Robust input handling with controller support
Simple audio mixer with support for volume/pitch fading, multiple output formats
Custom implementation of a reliable ordered network protocol over UDP inspired by Valve’s game network sockets
Runtime data model with support for multiple serialization formats and automatic symmetric diffing
Simple entity component system that features
Runtime defined components
Prefabs
Comprehensive serialization, custom serialization callbacks based on the data type or annotation
Out of process editor
Global/per-project plugin support
Built in a custom GUI framework
Supports scene introspection within running instances of game projects over the network
Robust level and asset editor
Deep data driven undo/redo
Live edits of the game’s active scene when connected to editor
Tile system with support for multiple grid types and advanced auto-tiling
Fully featured navigation engine, ability to robustly auto generate nav-meshes based off of level geometry
Physically based rendering engine with a custom high-level graphics API using vulkan as the backend
Micro-facet based surface model
Energy conserving area lights
Image based lighting
Directional cascaded shadow mapping
SSAO
SSR
Normal and parallax mapping
Screen space shadows
Compute bloom
Weighted-blended OIT
Compute particle system, n-body simulation
Tone-mapping and gamma correction
Complete 2D support even for advanced lighting and post-processing
Per material and render layer based batching system
Multi draw indirect geometry engine for issuing tens of thousands of draw calls with sub ms cpu performance
GPU frame profiler
2D rigid body physics engine with events so that gameplay can hook into every aspect of the contact solver
3D geometry, animation and rigid body physics engine built on top of the coherent, numerically stable and performant PGA (plane-based geometric algebra)
CPU frame profiler
Audio mixer visual debugger
Memory debugger widget
Physics step debugger
Reliable cross-platform hot code reloading for both the game and editor
PGA rigid body physics
Rendering test scene
3d viewport and level editor
Glossy screen space reflections
Old showcase video (5 years old)
The Only Survivor Miraculously had no Internet
My most recent project started as a game jam for the Global Game Jam 2023. It’s a logic based hacking puzzle game with art by dystoth.
Restore Vulcan
Restore Vulcan is a game I made in my engine with some friends during the Global Game Jam in 2020, a windows demo is available on itch.
An early prototype arcade style twin-stick shooter I work on from time to time. It’s a 2d game with 3d ray-marched lighting and some other fun graphical effects