Game Developer · Creative Technologist · Adventures Organizer
I build games and interactive tech end-to-end, from prototype to shipped product. I also organize guided tours, both out in nature and through the city. Open to contract & freelance work.
Get in touch →My dearest and most challenging solo project. A pandemic hobby that turned into a self-imposed dare: realtime boolean cuts of any mesh against any other mesh, with no vertices ever modified. I was repeatedly told that most of these features could not be done. The whole point was to do things that had not been done before.
Normally, cutting one 3D object with another means rebuilding meshes: slicing triangles, generating new vertices, patching holes. It is slow and fragile. I wanted the opposite: leave every mesh exactly as it is and do all the cutting in a custom fragment shader, deciding per pixel whether it belongs to the final shape.
The shader supports the full boolean vocabulary, selectively and per object: subtraction (carve one shape out of another), intersection (keep only the overlap), and compounds that mix both in a single object. Each runs in realtime against any mesh you throw at it. The comparison below shows the idea, arbitrary mesh versus arbitrary mesh, resolved live.
A per-pixel trick usually breaks the moment lighting or physics get involved, because the engine still thinks the original mesh is whole. Solving that was the hard part. The cut surfaces light correctly, with proper caps where the shape was opened, and the collisions match what you actually see, so subtracted and intersected shapes still bump into the world as their cut selves.
The fun starts at the edges. Objects can sit inside other objects and cut correctly. You can push the camera inside a cut shape and it still renders right, no inside-out artifacts. Cuts also persist locally, so the caps you carve stay where you left them as the volumes move.
Static meshes were one thing. Doing the same boolean cuts on a skinned mesh, an animated, deforming character, and cutting the dynamic falling objects is the final bag of tricks.
Built solo in Unity with Shadergraph and HLSL, this is the work I point to when range and persistence need a single example. No team, no template, a stack of features people said were not possible, all running at 100 FPS in a browser. It is the clearest proof of what I do: take an unfamiliar, supposedly-impossible problem and quietly make it real.
That is exactly the kind I like most. Tell me what you are trying to do.
Fifteen years of games taught me to be dangerous everywhere: design, code, tools, and shipping. Here is how that range came together, told through the work.
The early work was about range over polish. A Monty Python tribute in Flash / ActionScript (Killer Bunny and the Holy Grail), a 2.5D fighter in UDK / UnrealScript where I also did 3D modelling and animation (Fantasy Champions), and browser oddities like Maze Explorer, a maze whose walls open and close purely from CSS as you resize the window. Different engine almost every time. That was the point: learn the tool the project needs, not the other way around.
Then I stopped only taking orders and started setting direction. The Mendel edugame series, used in US schools under teacher supervision, had me as Game Director and Lead Programmer across multiple titles, on a small budget and tight deadlines. On Mendel and the Curse of the Mean Pea I was director, programmer and artist at once. Teaching genetics, heat transfer and the cycle of life through soft puzzles meant the fun had to survive contact with a curriculum.
UUu The generalist habit pays off hardest on commercial work. On Balloony I was the sole programmer for most of the project, getting one game running across iOS, Android and Nintendo Switch, building the tools and shaders the art team needed, and advising the director on which solution to actually pick. Shipping on console is a different sport.
Range is also about chasing ideas that do not fit a template. Poke Them All is a party game played with a webcam and physical paper hands, driven by OpenCV computer vision. Pivot Panic was built during the Unreal Fellowship in Unreal Engine / Blueprints as a two-player arcade cabinet game. And Enjoy Your Walk is a calm, free-roaming prototype exploring the psychological upside of virtual hiking, and even the soundtrack was hand-played on a kalimba. New input, new engine, new question, every time.
Solo dev to lead programmer to game director. Flash to Unreal to React. Arcade cabinets, classrooms, app stores, a Switch. The common thread is not a single engine or genre. It is being the person who can size up an unfamiliar problem, pick the right tool, and carry it to something playable. That is exactly the person small teams and ambitious projects tend to need.
Browse the full games grid, or skip ahead and tell me what you are building.
Outside of games I have lived in fast, shifting environments where the brief changes every couple of weeks. The job was always the same underneath: diagnose it quickly, pick the right tool, ship something that works.
At a fast startup environment (Viorama / Splash / Spilly) the tasks changed roughly every two weeks, with widely different aims each time. We had to diagnose problems fast and set our own task-solving schedules. That pace led to working hand in hand with Unity's own AR team on preparation for their Unite 2018 conference. The product itself was a set of camera effects driven by body / head / clothing neural segmentation on iOS, built on Unity, C# and Entitas.
Testing AR by waving a phone around does not scale. So we built a virtual pipeline: scenarios inside the Unity editor that approximated real physical conditions, letting effects be created and tested without leaving the editor, plus comfort tools for the designers. Later I brought the same previz thinking to Infarm, a small app to preview their vertical plant shelves inside a real venue before committing to it.
Some of the most demanding tooling I have built was for gallery art, working as the Unity simulation, tools and integration programmer on installations by artist Nikita Diakur. For DownOnly, a time-limited performative piece about falling, my core job was an asset pipeline (Unity preprocessor scripts) that pulled physical models straight from Cinema4D into Unity, porting joints and adding Fmod sounds, then produced the live artwork (mp4s, per-channel audio, glbs, gifs) on command to be sold on-chain. The simulations literally ran on a computer slowly pushed off a staircase until it fell and self-destructed, the rate driven by blockchain bids on downonly.xyz.
Autobahn pushed the same pipeline further: a continuous, autonomous traffic system of realistically simulated cars on a 20m-wide screen, where gallery visitors drive a real Fiat Multipla and a wheel-and-horn rig spawns cars falling from the sky. Earlier still, on the Tendaguru Museum project I handled the character controller for a documentary VR experience blending theatre, museum and interaction.
The same problem-solving moves between worlds. I built and maintain scrapers and Chrome extensions in Scrapy / Python that track changes in chemical regulations, feeding Google Sheets and Heroku. And for a legal discovery process worth over $500k I built a toolbelt of around ten Django web tools covering every step, coordinating with the client, a project manager and teams across the world to keep them current.
Not every build is enterprise. I conducted an orchestra of evil poachers with my own arm using an Oculus DK1 and Leap Motion, built a PHP web tool that prints control-scheme sheets for local playtest events, and rode the Pokemon GO craze with a little booking site for walking people's phones. Quick, weird, shipped.
Neural-net AR pipelines, regulatory scrapers, legal dashboards, gallery installations, VR gadgets. No single stack runs through it. What does is the instinct to walk into an unfamiliar domain, figure out what actually needs building, and build it so other people can move faster.
See the full tech grid, or tell me what is slowing your team down.
The same drive that ships software also organizes people. Across film festivals, guided history tours and nature hikes, the work has been about logistics, storytelling, and pulling strangers into a shared experience.
As part of Berlin's Kino Loop community I helped run three editions of a festival where people from around the world gather for a week or two and shoot short films in 24, 48 and 72 hour sprints. I owned the hospitality logistics, matching international participants with local hosts for free places to stay, plus managing payments, all through a complex semi-automated Google Sheet. I also directed and acted in some of the films.
I worked as a paid tour operator, learning a lot of history fast and then explaining it in an entertaining way while guiding public and private groups of up to 30 people through Berlin, Potsdam and the Sachsenhausen memorial. Keeping a group engaged, answering every question, and staying attentive the whole way is its own kind of live performance.
I have led more than 80 events, usually walks in nature across northeast Germany, almost always with a playful gimmick to get people out of their heads and push back against the loneliness epidemic. The first year I committed to a weekly event with a new concept every single time. It was a blast, and it is the clearest proof that I can design an experience and actually get people to show up for it.
Spreadsheets that house strangers, a memorial explained so it lands, a weekly hike with a fresh hook. The medium is people instead of pixels, but the job is identical: design something, handle the logistics, and bring others along for it.
See the full adventures grid, or tell me what you want to bring people together for.