Game Designer and Engineer
Let's! Revolution!
Unannounced Tactics RPG
Stacks On Stacks (On Stacks)
Sature
Jam Games + Side Projects
Teaching Experience
Diorama Detective
I'm a game developer with 10+ years in the industry. I have worked on three published games, two of which I self-published as an indie developer. I have experience developing for console, mobile, and PC. I have worked on small to mid-sized teams.
I have deep expertise working in Unity. My specialties are gameplay programming and rapid prototyping. I thrive at the intersection of engineering and design, developing tunable systems to sculpt a player's experience.
A Trait was a powerful scriptable object asset type that was remixed and modified to create all of the passives and abilities in the editor.
Conditionals in the dialogue system allow character barks to reflect game state, making players feel "seen" by the game.
Miro, a virtual whiteboard, was used to plan the initial protoype of the character classes.
A small crop of a much larger flow chart brainstorming design possibilities for the game's meta progression.
Three stages of the UI I implemented: the rough prototype mockup, a first pass in preproduction, and the game's final redesign.
A* plots character movement through the environment (red), then raycasts are used to help clean up the final route to be smoother (blue).
A map editor automatically detects and styles edges of tiles appropriately.
Custom shaders drive the stylized and colorful look of the game. Here they are applied to primitives with no textures. Each environment has data for its palette, fog density, and other settings that can easily be altered in the editor to create a unique look.
A shader draws toon highlights on glass windows based on the view direction. Distress effect is added based on Voronoi noise.
Waving grass is squashed by characters. Characters remain visible behind walls with a dithering effect.
Created spreadsheet calculators that can project stats advanced to any given level and simulate damage calculations between creatures.
Individual creatures exist on a spectrum between four possible archetype poles.
Versus mode requires running two separate game systems simultaneously that can interact.
Data for different clothing items was stored using Scriptable Objects.
Leaderboard data from Stadia, Steam, and Switch is all displayed in the same board UI.
A pinging ring indicates when a player's tower clears the height goal, followed by confetti and juicy UI effects to celebrate their win.
On the world map, warp zones levels have a distorting effect applied to indicate their other dimensionality.
This snappy effect indicates a brick's drop location when it first spawns.
A dynamic mesh fills the bounds of an aquarium with water that can be tilted, tipped, and emptied.
The tutorial uses gates that ensure the player learns particular actions.
Early versions of the game featured a featureless white platform. Players would frequently place bricks at the far edge, a poor strategy. Adding a texture to the platform which graphically emphasized the platform's borders and center resulted in the desired behavior of more players placing bricks in the middle of the platform.
Programming the menu interface required support for a wide range of match options.
Sature's tutorials use miniature boards and gated step-by-step interactive mechanics to ensure player learning.
A togglable display of a ring indicating the relative hue of each piece on the color wheel helps increase color blind accessibility.
As an adjunct instructor at Indiana University I have taught the following courses in the Game Design program:
A slide from a lecture on level design basics.
My experience teaching has taught me to be a better leader and communicator. Over the years I have mentored students in building hundreds of different types of games -- everything from FPSs to Tamagotchi-like creature sims. This has helped me learn about topics and toolsets far broader than the ones I use in my own practice.
The player casts magic to loop the enemy archer's shooting behavior, then pushes them upwards to break a box and reveal a key.