Splash Damage is a AAA video game studio based in the London Borough of Bromley, that has developed titles such as Enemy Territory: Wolfenstein, Brink, Enemy Territory: Quake Wars, Dirty Bomb, and has also worked on critically acclaimed third-party studio titles such as Gears of War: Ultimate Edition, Gears of War 4, and more.
Senior Tools Programmer
2017-09-01 - 2019-10-31
Began work on an unannounced project and was tasked with developing a robust and reusable tool authoring framework for rapidly iterating and publishing versioned internal tooling.
Created a tool authoring framework and supporting build system configurations, for developing and deploying new user-facing tooling that could be published through any continuous integration system of choice (e.g. TeamCity, and Jenkins) using MSBuild as the automation framework. New builds would be made, versioned, and published to Perforce to be made available to the rest of the development team. The developed application frameworks provided support remote monitoring and crash reporting, so that new features could be published and crashes found by users in on the team could be addressed rapidly. This framework adopted C#, .NET Framework 4.7.1+, Windows Presentation Foundation (WPF) for desktop applications, and C++ with MSVC++ 2019 compiler toolchain for native applications that leveraged Chromium Embedded Framework for web UI rendering (e.g. Dirty Bomb launcher).
Extended the framework to support development and deployment of server-sided applications and Windows services, that could be deployed remotely from a build machine. This relied on Windows Management Instrumentation (WMI), and remotely accessing the Service Control Manager (SCM) of the target machine. Network shares would be created remotely for transferring newly built binaries with, and with the remote connectivity of the Service Control Manager (SCM), a new service could be installed that targeted the newly transferred binaries.
The tool authoring framework consists of a collection of libraries that provide managed implementations of third-party APIs, or frameworks for developing out-of-engine tooling with. This framework included native static libraries that leveraged open-source projects including FreeImage, Chromium Embedded Framework, libcurl, libtorrent, and Autodesk's FBX SDK. The native component for this framework made use of DLMalloc's memory allocator for managing memory pools and contiguous memory spaces used for separate purposes.
My responsibilities as a senior engineer consisted of developing out-of-engine tooling, build and automation systems for an unannounced IP, and completing various core-tech related tasks for internally maintained Unreal Engine 4 plugins that were shared between projects.
- Remotely controllable desktop application for managing a user's workspace, and enabling to build the game.
- Tooling developed with C# and C++ using a shared framework, and third-party libraries.
- Comprehensive wrappers for internally dependent infrastructure.
- Helix Swarm, Perforce, TeamCity, and more.
- User-facing applications with consistent styling and themes.
- Backend services with remote build deployment functionality.
Versioned Build Pipeline
- "Plug-n-Play" continuous integration build pipeline for any version controlled tooling project in the depot.
- Hassle-free binary versioning and publishing for any version controlled tooling project.
- Server-sided infrastructure tooling.
- Perforce pre-commit validation checks.
- Remote service deployment to target machines.
- Tooling for "remote personal builds" and build sanity checks.
- Integration with P4D triggers, and TeamCity "personal builds" mechanism.
- MSBuild powered build system for any version controlled tooling projects.
- Highly reusable build configurations and templates.
- "Stable" and "Latest" build pipelines for all toolings.
- QA validation process for new tooling binaries.
Unreal Engine 4 Build Pipelines
- Provided programming support for Unreal Engine 4 build pipelines.
- Binary and content validation configurations using BuildGraph.