My Time on FIFA 18

July 2017 - May 2018

This was the beginning of my tech art journey and where I fell in love with being a tech artist

My first task

My first task was to work within EA’s Ignite framework (also known as GameChanger) to move and assign assets from one place to another under the correct names. This would look something like adding the correct jerseys and kits into the game while removing ones that are no longer valid for the given year’s roster. Ignite was used to support previous generation hardware version of titles and online titles, referred to as the downstreaming process.

I learned many things regarding how a given character is put together before they show up on screen.

Given this was a World Cup year, we also needed to be at full production managing rosters for an additional in-between year title.

Artist support

Very quickly I took to artist support and recognized the importance of solid documentation. With a team as large as the Artworks team was at the time, undocumented tribal knowledge is something that would grind production to a halt when artists are blocked.

I spent a significant portion of my time documenting bug fixes and workarounds for tools as I learned them, and in turn the artists started passing the documentation to each other as well.

I also took to supporting outsourcing tech art teams in Mexico and India, deploying builds to them through zip files.

Tools support

Very quickly I began to be tasked with updating, supporting, and creating tools in Maya. Among the things I’ve done was updating Maya from 2015 to 2017. Many of the tools would not load in the newer version of Maya but ultimately it came down to reconciling the differences between PySide and PyQt.

I was also tasked with building a tool to detect non-manifold geometry (more than two faces on one edge) because the newer versions of Frostbite no longer tolerated non-manifold geometry. This was done in Mel inside Maya and highlighted non-manifold faces for the user so the user can correct them.

I was also tasked with investigating the performance of a Photoshop tool where it used to take seconds to run and suddenly now it takes 20 minutes.

This script was meant to rename folders and layers then flatten layers together.

Upon further investigation it was due to a change where the author was trying to catch cases where there are pixels off screen resulting in textures that aren’t in resolutions that are power of two. The change was trying to loop through each group, each folder, for each layer, and crop them. However, this was creating an N cubed algorithm and was why the performance of the tool has dropped so drastically.

In the end I fixed this by reverting the above fix, applying a crop to the whole image, and sent a change request to the Frostbite team so they can handle textures that aren’t powers of two. This made sense because that should be an engine side detection and not left for digital content creation tools. Otherwise textures authored from elsewhere could still have this issue.

With my changes, the script went back to run time of around 20 seconds.

Frostbite

I also became responsible for testing new Frostbite versions before our team accepts the changes. I would test the blueprint system, editor game view, and general usability of the new versions before it gets rolled out to the team at large. In this process I also learned to write python scripts (IronPython) inside Frostbite to match character faces and kits with the appropriate names that the game is expecting.

This is also my entry point into performance monitoring. I learned that Pix is a powerful tool to capture performance data, and we would use Pix and an excel script to generate weekly performance reports to send to the engineering team.

Content Validation

One of the final things I worked on at FIFA was a content validation tool. Typically before the artist submits a piece of content they would be vetted for possibility of a build break. However, we did not have a method in place to detect if the content submitted was over the texture resolution budget, vertex count budget, and many other tests.

I collaborated on this tool with Henson Tan, and it was a combination of javascript and python. It would run headlessly on a build machine on a nightly basis based on the task scheduler and would send back reports of content budget healthiness. Unfortunately my time at FIFA ended prior to completion and it is unknown if this system was carried forward by people after.