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