Fortnite: Battle Royale is an online live service game featuring 100-player PvP matches as its primary game mode. Fortnite gameplay teams are staggered to work on alternating seasons; I worked on Season 18 in 2021 and Season 20 in 2022.
The first large feature I helped shepherd was the Season 18 War Effort. This is a featured that leveraged existing distributed aggregation & replication tech to allow players to vote (by donating in-game currency) for one of two items, the winner being automatically added to the loot pool. This same tech was also used to fund permanent upgrades to the map over the season such as turrets or mech drop stations.
This was an unweildy feature to build within the time frame, and we were plagued by issues getting the replication into a testable state. As such there were a number of issues that were discovered and addressed when the feature went live.
The second large feature I worked on was resurrection of the Season 10 B.R.U.T.E. mech for the end of the Season 18 war effort. The mech was implemented as a PlayerPawn, which makes it unique among Fortnite vehicles and presented additional challenges when trying to update it for the modern version of the game. It was nearly cut due to issues on low-end platforms, but it was made stable in the very last build for the patch.
Marvel's Spider-Man: Miles Morales is the sequel to Marvel's Spider-Man, and continues in the open world webslinger gameplay. This title adds new powers to the hero like bioelectricity and stealth
My primary responsibilities in the game were the final boss fight with The Tinkerer and implementing accessibility systems across the game. I personally implemented controller button swapping and accessibility highlights, and I was involved in a huge number of smaller updates and fixes as the game went through production into polish and release.
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.