Joël van der Werf

Devlog

Notes on the engine, game and tooling decisions behind my projects: what I tried, what I chose, and why.

  1. Games in their own repositories: separating Hydro from its first game

    Hydro, its editor and its first game all lived in one repository. The plan to give every game its own repo, the 16 couplings in the way, and the first five steps.

    • Hydro
    • Architecture
    • Tooling
  2. Making an engine readable to AI agents

    Hydro has 500+ source files and strict house rules. Here is the harness that lets Claude and a local Qwen model work in it without guessing.

    • AI
    • Tooling
    • Hydro
  3. Rules, views and a game session: structuring game code

    How the diorama RPG keeps its battle maths testable without a GPU, its UI dumb, and its run state alive across scene changes.

    • Hydro
    • Architecture
    • Gameplay
  4. Game content as data: Hydro's ScriptableObjects

    Dialogue, items, quests and enemies moved out of C++ into reflected definition files and tables, edited in the inspector.

    • Hydro
    • Architecture
    • Gameplay
  5. From editor to an .exe: the first standalone build

    Splitting game code out of the editor, a small runtime that plays one project, and a build button in the editor. Deliberately not an asset pipeline yet.

    • Hydro
    • Architecture
    • Tooling
  6. A street lamp is one thing: scene hierarchy and runtime UI

    Parent-child entities and a real UI system, planned against two plain goals and built in two days. The decisions that kept it small.

    • Hydro
    • Architecture
    • UI
  7. Walkable dioramas with Jolt: capsules, ramps and gameplay shapes

    Moving from bounding boxes to real 3D collision with Jolt Physics, and the two rules that made it simple.

    • Hydro
    • Physics
    • Architecture
  8. Why I dropped the toe of the tonemap

    A small HDR decision with a big effect on pixel art: keeping the darks exactly as the artist painted them.

    • Hydro
    • Rendering
    • HDR
  9. Shadows for cardboard characters

    One shadow map for the sun, sprite casters that turn to face the light, and a lookup trick so a sprite is never darkened by its own shadow.

    • Hydro
    • Vulkan
    • Rendering
  10. Pixel-art sprites in a 3D world: upright cards, cut-outs and depth

    How Hydro turned a flat 2D village into a diorama without rewriting the scenes: a facing mode per sprite, a depth buffer, and one discard.

    • Hydro
    • Vulkan
    • Rendering
  11. Where runtime state lives: four rules for components in an ECS

    Settings, per-entity state, library-owned state and derived data each have one home in Hydro. Deciding that once removed a whole class of bugs.

    • Hydro
    • Architecture
    • ECS
  12. 56 issues: what a full engine review found

    Before adding features, I reviewed all 6,000 lines of the engine and editor. Six critical bugs, a swapchain split, and RAII for every Vulkan resource.

    • Hydro
    • Vulkan
    • Code quality
  13. Four years of Hydro: from a Vulkan triangle to an editor

    Hydro started in July 2022 as a window and a validation layer. A look back at four years of a side project that kept getting picked up again.

    • Hydro
    • Vulkan
    • Retrospective

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.