I recently had the opportunity to tour Avalanche Software, a subsidiary of Disney Interactive Studio, located in Salt Lake City, Utah. We weren’t allowed any recording or photography equipment. However, we also didn’t sign a non-disclosure, so I’ll do my best to describe the experience and the technology here.
It was a great chance to peek inside of one of the regions top video game shops! I’m quite grateful to John Blackburn, Avalanche CEO, the three employees to gave presentations, and Jonathan Douglas for setting up the tour.
As the tour began, our group was ushered into a presentation / brainstorming room. What looked like wallpaper in the dark, I quickly recognized in light as white-board drawings, charts, art, and various scribbles completely around the room. All walls had been painted with some type of white-board material, and this room seemed to be the inner brainstorming sanctum. At the front of the room was a large tv that was hooked up to as many consoles that would fit in the entertainment center.
Our guide explained, as he started into a PowerPoint presentation, that this was a standard technology summary they give to Disney Exec’s when they drop by to check out the studio.
Some of their most important assets are custom software that allows the animators and designers to do their jobs more efficiently. Their custom code-base includes three pieces of software:
- Animation scripting (explained in-depth further down)
- Source / Asset versioning and management: Each graphic asset (skins, shaders, etc..) is managed in a version controlled repository. This software will automatically convert assets into compatible sizes and formats for different platforms that each game will be released on. For example: Artist A will fine tune an object skin for the highest PC settings, check it into the software, and it will automatically generate optimized versions for PS3, XBox360, DS, etc…
- Live updating to test consoles : sends state information, polygon updates to the target testing console LIVE from the programming environment. A programmer updates an animation script tree, or a designer adjusts the size of a building in Maya, and it is reflected in real-time on the test console.
Many of their codebases contain 70+ gigs during development. Even still, game code typicaly has the smallest line number of their repos. The development tools listed above contain around 2.5 million lines of code, engine code, a few hundred thousand, and game code, thousands. Engine code is typically reused game to game.
Lead AI Programmer Demonstration
The awesomeness of this man’s office was only matched by the awesomeness of the view from his window! Inside, we were treated to a demonstration of the animation scripting program used at Avalanche. This custom software drives the animation of all characters in a game.
In the olden days, we were told, to make a character idle (animation while not in use), the programmers would have to code something similar to this:
a = random integer (1->5)
case 1: pace()
case 2: heavy_sigh()
case 3: look_at_phone()
The main point being that each animation defined by the animation department would need to be explicitly programmed into the game code. With the scripting program, it is much simpler:
Idling behavior is then abstracted to the animation tree, with one of the branches being idleing. These animation trees contained all defined behavior for particular classes of in game objects. The beauty of these animation trees is that the defined behavior can be called and applied to any object. For example: Game player presses the [A] button, which means Jump! This button is mapped to a particular action, or a branch of the animation tree. The animation is then executed by the game engine on the target object. Several seconds later, a NPC has caught on to you and is in hot pursuit. The AI the calls the same branch of the animation tree on the NPC to make it jump. One action, one code base, infinite uses.
Also, every desk contained a deck of Magic cards. Just thought I’d throw that out.
World designer/ Engineer Demonstration
Our next stop was the office of a game world designer. When most people thing of working on video games, his office is what they imagine. Not counting toys and other gadgets, we were immediately greeted with three large monitors on his desk. One held a grey-scale level of an upcoming game in Maya, another, a camera action graphical scripting program that resembled electrical schematics, and the last, a real-time in-game update of the sum of both other monitors.
In this environment, the real-time update system really shined through. He explained that in the past, it could take between 5-15 minutes to compile, and then export a level he was working on to the console for testing, which might only last a few seconds. This was a serious hamper on productivity, not only in the sheer time wasted, but also because it would break the momentum of the designer.
In demoing their software, he showed us a level that was running on his XBox360, and while it was running, adjusted the width of one of the buildings in Maya. The building adjusted real-time on the XBox. I can only imagine what a useful innovation/tool that would be!
Near the end of the tour, we had a Q&A session with Avalanche Software’s CEO, John Blackburn. The following is my best memory of the questions asked, as well as his answers. We were not allowed to have any recording (or photography) equipment, so the following is based off of my notes. Please keep in mind that my memory may not be perfect, but the following is my best recollection:
Do you have to worry about DRM or is that something that is handled higher up?
Yes. DRM is something that Disney enforces, and we as a game studio absolutely must do to stay alive. Disney invests so much money now that it is essential buisness wise to protect their assets. Back in the day our first contract was 250,000 to produce a game — it was a SNES platformer. We would produce the game for the target platform, and then the client would do the advertising and the distribution. The initial investment in the game was so low that there was some tolerance in the bottom line to piracy. The game we are currently working on from Disney has a budget of 25 million dollars. We/they have to do everything possible to maximize sales and minimize losses to get a return on their investment.
We are lucky that we don’t have to worry so much about the implementation of DRM, that is usually handled by the platform or how its distributed. If we would want to distribute something through Steam, they have their own system for that. Each console has their own system for that.
Do you consider indie companies as competition?
No. We started out pretty indie ourselves but have grown to a point that we would not consider a solo game developer or even and indie studio as competition. Think about it this way: and indie studio can work for a few years on a game and produce what some would consider a smash-hit, and for them, it definitely is a smash hit. But we have to think in terms of scale and volume. Their smash hit might bring in a few hundred thousand dollars or even a couple million dollars. That’s a huge amount of money for an individual, but we operate on a completely different scale where a couple million dollars doesn’t really move the needle one way or another for us.
One area where that is not true is in mobile development. Someone can, in his garage, produce a mobile game that consists of one or two horizontal levels, a few dozen sprite assets, and a couple buttons to push. I mean, you can crank something like that out and have it pretty polished in a few weeks if you know what you’re doing. Big game studios on the other hand don’t have an advantage there. You can sink in loads of development time and the brightest talent and still get something on par with something that someone wrote in their garage. Also, the revenue is just not there in mobile to make it worth the time of a larger studio. You could make a few hundred thousand, or a million bucks — but it just doesn’t generate the same return on investment.
What is the current state of the game industry?
Honestly, the industry is broken. The business model is seriously broken. We have gone through the same change in the last few years that Hollywood has gone through. In the golden age of cinema, there were lots of studios all competing with one another, and movies were cheap enough to produce that one studio could crank out dozens and dozens a year, and basically take a gamble on what would make money and what wouldn’t. As movie budgets increased, the studios became less and less tolerant to risk. If you have a million dollar movie flop, that going to hurt. If you have a 30 million movie flop, you’ve just used up your entire war-chest and are now out of money and out of business. Movies became larger and larger, and therefore more and more predictable. Studios have to almost guarantee that it will make money before they will even begin the process.
The video game industry is now in the same boat. Take EA for example, back in the day they were a power house and cranked out games. As games got more and more expensive to produce, the studios became less and less tolerant to risk. If you sink 20 million into a game, that one flop may have just cost you the entire company. What does EA do now? They’ve got the Need For Speed franchise, and their sports franchises, each on Nth iteration. They have boxed themselves into a corner with sequels. Sequels are now the name of the game. They are predictable, make money, and are easier to make because all of the chaos and creativity “problems” have already been solved.
What type of people do you hire? What careers are there?
There are five main categories of careers in a video game studio: Programming, Animation, Design & Art, Music & Sound, and Management
Our programmers need to have high knowledge of how software interacts with hardware. You don’t need to know the latest trends (but most of our guys do), but you need to be able to understand how you can squeeze the most number of polygons onto a certain type of caching system, and how to optimize your code you different processor architectures. Many will write in assembly.
In addition to the game programming, many programmers work on our in house development tools. A typical task for them would be: Sony sent a compiler that has a produces buggy code when a certain obscure condition is met. We need to debug and rewrite the compiler. Or, Nintendo sent us a compiler that produces inefficient code for a certain type of flow-control statement. We need to open up the compiler and optimize the assembly code that it generates.
We don’t consider the paper degree as important as what you can actually do. The most impressive thing you can bring is a demo of a project you have done before that highlights your ability to do believable and interesting work with characters. Honestly, we have hired a high-school student who was an extremely talented animator.
Designers & Artists
We look for people that are highly artistic and sensitive to the phsycology of the player. They need to intuitively understand how to make a player want to turn left, without having some sort of icon, sign, or other visual. It is not a must that designers have a programming background, but we do look for people that are highly technical because they will using advanced modeling software to create levels, and objects.
Music, Voice Talent, and Sound
This is the one position that, honestly, is pretty much impossible to get into. Voice talent almost exclusively comes from Actors Guild type contracts in Hollywood.
Back in the day music was done either in-house or we would hire-out to local bands. Now it is almost all orchestral. They will hire movie music composers who have worked on other Hollywood sound-tracks. These people usually have masters/phds in music theory and have well established careers in film-making.