Here's some of my work

Ryze

Idomi Games · on Steam, playtest out now

Description
A 2D precision platformer where you climb by throwing yourself: charge a throw, launch a pearl and teleport to wherever it lands, while platforms shift between two dimensions.
Duration
2022 — present. It began as our Global Game Jam entry and grew into a commercial release.
What I did
  • Programmer and co-founder
  • The character controller and throw-to-teleport movement, the game's core feel
  • Level mechanics, from moving and crumbling platforms to pistons and conveyor belts, plus a test level that exercises every one
  • A reusable dialogue system with NPCs, walk-up cutscenes and localization
What I used
Unity 6, C#, Input System, Odin Inspector, Ripple

Submucosal dissection in Lumen, driven by the custom endoscope controller

Lumen

XR Japan · endoscopy simulator

Description
A virtual training platform where doctors practise endoscopic submucosal dissection (ESD) on a realistic, moving esophagus, using a dedicated endoscope controller and foot pedal. Supervised by a leading endoscopist and now in beta.
Duration
Ongoing, as lead programmer
What I did
  • Lead programmer: architecture, conventions and the technical side of client and partner conversations
  • Tissue behaviour during the procedure, on Burst-compiled solvers
  • Lesion marking and the input from the custom endoscope controller
  • Load-time and frame-time optimization
What I used
Unity, C#, URP, Burst/Jobs, custom hardware input

Ripple

Open-source Unity framework

Description
A ScriptableObject framework: shared variables, typed events and runtime sets live in assets, so systems talk to data instead of to each other. Unlike other takes on the pattern, it shows you who changed what.
Duration
2024 — present
Features
  • An "Invoked by" table on every asset: caller, call count and last value
  • One click finds every listener across code, scenes and prefabs
  • A wizard to browse every asset, and a live event logger
  • Runs in all of my recent games, including Ryze
What I used
Unity, C#, Odin Inspector, UltEvents, reflection, UPM

BotBandJazz

HTC Vive · shown at the Dutch Game Garden

Description
A VR game set in an old theatre: play mini-games around the hall to get a robot jazz band back on stage. It was exhibited at the Dutch Game Garden and entered in the Dutch Game Awards 2017.
Duration
10 weeks in 2017, team of 6
What I did
  • Teleport locomotion: a projected arc that finds a valid place to land
  • A trigger system for designers: pick a function from a dropdown and fill in its parameters
  • A BPM-based level editor inside Unity for the rhythm mini-game
  • Physics interactions with the Vive controllers
What I used
Unity, C#, SteamVR, HTC Vive

Tristeon 3D editor with scene view, hierarchy, inspector and asset browser

Tristeon

C++ game engine · with Leon Brands

Description
A 3D engine written from scratch by two students in five months, with a Vulkan renderer and a Unity-style editor. 70+ stars on GitHub.
Duration
2017
What I did
  • The complete editor: scene view, hierarchy, inspector and asset browser
  • Reflection and serialization: scenes and prefabs saved as JSON, objects rebuilt by type name
  • An inspector that edits any component without hand-written UI
What I used
C++, Vulkan, ImGui, GLFW, Assimp, GLM, CMake

Shroomer

GMTK Game Jam 2026 · theme "Countdown"

Description
A psychedelic movement shooter set in a dream. Your alarm clock is counting down, and only kills buy you more time to stay asleep.
Duration
4 days, team of 4
What I did
  • All programming
  • A momentum-based controller: air-strafing, wall-running, sliding, dashing and mantling
  • A composable enemy system: one component, with movement and attacks picked from dropdowns
  • Shooting, the countdown loop, menus and settings
What I used
Unity 6, C#, Ripple, FMOD, Feel

Editing a map with correctly timed hitsounds (sound on)

osu!catch level editor

Community tool

Description
The rhythm game osu! has millions of players but no proper editor for its catch mode, so I built one: a beat-accurate timeline, editing tools and a built-in play mode to test a map instantly.
Duration
2018 — 2019, solo
Features
  • A shader-drawn beat grid that stays exact at any zoom level and BPM
  • Undo/redo for every edit, plus importing and exporting osu! beatmaps
  • Playback on the audio clock, so timing never drifts
  • Built with constant feedback from the player community
