Hydro engine and Oxygen editor
An experimental C++ game engine for Windows, built on Vulkan, with its own editor. It started as a 2D Vulkan renderer and grew into a full engine that now runs a small JRPG of pixel-art characters in lit 3D dioramas.
- Role
- Sole developer
- Language
- C++17, GLSL, Python
- Platform
- Windows, Vulkan, MSVC
Overview
Hydro is where I learn engine technology by building it. It is a static library with three programs on top: Oxygen, the editor; Runtime, the standalone player that packaged games run on; and Game, the game's own code as native C++ scripts.



Rendering
A native Vulkan backend with explicit control over resources and synchronisation. The 2D path is the most mature; the 3D path is being built alongside it so both can share a scene.
2D
- Batched sprite and quad rendering, sprite animation, materials and textures
- Global and point lights with basic 2D shadows
- Multiple render views per frame, with separate editor and game views
- Shader hot reloading and GPU timing
3D
- Dynamic rendering, depth, GPU vertex and index buffers, perspective and orthographic cameras
- Directional, point and spot lights, emissive materials, ambient light and fog
- glTF and GLB import
- Sprites drawn inside 3D scenes as upright cut-out cards with depth, for mixed 2D and 3D scenes
- Entity-ID rendering for picking in the editor

Next: physically based materials and more post-processing.
Oxygen editor
A lightweight editor in the spirit of Unity and Godot, running directly on the engine.
- Scene and game viewports, hierarchy, inspector, project and asset browser, console
- Scenes, prefabs, saving and loading, project and render settings
- Play, pause, step one frame, and stop back to edit mode
- Engine and render statistics, debug drawing, entity picking
- Building a standalone game package from the File menu
Architecture
- ECS: EnTT, with components as plain data and systems that act on them
- Scripting: native C++ scripts with a reflection generator, so script fields show in the inspector and save with the scene
- Data: game content (dialogue, items, quests, enemies, abilities) as reflected definition files and tables, edited in the inspector
- Physics: Box2D for 2D; Jolt for 3D, with a capsule character controller, stairs, mesh colliders, ray and overlap queries, and triggers
- Subsystems: a fixed start-up and shutdown order, Init/Shutdown for subsystems and RAII for resources
- Build: premake, MSBuild scripts and a GitHub Actions pipeline that builds Debug and Release on every push
Eonlore: the game that proves it
Engine features are easy to demo and hard to prove. So Hydro has a real game to carry them: Eonlore, a tactical turn-based RPG with pixel-art characters in lit 3D scenes. Since November 2026 it lives in its own repository and builds against a pinned Hydro commit.


- Field scenes: the Shrine Glade, a temple and a town street, with NPCs, signs, chests and quests
- Turn-based battles built on turn order, elemental weaknesses, shields and Break
- In-game menus for inventory, character and quests, built on the runtime UI
- Every new engine system lands as a gameplay element in these scenes, not as a separate demo
Tooling and AI
Hydro is also where I develop my way of working with coding agents. The repository carries its own instructions, architecture skill and checks, so an agent can find its way around 500+ source files and verify its work before handing it back. Read about the AI workflow.
Status
| Area | Status |
|---|---|
| 2D engine and renderer | Working, used for gameplay |
| Scene, ECS, native scripting | Working |
| Oxygen editor | Working, expanding |
| Editor and game projects as separate projects | In progress now |
| Asset pipeline | Working foundation |
| 3D rendering and import | In active development |
| 3D physics (Jolt) | In active development |
| Audio, advanced post-processing | Planned |
Building a game, an engine, or the tools around them?
I'm based in Tokyo and open to conversations about Unity, C++ and engine roles, C# and .NET software roles, and teams that want to put AI agents to work on real codebases.