Technical Artist at EA

21 August 2024

preview
At Electronic Arts I was one of three technical artists within CREATE Animation, a group of animators primarily focused on cinematics. Small groups from our team were assigned on an ad hoc basis to provide short-term support to ongoing projects across the company. As a result, my responsibilities were centered around rapidly coming up to speed on new technology stacks and ensuring smooth transitions for my team members.


In my biggest project, I took ownership of a repurposed customizable animation picker tool for animating monsters in Dragon Age: The Veilguard. An animation picker is a 2d paper-doll overview of a 3d rig with convenient buttons for ergonomically selecting bones and controls without haveing to reposition the 3d viewport. It also serves as a way to spread out and simplify complicated sections of the rig like faces or hands.

Within the tech stack of Dragon Age: The Veilguard there existed a highly-developed animation picker specifically pre-built for humanoid rigs, but the artistic needs of that game centered many extremely detailed creature rigs such as dragons, creatures of the deep, and many-tentacled corrupted gods. In order to easily control such unique rigs the team required an animation picker that animators could build for themselves with their own paper doll background images and custom-defined buttons. My project was forked from a different animation picker in the company’s library which already contained support for creating custom buttons, but was restricted to a premade library of background images within a drop down menu.

My first task was to create a new interface for importing new images to an animation picker. This presented a unique problem with data management. It was important for artists to be able to export and share their custom pickers between team members, thus the image file would also have to travel with the picker data. The solution I chose was to embed the data of the background image into the picker file itself; my chief concern with this option was unnecessary bloat of the filesize for what would otherwise be a small json file, but ultimately I decided it was a small tradeoff for the most robust security against artists’ varying workspaces. This choice came with another side effect of altering the file format of the exported picker files, which were previously solely json-formatted data. Thus, it was important to also implement a check during file import to distinguish between old json-only files and new json-plus-image files and maintain backwards compatibility.

The animation picker also provided me with my most memorable troubleshooting and debugging challenge from my time at EA. One animator reported an issue wherein a control would be immediately deselected every time he tried to click on it. No matter what I did, I could not reproduce this issue as I tried to create as isolated of a situation as possible on my own machine. However, after later returning to the animator and observing him reproducing the bug in context I was able to pick up on the key element that his mouse moved slightly each time he clicked. Sure enough, this chain of events reproduced the bug every time: mouse-down, move the mouse any distance, mouse-up. Once I had identified this behavior as the culprit the context became clear; in my testing I was using a standard mouse for my pointer and carefully ensuring that I pressed only the mouse button whereas my animator was using a screen tablet for his pointer, which introduced many minute mouse movements every time he clicked. This was a deeply enlightening and entertaining experience where I learned a valuable lesson about user observation and the challenges of a remote studio environment versus in-person work.