What I used
Unity, C#, ShaderLab, NAudio

This Side Up

Mini Jam 188 · limitation "All in a box"

Description
A pixel-art platformer about delivering a package, except you cannot jump. A boxing glove launches you through the level instead.
Duration
72 hours, team of 5
What I did
  • All programming
  • Boxing-glove propulsion with a mid-air second punch, aimed with mouse or gamepad
  • Gravity that rotates 90 degrees at trigger zones, with music that follows each orientation
  • Sticky walls, moving platforms, conveyor belts, dialogue and FMOD audio
What I used
Unity, C#, FMOD, Ripple

More game jams

Hako: the player next to a box with a door

Hako

Mini Jam 154 · programming

A puzzle platformer about travelling through rooms inside nested boxes.

itch.io
Island Revolution title screen

Island Revolution

Kenney Jam 2024 · with MindNoMore

Connect your city to nearby islands for resources, before unmet demands spark a revolt.

itch.io
Consumption key art

Consumption

Ludum Dare 52 · programming

An action game: harvest enemies to survive, harvest ores to get stronger.

itch.io
Equilibrium title screen

Equilibrium

Global Game Jam 2022

A two-world platformer made in 48 hours. It became the starting point of Ryze.

itch.io
Rock the Boat: pirate ships on the waves

Rock the Boat

Global Game Jam 2017 · buoyancy physics & UI

Rocking pirates. My first game jam.

itch.io

More projects

Orb: a level built in Unity running in our own C++ engine

Orb

Custom C++ engine · 2017

A first-person puzzle game on our first engine. I wrote its physics engine and serialization, and turned Unity into its level editor.

More info
Benchmark chart comparing C# and Wren

C# vs. Wren

Research · scripting for a C++ engine

Which scripting language should a C++ engine embed? I measured runtime speed, compile time and the cost of calling into C++.

More info
Ghostebash: the haunted museum level

Ghostebash

VR Amsterdam · free-roaming VR · 2021 — 2022

A multiplayer ghost-hunting game for a VR arcade where groups share one real room. Sole programmer: local multiplayer with Mirror, full-body IK and physics interactions.

Abyss: a forest level layout in the Unity editor

Abyss

2D Metroidvania · sole programmer · 2018 — 2019

A hand-drawn Metroidvania about a demon sealed at the bottom of an abyss. As its only programmer I built combat, enemies, healing, parallax layers, floor-material footsteps and a depth-layer editor for the artists.

Back to Bed!: a bedroom in VR

Back to Bed!

VR · 3 weeks · 2 programmers · 2016

My first VR game, made when consumer VR had just launched. VR player controller, menus, an event system and a node-based dialogue editor for the designers.

University coursework

Smaller assignments from Saxion's game engineering programme, each built on the course's own framework.

Game physics

C# · GXPEngine

Ball physics from first principles: velocities, circular motion, and collisions and reflections against line segments.

SAT collision detection

C# · Unity

A small physics manager with custom rigidbodies and separating-axis collision tests, outside Unity's own physics.

Octree broad phase

C++ · our first engine

An octree that limits collision checks to nearby objects in our engine's physics, with a stress-test scene of random moving colliders.

Game AI

C#

Agents driven by finite state machines, pathfinding on node graphs, and minimax players for Connect Four and Domineering.

Networking

C# · Unity

A TCP chat server that handles several clients at once, with a Unity client and its own packet serialization.

Audio programming

C#

Synthesizers with polyphony, effects such as a bit crusher, low-pass filter and delay, and MIDI playback.

3D rendering

C++ · OpenGL

Materials, textures, lights and GLSL shaders on a small OpenGL framework.

Lua scripting

C++ · Lua

Embedding Lua in C++, ending with Lua bindings for our first engine.

Procedural meshes

C# · Unity

Meshes generated in code: a mesh builder, rooms, and a spline editor that turns a curve into a lathed mesh.

Tiled level loading

C# · GXPEngine

Loading levels made in Tiled (TMX) into a game, structured with model-view-controller.

Game architecture

C#

A component-based engine core with separate graphics, input and physics managers.

Editor research

C++ · ImGui

How engine editors are built: immediate versus retained mode UI, plus an asset browser and JSON scene prototypes that fed into Tristeon's editor.


Also on GitHub