NetDevil, based in Louisville, Colo., is one of those fairy-tale software developer stories: guys who love games start company in basement; work hard; move upstairs to spare bedroom; attempt to save the universe. That would be LEGO Universe, the online game the company recently released in collaboration with the LEGO Group of Billund, Denmark, and NetDevil’s parent company, Gazillion Entertainment.
LEGO Universe is a massively multiplayer online (MMO) game that takes place in an alternate universe populated by LEGO mini figures. Players must protect the final existing vestiges of pure imagination from extinction -- clearly a worthwhile quest and, very probably, a useful skill in life outside the MMO gaming environment.
Everyone Loves LEGO
What sets LEGO Universe apart from most other MMOs is its audience, a posse largely composed of children 8 years and older playing on hand-me-down desktop systems or inexpensive netbooks. It’s a great niche and a natural target for the LEGO Group, but the age of the fan base and the limitations of their gameplay hardware conjure a host of technical and functional challenges.
Erik Urdang, NetDevil’s technical director for LEGO Universe, was in charge of devising an engineering strategy that delivers a superlative user experience, while leveraging all the gameplay a particular player’s platform can deliver. “We’re aiming at youngsters with LEGO Universe, so we are unswervingly dedicated to having a very low minimum specification for the hardware required to play the game,” says Urdang. “Kids don’t usually get new computers; they get their parents’ old computers. So our target market may be playing on computers that were manufactured three, four or five years ago. We are also able to run well on netbooks,” he says. “We’ve made that a priority because they are starting to come to a price point that is very affordable for families.”
“This focus on broad compatibility makes our development process demanding because we have a very lush, beautiful 3D world with large, open spaces” says Urdang. “Supporting a game environment this visual, this complex and this endlessly dynamic on low-end, legacy platforms turns out to be an extremely complex undertaking.”
Predictably, this kind of application architecture calls for fierce software development skills and serious heavy-lifting tools. Urdang is supremely focused on both the development process and the tools. “We develop most of our game code in C++ using Visual Studio,” he says. “Each engineer has a pretty high-end Velocity Micro workstation. To get quick build speeds, we use build servers and automate the process using cruise control. We also use a number of third-party tools and middleware elements that allow us to concentrate on creating the game experience.”
Graphics performance analyzers (GPA) were used extensively in LEGO Universe. “Most people, when you talk to them about rendering a universe made of LEGO bricks, say ‘Oh that should be easy. How hard is it to draw little square bricks?’” says Urdang. “But actually, the LEGO Group is extremely particular about their intellectual property. They don’t want the bricks to look just any old way; they have to look like real LEGO bricks. Shaders have to be precise; the bricks have to look like ABS plastic with the right kind of polish on them. Additionally, the bricks have little cylinders on top, and those have to look round. In order to get them to look right, we need a fairly high-count polygon model.”
Persistent user-generated content and freedom of player movement in the game environment implicitly create an infinite number of paths through the game world. This makes it impractical to test and optimize an MMO without GPA.
“GPA metrics showed one of the smoke effects in the game was using 14.2 percent of the scene budget,” explains Urdang. “We disabled just a small amount of smoke and got back a14 percent increase in frames per second. In another case, we found 21.9 percent of drawing time was being consumed by the way we were handling terrain and rendering a couple of wall pieces. Once identified, issues like these are relatively simple to optimize. GPA has been a huge help for us, finding things like that quickly. It reduces iteration time dramatically. If you’re just poking around, randomly testing things, it takes forever because you can’t optimize what you can’t measure.”