Work Experience
Senior Audio Software Engineer
Interleave Creative May 2021 – Nov 2024
Vancouver, British Columbia, Canada
Designed and implemented various audio and dialogue playback systems for a variety of features on AA and AAA titles built in Unreal Engine 4 and 5.
Some of these features include:
Radio: A system which manages radio segments, plays them back in a smart random fashion, and synchronizes audio emitters to playback in sync. Data driven, with radio segments and playback rules contained in datatables.
Prop Physics: Audio playback for interactable objects in the game. Facilitates realistic and collision sounds with rolling and sliding support.
Automated Foley Tagging: Animation modifiers which automatically applies Footsteps and Body Movements foley tags at appropriate animation frames, by inspecting bone transforms.
Limited Sound Category Playback: A system which allows users to define sound categories, and limit the number of concurrent playing sounds within them. For example, users can use this system to limit the total number of footstep sounds playing at the same time, to help clarify the game’s mix as well as help keep the sound engine’s performance in check.
Dialogue Playback Management: A priority based system which limits the number of dialogue lines allowed to play at any given time, as well as prevent a single character from speaking more than one line at once. (A problem which can occur when multiple systems attempt to play dialogue at the same time, such as Barks, Conversations and Cutscenes.)
Mixing Tools: Repurposed source code of an existing Wwise audio DSP plugin for the project’s specific needs. Specifically, modified the Wwise Meter plugin to output different RTPCs based on Ak States.
Senior Software Engineer
Gasket Games Corp May 2019 – Apr 2021
Vancouver, British Columbia, Canada
Built core gameplay systems and artist tools for a strategic turn-based online competitive game in Unreal Engine 4, Warhammer Age of Sigmar: Storm Ground.
Hexagon Grid: A foundational Hexagonal Grid system which functions as the backbone of the game. Includes features such as pathfinding, API for queries about the state of the Grid and editor tools.
Asset Loading: Wrote an extension of the Unreal Engine Asset Manager to help define and preload asset bundles to improve loading times.
Dynamic Lighting: A system which allows users to define and time dramatic lighting transitions when a character uses certain abilities.
Mentoring: Guided less experienced software engineers through code reviews and communicated best practices in weekly meetings.
Programmer
Relic Entertainment Jan 2018 – Apr 2019
Vancouver, British Columbia, Canada
Core systems programmer, part of a major engine refactoring effort, built tools and optimized game loading times within an in-house game engine for
Age of Empires 4.
Profiling Tools: Profiling macros to capture function execution times and export data to an interactive tool with GUI to highlight and explore costly functions.
Optimizing Map Loading Times: Inspected and profiled existing code to improve the runtime of map generation steps, by pre-allocating memory chunks for reuse, to reduce the number of memory allocation requests, as well as ensuring that assets which were already loaded from previous matches were kept in memory, to avoid costly reloading.
Destructible Meshes: Tool-side pipeline for destructible buildings in AoE4.
Major Engine Refactoring: Refactored existing features, which were undocumented and their authors no longer at the company, to use entity-component patterns. This was a very good exercise in learning to read and debug code.
Software Engineer
Capcom Game Studio Vancouver Aug 2015 – Jan 2018
Vancouver, British Columbia, Canada
Implemented gameplay systems to support character combat, damage and hit reactions, AI and boss battles in Unreal Engine 4.
Character Combat Movesets: Created a visual graph-based editor which allowed designers to script character movesets. Users defined character animations and damage properties for on an attack node, and then linked together nodes connected by valid button inputs to create attack chains.
Damage and Hit Reactions: A system which allows designers to conditionally select reaction animations based on damage types and amounts.
AI: Several custom behavior tree nodes in UE4 to support new AI boss behaviors.
Education
University of Waterloo
Bachelor of Computer Science Sept 2010 – June 2015
Waterloo, Ontario, Canada
Graduated with Distinction, with a minor in Japanese language.
Relevant Courses:
Realtime Programming
Graphics
Algorithms
Artificial Intelligence