Featured personal
My personal creations
Five finished projects, four of them public on GitHub, and four prototypes built to answer a specific technical question. Most of this is from 2026, after I left MirraGames and spent the time rebuilding my own component library rather than someone else's codebase.
Finished
Built and public
An Android app taken to production, and four Unity packages that solve a problem I kept hitting. All of them are readable rather than described: the code is the argument.
-
App
LockInGoals
I kept losing the small daily things to the large ones, and no tracker on the store lets me own the data, the sync and the roadmap at the same time. Built from nothing to a production Android build in Unity in two months. State is CRDT backed, so edits on a phone and on a desktop merge without a server arbitrating. No account, no server, no network permission, and import and restore go through the Android Storage Access Framework rather than a broad filesystem grant.
OutcomeIn daily use since release, with an adaptive layout that builds for anything Unity targets. The reusable pieces underneath it, the CRDT storage and my component library, came out of this and are current again.
-
Open source
Transvoxel
Marching cubes leaves visible seams wherever two levels of detail meet. This is a clean, modular Unity implementation of Eric Lengyel's Transvoxel algorithm: seamless LOD triangulation over a density field managed by an octree, with sculpting and world parameters as live controls that rebuild the landscape while you move them, and a meshing backend you can switch between CPU, GPU and a hybrid of the two at runtime.
Outcome240 FPS in real time, 10,000 metres of landscape ahead of the player, on hybrid CPU and GPU threading. Public on GitHub under MIT.
-
Open source
EventAggregator
A type keyed publish and subscribe event bus for Unity with no allocation on the hot path. Producers publish plain objects or structs, listeners subscribe per event type, and there is no reflection, no code generation and nothing to configure. The whole thing is two interfaces and one class, which is the point: a message bus that needs a manual is a message bus people route around.
OutcomePublic on GitHub, and the decoupling layer I reach for first in my own projects.
-
Open source
ConsoleContainer
The Unity console is one bucket for every message from every system, so the moment a project has a few subsystems the log stops being readable. ConsoleContainer gives each system its own named console inside a dedicated editor window, keeping the timestamp, the source and the full call stack, with every stack frame clickable straight into the IDE exactly like the built in console.
OutcomePublic on GitHub. Debug output stays out of the shared console and inside the context that produced it.
-
Open source
MeshOutline
Silhouette outlines usually cost something every frame: a post processing pass, a render texture, a command buffer or an Update loop. This does the expensive part, smooth normal generation, at edit time and serialises it straight into the scene, then draws a constant width outline with a classic two pass stencil technique. Bake once, ship it, and the frame budget never hears about it again.
OutcomePublic on GitHub, with no per frame cost, no camera setup and no post processing stack required.
Shelved on purpose
Prototypes and what they proved
Each of these was built to answer a question, and each was put down once it had an answer. They are here because the answers are the interesting part, and because one of them is the project everything else has been preparation for.
-
Prototype
Spacevoxel
The one I actually want to build: a world generated end to end, from landscape to structures, NPCs and quests, so that travelling far enough always puts you somewhere nobody has seen. I first tried it in 2019 and could not build most of it. The terrain half is now solved and public as Transvoxel, running on a hybrid CPU and GPU threading model.
What it provedThat the hardest dependency is no longer the blocker. What is left is time rather than capability, and this is the only one of the four I intend to finish.
-
Prototype
Pocket Raft
A block built survival game on a raft, made to find out how far Minecraft style terrain can be pushed on a phone running inside a WebView. Chunk generation, UV mapping, baked ambient occlusion and light propagation handled the way Minecraft handles them, on NativeArrays with HLSL shaders and loops written so that a chunk rebuild costs as little as it possibly can.
What it provedThat the whole voxel pipeline runs smoothly in a mobile WebView. Shelved on a market judgement rather than a technical one: the idea reads better on paper than it would have performed.
-
Prototype
Run from Psycho
An escape the building game, with a basement level modelled in 3ds Max and textured in 3D Coat by me, a cross platform player controller and an interaction system. It stopped one step short of an MVP, missing the NPCs that hunt the player and the interface work that would make it feel finished.
What it provedWhere my light baking, UV mapping and ShaderGraph fundamentals come from, all of which went straight into the commercial work that followed.
-
Prototype
Rush the Padik
A level runner where you kick and shoot your way to the exit, with a lobby for upgrading and dressing your character. The distinctive part was audio as a state machine: calm background music, a warning track the moment an enemy sees you, and hard bass while you fight. I commissioned a composer and bought the assets to do it properly.
What it provedThat the audio idea works, and something more useful: I built it because it was fun to build, not because anyone was waiting for it. Shelved once that was clear.
The commercial work is on its own page
Twenty four shipped titles across MirraGames and TeamGZ, including the five that went wrong and what I changed afterwards. If you would rather talk than read, email is the fastest way to start.