coldwar0
coldwar1
coldwar6
coldwar4
coldwar3
coldwar5

Call of Duty: Black Ops - Cold War

My team at High Moon Studios was responsible for 4 of the Single Player levels that shipped, comprising roughly half of the campaign.  My work on Call of Duty: Black Ops - Cold War touched many disciplines - Houdini destruction simulation, in-engine destructibles, performance, and tools.  

During my time on the project, my first major task was setting up a simulation exporter to reduce the iteration time for VFX artists looking to get their destruction simulations from Houdini into the engine.  The tool exported the Houdini simulation into an animation file, imported that file into a headless Maya client, rigged each piece up with a bone (then optimized the bone-count where it could), saved the source file and then exported it to game data.  Written in a combination of Python, MEL, and VEX, the exporter simplified the process from one that took ten minutes and multiple softwares to a couple of button clicks.  

From there, I worked to stand up a simple C# / Python library capable of parsing our maps and asset database to enable quick queries about the usage of files throughout the game.  This allowed us to batch-create dynamic destructibles and physics objects in the hundreds with minimal work.  

My day-to-day also consisted of performance and memory monitoring, communicating with design and art teams about performance data in their levels, and working with other tech-artists to develop cost-effective solutions to help manage performance goals.

My Tasks

  • Worked across 4 campaign levels with the teams at High Moon Studios to develop content and streamline workflows.

  • Created tools and libraries to show top-down asset usage information among maps and across the game at large.

  • Helped integrate Houdini into VFX and Environment workflow by setting up shared digital assets and utilities and championing procedural asset production across disciplines.

  • Created a Houdini-to-game exporter, which greatly minimized the time FX artists spent getting their simulations into engine.

  • Utilized map-parsing libraries to batch create hundreds of destructible and dynamic objects to quickly populate the levels with interaction.

  • R&D'ed creative solutions using built-in dynamic and physics systems to create complex behaviors.

  • Monitored and reported changes in performance, and worked across departments to ensure our levels were delivering 60 fps in all moments.