State of Decay 3
This project is still under NDA, so everything below is deliberately genericised, no specific features named. It's my first open-world project, and a huge undertaking, with issues that can crop up in more places than you'd expect.
Movement & Transitions
A large part of my work centred on rotations and transitions, keeping motion smooth across a huge range of situations. Any jitter or hitch was mine to track down and sand away, with quaternions used throughout to avoid gimbal lock.
Gameplay footage courtesy of GameSpot.
Physics & Submergence
I implemented the game's submergence handling and contributed more broadly to the physics systems, alongside ongoing work nativising Blueprint logic into C++ for performance.
Engine Foundations
I also helped expand core Unreal Engine fundamentals for the team, including primary data assets for designers to build on, and made extensive use of ImGui for in-game debugging.
Input Handling
Other work included handling input and wiring it through into the physics systems, alongside a range of smaller supporting tasks.
Data-Driven Tuning
Most of the system's behaviour is exposed to designers through data rather than hardcoded in C++, so it can be iterated on without engineering involvement. Alongside that, I built debug tooling to visualise and tune behaviour live, which made tracking down exactly which part of the system was causing an unwanted result far faster than guesswork.
Broader Contributions
This has been the largest single piece of the project, but the work has grown well beyond it. Over three years I've also contributed to core physics and handling systems, a library of supporting gameplay assists, the runtime data and attribute systems those rely on, and a large in-editor debug and tuning tool used across the team, alongside other supporting systems that tie into the rest of the game. It adds up to hundreds of submitted changes across well over two hundred files, including native engine-level contributions as part of a broader pattern of nativisation work: converting higher-level logic into native C++ for performance.
This is active work for Undead Labs, so I'm keeping things vague until the NDA lifts, at which point a fuller write-up goes here. Happy to talk through the systems at a high level in the meantime.