Enemy Territory: Quake Wars Dev Diary #5 The Making of the Making of Quake Wars: Enemy Territory


Dev Diary from
Jared ‘jRAD’> Hefty
Programmer
Splash Damage Ltd


We get a behind-the-scenes look at the evolution of the toolbox being used to sculpt one of the biggest multiplayer shooters of 2007.

By Jared Hefty | March 6, 2007

I'm Jared 'jRAD' Hefty, one of the programmers at Splash Damage working on id Software's Enemy Territory: Quake Wars (ETQW); specifically, the tools used to process, crunch, optimize, assemble or otherwise 'mess with' all of the pieces of data that make up the game. I want to give you an insight into how we go about assembling a massive game like ETQW, what we use to do it, and why we go about it the way we do.

The Job for the Tools for the Job

What is a tools programmer? I think of myself as Splash Damage's Enabler (TM). I'm here to save artists, game designers and level designers (the guys who pull everything together into a playable game) from pulling their hair out doing mundane, repetitive tasks. I'm here to notice patterns in tasks and figure out ways to streamline them before they become a roadblock or a time sink.

I watch my co-workers use the programs that I've produced in ways I'd never expected. "Huh, cool," I say under my breath as I watch a level designer zip around one of the game worlds, tweaking, nudging, adjusting with practiced ease. The level designers at Splash Damage spend massive chunks of their time in tools that I've been working on for years.

I want to pause here for a brief moment. You may or may not have heard of a term I'll be throwing around a fair bit: MegaTexture. What is it? It's a way for us to fill a large landscape with a massive image that not only looks incredibly pretty, but provides practical information like traction for vehicles and appropriate sound effects and bullet impacts depending on what it looks like you're moving over or firing at. Now, moving on...

Toolmakers: Made, Not Born

Before I came to Splash Damage as their tools programmer I was the Lead Level Designer on the Quake3 modification Q3F2, and then a professional level designer at Dallas-based Ritual Entertainment.

