\(\DeclareMathOperator*{\argmax}{arg\,max}\) \(\DeclareMathOperator*{\argmin}{arg\,min}\) Orfeas | Ubisoft

Six Months at Ubisoft


The story of my internship for the Anvil team in Paris.

The foot of the mountain


I worked as a Tools Programming Assistant for the video game production company Ubisoft from the 19th of February to the 16th of August 2024. I collaborated with the Anvil Pipeline team in Paris on tasks related to character animation.

I have all of Anvil Paris to thank for showing me the ropes. Thank you especially to my close team, made of the excellent Thibaud Chominot, Norbert Redon, and my manager Alexandre Trachez for teaching me and lifting my sails.

The bullet points


My work focused on four areas:

  • Improving the animation graph editor,
  • Kicking off a new data sharing feature,
  • Increasing user visibility with telemetry,
  • Documenting animation engine technology.

With respective impacts:

  • Lifting pain points for animators and developers by fixing visual glitches, adding user settings, restoring the crash reporting system, and unblocking changelists.
  • Cutting down pre-production costs by allowing more data to be shared between productions.
  • Empowering producers to make informed decisions about whether to deprecate or integrate experimental features by analyzing internal user data.
  • Facilitating the integration of new animation technology into the engine, as well as future research endeavors, by making mathematical methods more accessible.

Working on a game engine


The best part about working on a game engine is the sheer variety of areas of technical expertise. There is just so much that comes together to make the magic happen. I would walk around the studio while waiting for the engine to compile and chat with anyone I came across, leading to many memorable discussions.

A typical week on a job is spent getting familiar with some subsystem by reading documentation, exploring the public interface, and trying to pin down exactly what component of the subsystem led to the issue. This means launching a suite of exploration and debugging tools and tracking changes on the file versioning system. Once you design a solution, your potential for destruction is happily mitigated by an automatic verification system and a manual code review.

As a non-expert, I would spend the bulk of my time reviewing my own code. Once I had explored a few different solutions to a problem, I would take a metaphorical broom and rearrange my code into the structure implied by the program. If I was lucky, I could reduce a patch to a single line of code. I realized early on that very few of my issues were original and that someone had certainly spent some time in the past dealing with them. This is where the experience of senior programmers became invaluable, as they understood the implications of my changes to a much deeper degree.

Speaking of knowledge sharing, once a week a member of Anvil Pipeline prepares a presentation on their topic of choice. Thanks to this tradition I gained awareness of different topics in computer science that I hadn’t learned before, such as custom memory allocation strategies and templating languages. My own presentation on entropy encoding ended up leading to a deep dive into the field of compression, which further led to my manager opening a research-adjacent door for me by placing me in contact with developers at Ubisoft La Forge. This was profoundly impactful and potentially an inflection point for me in my career, so I am extremely grateful for his supervision which saw the best in me

On a fun note, my first ever game jam also took place at Ubisoft. We were put in heterogenous groups of six and tasked with creating an innovative gameplay experience under a common artistic theme in three days. I got to compose an original soundtrack and design sounds, which I had only ever done once for my previous game. It was so exciting that I will almost certainly sign up for more game jams in the future.

How I grew from the experience


There were two events during my time at Ubisoft that threw me off my balance. I had not quite realized how much pride I had in my work in general until I received my first piece of feedback on some code that I had written for the initiative on telemetry. As my manager was explaining why my design would benefit from an additional level of indirection, I felt a rush of embarrassment. Although I had no pretense of expertise, it was personally important for me to do a good job and I felt that I had failed.

Another low point was during a gameplay reveal, and negative online comments from online personalities that I used to enjoy watching seemed be rolling in from all directions. Even though my work had only been indirectly related to the game, I felt personally responsible for how the game was received. To make matters worse, in the weeks that followed I could not stop myself from reading critical discussion threads, magazine articles, and even a petition (!) about the game.

As I reflected on my reactions and searched for answers, I came to understand that it was primarily a sign that I was lacking self-confidence and was compensating with my ego. I learned that I had to base my confidence not on my work and my skills but on the internal belief that I am in some sense a good person. As for obsessing over gamers’ reactions to the reveal trailer, I learned that my brain was searching for some sort of confirmation of coherence over ground truth: that the game truly was either woke or racist propaganda and that all their suspicions were true.

The outcome of my time reflecting was that I took on the feedback on my later documentation work without the rush of embarrassment that had accompanied previous critiques. Additionally, the online comments do not affect me as they used to, which is a huge relief.

My next steps


I will return to EPFL to take another year of classes. After that, my aim is to write a master’s thesis on the topic of character animation within a research institute for video game technology. To increase my chances of anything like that happening, I will have to produce some original research in the area on my own, and perhaps learn to speak much better Chinese. Here’s what’s on the program for my classes.

  1. Ergodic theory,
  2. Measure theory,
  3. Advanced algorithms,
  4. Geometric computing,
  5. Theory of stochastic calculus.

I have a gut feeling that probabilistic methods will have surprising implications for video game technology despite the deterministic branch prediction paradigm. Even more exciting are the inverse design methods developed in the geometric computing laboratory that have untapped potential for animation tooling. In all, my experience at Ubisoft has crystallized the idea in my brain that I would like to research and develop technologies for even more awesome games.

Acknowledgements


Thank you to Nicolas Corre for welcoming me onto the Anvil Pipeline team. Thank you to Florentin Mace-Roussel for dragging me to the bouldering gym and pushing me to surpass myself. Thank you to Alexis Feldmar and the rest of the lightsaber club for the epic duels. Thank you to Nicolas Sablon for teaching me to find deep solutions to deep problems. Thank you to the team of animators next door for showing me the bigger picture of my work. Thank you to my fellow interns Sarah Séguié, Tristan Loumont, and Elise Lei for joining me on the ride. Thank you to Gillian Basso, Dayan Raho, Bastien Gaultier, and Jean-Michel Lekston for believing in me and hiring me. A special thank you to Alexandre Trachez for his masterful guidance.

Thank you, Anvil Pipeline and Ubisoft!

Orfeas

8th August 2024



Last edited 14/08/2024