Due Process

Due Process is a 5v5 tactical FPS with procedurally generated maps. Each round, players are presented with a new level and given an overhead view of it to plan their approach before heading into the firefight. The attacking team must breach a building to defuse a bomb armed by the defending team. With a limited pool of resources to utilize and many factors to consider, strategy and teamwork are essential for victory.

I worked on this project as a software engineer at Giant Enemy Crab, contributing to the client, server, and backend for the game. I joined the team in the game’s alpha phase, helped ship it a year and a half later, and then supported the live service for 3 years after launch.

My Contributions

  • Implemented gameplay and quality of life features in the Unity (C#) client and server project

  • Spearheaded technical design and implementation of backend service features related to cosmetics, matchmaking, meta-progression, social interaction, and more

  • Performed DevOps tasks such as provisioning and updating services and infrastructure in AWS

  • Optimized AWS resource usage to reduce the company’s monthly payment by about 80%

  • Designed DynamoDB schemas for multiple features, accounting for scalability and performance

  • Utilized CloudWatch to debug elusive service issues and ensure a stable end user experience

  • Refactored parts of the Unity and backend codebases for bug fixes and feature development

  • Integrated with 3rd party providers such as Steam, Easy Anti-Cheat, and Multiplay


Notable Backend Projects


Cosmetics and Battle Passes

Skills: Backend Development, TypeScript, DynamoDB, S3, SQS, Jest, Database Design, Distributed Systems, API Design

This feature set provides players with an avenue of self-expression within the game, as well as a type of progression and extrinsic reward for playing the game. Player cosmetics allowed players to equip various types of clothing and hairstyles to their in-game characters, while the battle pass system provided a way for players to earn cosmetics by playing matches. I took on a leading role in the technical design and implementation of these features.

My contributions

  • Collaborated with the CEO/creative director to develop and solidify the specification

  • Designed a data schema for representing customization entities, entitlements, and battle pass data

  • Created corresponding DynamoDB schemas to store entitlements and battle pass progress, taking into account scalability, performance, maintainability, and possibilities for future expansion

  • Wrote a specification document to communicate the implementation plan to the rest of the team

  • Consulted with other stakeholders on the team, including artists, quality assurance, and other engineers, integrating their feedback into the plan

  • Defined an API for communicating player customization, battle pass, and post-match data to clients and servers

  • Implemented backend requirements while other team members followed my specification and utilized my backend API to deliver the client and game server components


Ranked Game Mode Overhaul

Skills: Backend Development, TypeScript, DynamoDB, Database Design, Distributed Systems, API Design, Game Design

This project aimed to enhance the player ranked experience by introducing more fanfare and transparency to the existing ranked system. In this update, I supported the addition of a post-match report that shows matchmaking rating (MMR) gains or losses and a rank up or rank down animation, if applicable.

my contributions

  • Proactively identified and fixed issues with the matchmaking rating (MMR) calculation, resulting in more predictable and consistent MMR changes for players

  • Developed further changes to the MMR formula, including individual performance factors and handling for placement matches when the player’s skill is relatively unknown

  • Created a script to test potential changes to the MMR calculation, enabling simulation of scenarios that would otherwise take many real games to evaluate

  • Established a system for recording match data for each player, including information about MMR changes for evaluating the system’s performance in production

  • Extended the post-match data API to include rank update and placement match information

  • Fixed bugs allowing players to dodge MMR losses and instituted a match abandonment penalty system

  • Refactored the post-match player update flow on the backend to accommodate these changes


Notable Gameplay Projects


Rollback Netcode Refactor

Skills: Unity, C#, Gameplay Programming, Networked Multiplayer, 3D Math, Unity Editor Extensions, Unity Animators

In order to provide players with a rock-solid gameplay experience, the team embarked on a refactor of the gameplay code to introduce rollback netcode within a custom entity component system (ECS) architecture.

My contributions

  • Devised a solution for generating game entity IDs and preventing ID collisions when new levels are loaded, a crucial contribution enabling the ECS architecture to work for our game

  • Added systems for serializing and simulating animation states, which was essential for implementing rollbacks for hit registration and synchronizing animation states across clients

  • Implemented a system for playing bespoke death animations based on how the player died, replacing the less performant physics-based ragdolls and facilitating synchronization of animations

  • Created Unity editor extensions to help the team’s animator integrate his work with the new animation systems

  • Rewrote a variety of legacy gameplay features within the new ECS architecture

    • Weapon animations, aim down sights (ADS), and sniper scopes

    • Parts of inventory management related to handling ammunition and special equipment types

    • Several types of grenades and throwable equipment

    • Wall and door charges (explosives used for breaching)


Quality of Life Gameplay Features

Skills: Unity, C#, Gameplay Programming, Networked Multiplayer, Unity Animators

The launch of Due Process saw an influx of new players enjoying the game. However, as the team discovered through observations and player feedback, some unique aspects of the game created pain points, particularly for new players. I implemented several new gameplay features as part of the effort to ease those pain points.

My Contributions

  • Attacker spawn turret: an automated turret mounted to the armored truck that serves as the attacker team spawn point, preventing defending players from shooting at the spawn point for cheap damage or kills

  • Attacker spawn trophy system: an automated system mounted to the attacker spawn truck that neutralizes enemy projectiles (e.g. grenades) to prevent cheap kills via projectiles thrown at the attacker spawn

  • Auto-load: a feature forcing players to automatically load their weapon if they have ammunition in their inventory and the weapon is not loaded, reducing instances of players trying to use an unloaded weapon in battle

  • Auto-equip: a system for automatically equipping defending players with a loadout if they don’t pick out any equipment before the round begins

  • Hit flash and flinch damage indicators: an arcade-style hit flash and a flinch animation acting as feedback to help players see when their shots are registered on enemies

  • Attacker retreat: a feature giving attackers the option to retreat to the spawn truck and end the round early, rather than hiding and waiting out the round timer