As I guess it’s obvious I’m currently working at DICE, the Swedish game developer. We’re close to the release of Battlefield 1 and everyone at the office is excited and hyper active. These are good but tiring times.

Some months ago the company released the reveal trailer of the game:

and there you can see a lot of shots we’ve been working on during the last months. Yep, that’s correct, some of those assets takes months to be finished and presentable. The game will ship with a mix of real time cutscenes and prerendered ones.

We’re using Frostbite to do the render. Quite a complex software that is constantly evolving as the developers add new features, improve the render, speed up the loading times, … etc. And all that, while the artists keep working on their assets. Sometimes I wonder how the whole shebang doesn’t simply collapse so kudos to our production team.

This is not the first time I work with animation and CGI. When I joined the Cinematics group at Battlefield 1 I just assumed (wrongly) that applying the same production strategies might work well. The first thing that shocked me was how difficult is to keep a name convention in an environment as open as DICE. It took us a month to propagate the news to everyone involved. And that was just the begining:

Centralize the info

On a very small production you can control the progress with anything. Post-its? Sure. Excel? Sure. A whiteboard? Sure. It doesn’t really matter since everyone can spend a minuscule part of his time on keeping up to date with the production. But what do you do when there are several teams? What if those teams are working on a different continent? Well, after checking a little bit we realized that deploying Shotgun could help us organize the work better. And it did, but here comes the catch:

  • By adding Shotgun to the mix we were adding yet another task manager to the ones already in place at the office. No one likes to update 3 different systems just to report the managers that something is ready to go. And here, we’re talking about artists that have better ways of use their time than checking boxes on different applications.
  • No management system works without managers. This means that someone has to keep an eye on the platform itself, organize the production, assign the pipeline to the tasks, etc. It was then when I discovered how complex could be to hire new people (or reassign them) in a big company. If you’re going to do this, make sure that everybody understands that simply installing a software does not change a thing. And someone has to spend time in it every day.
  • Stick to it. Once in production and unless the situation is desperate, stick to it. You might realize that the software falls short in some areas. But remember that changing systems in the middle of a production is always a risky move (and will end in even more manual work)

Keeping the names consistent between companies is challenging

A cinematic at DICE is a combination of mocap and traditional animation. DICE has a small mocap studio in it, but it’s not prepared to do big shots, as the ones we have in the game. All this should be outsourced to companies that are especialized in this kind of work. At this point Shotgun was in place and configured, so some of the work was already there. But sadly some of the captures were pre-shotgun and we inherited the name convention by the Mocap studio. They used a pretty much by default numbering system, we use something a more ellaborate, with human handlers, sequence numbering, takes, … and this ends in this sort of conversations:

Director: I would like to review Scene 009.
Artist: On which episode?
Director: The one with the tank.
Artist: We have 2 episodes with tanks.
Director: …
Artist: smile
Developer: slams face against table

That’s completely unnecesary and even risky at the end of the production when everybody is tired.

Who turn my fire blue? Referencing run-time assets

One of the big differences with the movie bussiness is that you have to keep the movie as close as possible to the the looks of the game. The movies are in service of the game. And that means that you’ve to reference some of the content of the runtime. Usually this is fine, and everything works. Except that it doesn’t.

From time to time the developers add breaking changes, or big differences in the behavior of the code. Sometimes the art director will change the whole look of a level. Sometimes your previously nice and cozy fire will turn blue and you’ll not have a clue of why. Did someone changed the general render parameters? Is it a problem with the camera? Is the shader broken? When a part of the team is working in a different environment this changes could be difficult to track.
And keep in mind that the non-cinematics team was working using another set of tracking tools. Be ready for some heavy duty research.

And this brings a warm memory of a shot that kept changing time of the day during a couple of weeks, believe me, it’s no fun to light a shot when the sky is changing constantly.

Automation is king, but only if your QA is relentless

The moment I saw the schedule it was clear that doing this production by hand was out of the question. We needed as much automated processes as we could manage to deploy. At the end of the production we have built a “reasonable” infrastructure of rendering machines. It was able to streamline the whole production, end to end. From animation back into the game. Let me insist on this: there was an automated process that added the movies to the runtime. With this approach the teams working with the gameplay can verify that the tone is correct and the flow is working as intended. Again, remember that we were doing a game and the movies are in service of the gameplay.

But if you’ve read my previous points you know that things can go wrong. What if the characters are broken and the camera is just pointing at an empty space? And just to make that worse, the movies have reached the runtime and everybody is just staring blankly at the screen.

At this point I’m not sure this kind of issues can be handled automatically. You need a human there, and this person has to know the whole pipeline to be able to pinpoint where the problems are happening. In a way you’re as good as your QA is. So, as a pipeline developer, spend time with your QA, they’ll be happier and everybody will benefit from this. Speak with them, make their life as easy as you can manage.

Oh, and btw:

there you have a little bit of extra footage.