During my time in Dallas I spent more and more time using my programming skills to enhance the level editing tool Q3Radiant (don't worry, I finished my levels too). I would often stay late into the evening improving the user interface, fixing niggling bugs that had annoyed me during the day, or adding features that my fellow level designers mentioned. "Hey, you know what'd be cool?" became a phrase that I enjoyed (and still enjoy) hearing from people as they wandered over to my desk to share their ideas.

Over three years ago, I dutifully began poking and prodding the Doom 3 level editor (known as "Radiant") to add in some features that would help us edit the massive terrains that we were planning. After a few cycles of pounding, shoehorning and sometimes bludgeoning code around, it became apparent that it was time to give the editor some more attention than we had originally planned. I needed a framework that I could work with quickly and efficiently as each department figured out how we were going to make this whole MegaTexture thing work.

Around editWorld in Eighty Ways

I set to work with one major goal in mind: no matter what new features were added, no matter what changes happened under the hood (and by golly there are a lot of 'em), it still had to feel like Radiant; it had to stay a friendly home for our Radiant-bred level designers. Four years' experience with Radiant came into play as I set about gutting and rebuilding the beast from inside out. It always looked the same, which made an apparent lack of progress disheartening sometimes, but the improvements started piling up as I gained momentum. The rework ended up being quite a bit more work than planned (isn't it always?), but after several months the newly-christened "editWorld" rolled out to the level designers.

The biggest gain from the massive rewrite was the ability to tie several smaller worlds together into a larger one. Previously, if someone built, say, a quaint little shed, and wanted to place it in several places around the world they would have to copy and paste it to each location. When the time came to revise the hut (and those times come many, many times throughout a project) they would have to visit each location and update each hut separately (blech). Aren't computers supposed to automate repetitive tasks?

Vast Reference


editWorld brings the Reference system to the table. With References, that hut is built once, and then a reference to it is placed throughout the main world. It looks just like the hut, but you can only move and rotate it about to place it. Want to revise it? Click on it to open it, make your changes, then switch back to the main world where your changes are automatically reloaded and shown to you.

References have had a huge impact on the work flow of the level designers: multiple people can work on completely different parts of the map without interfering with each other. Often times a shell of a building (called a "block-out" due to its primitive, blocky nature) will be placed in the world for gauging gameplay and the overall silhouette of a scene. While this block-out is being shifted and moved another level designer can be working to fill in the details and bring it to its final, polished state.

Editing references is done seamlessly due to another major feature: multiple document support. Level designers can (and do) keep multiple worlds open and hop between them as they sling geometry and textures around their various worlds. No more need to open multiple copies of the editor (a pet peeve of mine from Back in the Day).

References are a good way to organize big things, but editWorld has another organizational tool: Groups. Groups allow a designer to quickly pull together any sort of item (buildings, trees, a flight of stairs, lights, you name it). There are thousands of items placed into a finished world and not all of them need to be dealt with at once. The level designers create groups for vegetation, building, gameplay items, etc. and then quickly turn them on and off.

Doom 3's Radiant provided a major improvement over its predecessors: level designers could simply press a key to see exactly what your world would look like in the game. editWorld takes this great time-saving ability and extends it to include real-time preview of the MegaTexture, sunlight, ambient lighting (for setting mood and filling out dark corners in rooms) and atmospheric effects like haze and clouds. Some designers work almost exclusively in this view (called Render mode).

Terrain Wreck

editWorld's Terrain Editor is the key to creating the MegaTexture. It isn't concerned with editing the shape of the terrain (a task best left with numerous professional modeling packages); instead it gives artists a way to control how the terrain looks. Artists compose a stack of layers of surfaces like grass, rock, moss, and sand. These surfaces have information about what the surface looks like (the "Diffuse") and what the texture of the surface is like (the "Bump").

Each layer is given a set of rules, such as "only appear between 700 and 800 feet, and start fading away to nothing over the last 25 feet." More advanced rules can be applied, such as "look at the bumpiness of what is below you, and only fill in at the lowest points." This sort of rule is quite useful for achieving realistic transitions between different types of surfaces, perhaps sand filling in between blades of grass, which then grows between the cracks of neighboring rocks.

All of the layers are stored in the Surface Tree, named because it resembles an upside-down tree. The Terrain Editor follows this tree from the top down, adding layer after layer to the image that will eventually become the MegaTexture. These layers cover the terrain in its entirety; they're good for huge swatches of detail, but what about the smaller details? The artists have a few tools in their arsenal for filling in the vast expanses of space with interesting detail.

The Road Worrier

Projectors provide a way to effectively "shine" an image down from the sky on to the ground, or cliff faces, or wherever you place them. Artists can drop bomb craters on to a combat area or slide an oil slick in front of a garage. A Projector is a one-shot deal like a flashlight with a picture taped over it; the next tool, Roads, are more like a neon sign with a strip of film glued to it - twisty, windy, and curvy, but always continuous. Artists can specify multiple layers for each road, so they can have asphalt highways with ragged edges and road markings or maybe winding dirt footpaths with ruts, potholes and visible footprints. If the area calls for it, they can bomb out a portion of the road with a well-placed projector.

When the artists are happy with what they have assembled using Layer, Projectors, and Roads they move on to the final stage: the Stamp Tool. Much like the MegaTexture, we took John Carmack's original idea for the Stamp tool and ran with it. In contrast to most of the other tools, the Stamp Tool runs while the artist is in the game. They select an area of the current MegaTexture to work on, choose an image for their stamp (grass, leaves, pebbles, tire tracks, footprints, rocks, you name it) and run around the world stamping to their heart's content. They can quickly add blast marks to country driveways, decaying leaves beneath a cluster of trees, rubble around ruined buildings, and spilled Stroyent next to a Strogg processing facility - hey, it's the war for humanity's survival; things get a bit messy.

The artists can preview their work within editWorld, though for practical reasons it's at a much lower size than what you can see in the game. A higher resolution version is produced by a tool called megaGen. This tool spits out almost 10 gigabytes of data that are then processed and compressed to the final MegaTexture.

Crunch Time

Getting from Surface Tree to MegaTexture involves a few stages of heavy crunching. First, we spit out those 10 gigabytes of high resolution images with megaGen. Then we pass on to a tool called renderLight which takes the Diffuse (what it looks like) and the Local (its features), combines the two with a bit of sunlight and ambient lighting and spits out a "lit" version of the high resolution images. From then, it's just a matter of grabbing that image, compressing it to a reasonable size (around 300 to 500 megabytes) and storing it in a file that makes it easy to read from the disk, a task performed by the aptly-named makeMegaTexture. (Are you noticing a pattern here? We're just no fun when it comes to naming things.)

A massive amount of work goes into generating a complete world. Artists create models and textures using commercial tools (there's no point trying to duplicate even a small amount of the functionality of mature tools like PhotoShop, Maya, 3DS Max, and LightWave). Level designers assemble the assets into a fun and visually interesting setting with custom tools like editWorld, editAtmos (a tool to edit the outdoor atmosphere), editAmbient (used to "fill in" ambient lighting indoors), and editSheets (used to group textures for efficient drawing by the graphics card). megaGen and company provide the MegaTexture that fills out the massive terrain with unique detail as far as the eye can see. Phew.

We've covered a lot of ground (har, har) and still have barely scratched the surface on changes to old friends like Radiant and new tools like megaGen. I hope that this brief glimpse into the what and why of making a game like Enemy Territory: Quake Wars has been enlightening; perhaps some of you will be interested enough to fire up these tools after the game is out and make something cool yourselves. Don't worry; all of the MegaTexture media will be made available so you won't have to duplicate our efforts in making your own maps.

Login
Officials
sd.jpg
id.jpg
actvi.jpg

nerve.jpg

Partner

gp.jpg

i3d.jpg
sl.jpg

Server
Shop