Marvel's Spider-Man is an open world superhero game developed by Insomniac Games. I joined the Gameplay Programming team in 2018 just before the game launched, and I immediately began fixing bugs for post-release patches.
Along with bugfixes to the main game, I also worked on the DLC, Spider-Man: The City that Never Sleeps, which was released in three chapters in late 2018. I supported the design, animation, VFX, and sound teams on all three updates, and I was the primary gameplay programmer working on the enemy/ally AI for the NPC Silver Sable.
Star Wars: Jedi Challenges is a phone-powered AR experience produced by Disney. I was on the team responsible for implementing the one-on-one Duel mode, which pits the player against iconic villains from the Star Wars franchise.
I was personally responsible for prototyping and implemening the combat systems for Duel, including blocking, dodging, and counterattacking the enemies. I worked closely with the combat designer to give him the systems he needed to create a variety of fun and interesting battles.
I also took on a support role within the team, authoring several tools to help speed up content creation workflows and helping the artists to trigger their effects.
An Evening on Capital Hell is a satirical bullet-hell-styled game created for Ludum Dare 40 in December 2017. It was my first Ludum Dare in several years and it was fuelled primarily by outrage at Public Law no. 115-97.
I also used this project as a testbed to integrate extremely light analytics: tracking which characters people chose, how many of them got to each of the endings, and average playtime.
Pindow is a tabbed favourites window for Unity.
While working on very data-driven games, I found myself wanting a favourites window for assets that I was searching for again and again. With that problem in mind, I created Pindow, a favourites window that supports drag-and-drop, quick tab creation, renaming, hiding, and deletion, and undo/redo support.
Pindow will be available on the Unity Asset Store in early 2018.
Graphing Window for Unity
In the middle of 2017 I began working on a tool for graphing velocity and acceleration data for tuning the impact thresholds in Star Wars: Jedi Challenges. We ended up not needing much from such a tool, but I decided to re-implement it on my own time and ended up adding a variety of enhancements.
The result is SimpleSample, an open-sourced graphing untility that supports multiple data sources with a number of controls to make examining real-time data easy from within the Unity Editor.
Osmo: Monster is an iPad app built in Unity that uses child's drawings to tell simple cartoon stories.
As the primary engineer on the second and third content updates for the app, I was responsible for implenting changes in existing gameplay systems to allow for new features such as branching narrative paths and cross-session drawing re-use.
Other tasks included expanding designer-facing tooling to give them the freedom to greatly expand the narrative content and optimising the app to make it performant on the min spec iPad minis.
PlaneSnake is a 3D snake-like game in which the player navigates a voxel cube eating fruit and avoiding walls + her own tail. Drag the screen to change direction, tap the edge of the screen to rotate the cube.
My procedural art (see "Procedural Image Generation in Go" below) is, I feel, best appreciated at scale. As I'm not a well-known fine artist, the easiest way to achieve this goal is to build my own gallery. It uses simple first-person controls to allow people to wander and gaze at my pictures at their intended sizes.
SPACEGAME Demo Level
This demo is a 2 minute test level for polishing systems and getting player feedback on the game I was working on for the first half of 2015. Much of the art comes from Oryx Design Lab, but all additional art (the plug puzzles), audio, and code is my own.
The main systems being tested are basic player movement, terminal/repair interactions, clarity of terminal/door lights, and general usability of the repair puzzles.
Repairing took me a little over a week to take from the basic idea to the current implementation. The ship repair puzzles can be generated with plugs having random or preset positions. The user experience is designed to be as intuitive and frictionless as possible. The puzzles themselves are also not very challenging; this is intentional for the test level. Nobody should be so stuck on one of the repairs that they are no longer able to make progress.
This level itself took me about one day to put together from the prefabs in the larger game.
Speculative Vendor Redesign
for Destiny 1
At the initial release of Bungie's game Destiny, players would rank up with different factions to unlock higher-level gear which would enable them to tackle endgame content. My proposal builds on the system to provide that path to endgame content along with investing the players further into the universe of Destiny and providing a clear roadmap for players to make informed choices about how to approach long-term goals.
I don't have the real-world data about how quickly players in Destiny are able to gain experience and level up, but in the doc I make estimates and use them to set specific targets for tuning the faction leveling system.
Procedural Image Generation in Go
Over the course of two weeks in June of 2014, I taught myself Google's Go language to implement an algorithm of my own design which fills an image with every colour in the 24-bit RGB colourspace. The trickiest parts were representing the RGB colours in a way which made it easy to determine which colours had and had not been used and addressing visual effects arising from specific implementation assumptions.
In August of 2015 I picked up the project again to abstract certain algorithm decisions to provide more flexibility, optimise the runtimes, and add the ability to seed images with photographs.