Portfolio

These are some of the projects and productions I have worked and can share publicly.

Production Projects

Projects that have been used or are currently being used in live productions.

Realtime compute heightmap stamps

Leveraged compute shaders to create realtime heightmap stamps of any size (and with full TRS), integrating in to the existing worldbuilding systems in the project, and supporting stamps seamlessly covering multiple terrains of different sizes and heightmap dimensions. (The update delay in video is caused by additional systems in the project)

Dynamic environment object spawning cost

Created a system for calculating the per-meter cost of a given object spawner, and dynamically adjusting its settings in relation to other object spawners so the total cost would be bellow a defined maximum cost. This allowed the same spawners to be used on mobile and desktop platforms without any manual tuning just by changing the maximum cost, and didn’t require any manual asset setup.

Smart Library Unity Plugin

A window for creating collections of assets for easy access without having to navigate the projects files. Easy workflows and seamless integration with the editor to avoid cogitative overhead. Fully custom thumbnail generation and management system. Advanced rules system supporting scopes and negative operators. Custom undo system tied in to Unity’s, for saving and deleting collection files.

Supported since release with 1000+ sales and a 5 star rating, providing support, and listening to user feedback to implement new features.
Learn More

Environment Data Spatial Query

Designed a query engine for environment data in a scene, utilizing a modified spatial partition tree. It allows quickly finding rocks, trees, bird perches, and more at runtime or in editor, for use in FX and AI. And has a window for debugging both the data, and queries, visualizing the data in the scene. Speed of development was a priority of the project over just performance.

LLM service integration with Unity world generation

Contracted to integrate an LLM service in to the Unity editor and runtime to leverage an exiting world generation system to generate scenes based on text prompts. This involved optimizing the data and methodology used with the LMM to ensure fast response times, and parsing the response to replace sections of the text in the UI with controls depending on the context for easier usability.

Garden Island Prototype

A small prototype made over 3 weeks in Unity, where I created all assets and code. My goal with the project was to bring slightly beyond gray boxes and feel more like a game. It was heavily inspired by Viva Pinata, it has planting and watering vegetation, animals appearing on the island when requirements were met, and changing from ‘visit’ to ‘resident’ once they ate certain plants. Once a ‘resident’ they would continue to eat plants over time to produce goods that could be collected for money.

Learn More

Layer stack

Created a layer stack for composing height maps similar to photo editing programs. It used compute shaders, command buffers, and other to process the layers in a performant manner.

Features multiple types of layers (procedural noise, texture, solid color, etc.), groups of layers, blending modes between layers (and groups of layers), filters (levels, invert, curve, etc.), a live preview of the current layer and of all the layers. Layer stacks can be saved as assets, and referenced in layers, allowing for stacks to be nested and reused.

River mesh generation and flow painting

Designed a tool for generating a river mesh along a spline to replace an existing solution that we were running in to performance and workflow issues with. It had to support the material and features of the existing solution, while having easier to use workflows. Beyond the editor tooling. I also had to read through obfuscated code to understand the correct values and channels that were used to affect flow direction and speed so the new tool could use them correctly.

Non-production Projects

Experiments, prototypes, research, or just WIP projects that are not production ready.

Standalone vegetation mesh generation application

My own WIP standalone application for creating vegetation models. The generation needs to happen in realtime as users change values, and complex nested data is used, so profiling and optimizing the structure have been key factors in the project.
It also features gizmo controls, and custom animation/value curve system.
It uses a WPF style framework for the UI (AvaloniaUI) and the Godot engine for 3D rendering and build pipeline.

ScriptableObject variants

An experiment creating ScriptableObject Variants. It features overriding properties from inherited assets, locking properties so they could not be edited in derived assets, context menu options for applying and reverting overrides. Works with default and custom editors and works with both IMGUI and UIToolkit. An important aspect is that it is fully data driven, meaning that making changes to assets in code would also apply and respect the overrides and inheritance, without any additional work and doesn’t require being edited from an inspector.

Stride engine editor UI design mockup

A mockup of a new UI/UX for the editor of the Stride game engine done in Figma. Took existing design elements and workflows present in the engine and integrated them in and modified them, along with designing new UX, and taking lessons from other engines both on what works and where pain points are. I hope further iterate on it in the future, as I feel like there is still lots that could be improved.

Inspector search

This was a small experiment to add some form of search to the inspector in Unity. I wanted to work with custom controls from custom editors, this meant I couldn’t just search the data. The difficulty is that most rendering was done with Immediate mode GUI. So to be able to perform a search, I made heavy use of C# reflection to get the raw draw commands from a single fragile end point in Unity, which contained the draw area, along with the text info, which I could then use to draw overlays on the unwanted controls via the newer retained mode UI (UIToolkit).

Art experimenting

Some experimenting with my own art pipeline and methods, and using Blender, Substance Designer, and Unreal Engine.