In the beginning, Valve created the Source Engine. And the level was without form and void; and darkness was upon the face of the deep. And the spirit of Gabe Newell moved upon the face of the Hammer World Editor. And Gabe said, “Let there be zombies”, and there were zombies. To most gamers, this rendition of the birth of a level may as well be true. While in a broad sense we appreciate the complexity of even the simplest game, most of us can’t conceive of the work required to turn the gibberish that is game code into a tangible place where Infected roam.
Above: The almighty blue square that dilineates the Finale sequence
“It’s a toilet,” we reason, “of course it flushes. What else would it do?” And then we criticize the toilet for not having real-time physics, and that its scripted nature somehow diminishes its complexity and value. But when the proverbial toilet stops flushing, do we have any idea how to fix it? Or do we simply stand there, staring at our un-flushable bog, trying to remember where we put the emergency bucket?
Certain that we could show how easy it is to create a paradise where survivors and zombies might come together in violent union, we loaded up Hammer, the Source Engine’s level editor. A level begins empty: blackness mapped only by a grid. World geometry is built with three-dimensional blocks called brushes. These must form the foundations of the level.
Above: The invisible world. This is what a level really looks like. Much like the real world, a L4D2 player sees but a glimpse of what’s really going on around them. When seen through the developer’s eyes, a finished level is a confusing color-coded mass of box-shaped proximity triggers, funny little floating icons, AI path-finding information, and invisible “clipping” walls used to control player exploration. So you see, omniscience can be a confusing thing
Such is the metaphysical nature of the Source Engine that the contents of a level must be shielded from the void, lest they be tainted by nonexistence that can ‘leak’ into it, preventing the level from being compiled and subsequently played. We set about constructing a small box-shaped room with orange walls. And then we begin to swear and squint at the monitor like it’s our front door at 3am and weretoo drunk to get the key in. The victory of our orange box has been followed by a disastrous attempt to add an orange corridor.
“Entity weapon_spawn leaked!” Hammer tells us as we attempt to compile the level. One of our corridor’s walls isn’t reaching the floor, and so a small gap now leads to the blackness. We don’t notice this for 10 minutes. The frustration caused by inflexible software and user fallibility settles into a pattern of expletives and subsequent revelations that’s repeated many times. But using Hammer becomes addictive as with every problem solved, a smug sense of triumph overwhelms adversity: we’re clever, because we fixed a problem presented to us by our own ignorance.
Above: Coach holds hands with green Gordon Freeman
As the necessity of building every single wall by virtual hands truly sinks in, our grand plans for spaceships, pirate ships and floating cities are worn away to reveal more realistic aspirations. Everything must be placed. Creating a light requires not only an entity to provide the light, but also a prop to serve as the source of the light.
Contrary to our expectations, light bulbs don’t emit light, nor do fires emit the sound of burning wood without a sound entity to accompany them. The virtual worlds we run around are born of completely independent components whose connections must be configured and defined, and controlled by such a fine web of logic relays, inputs and outputs, that as we stare at our sad little orange box we feel rather deflated.
Above: The true orange box needs only zombies to be good
Darkness is our friend, we reason, as we move through tutorials and create a ladder, a platform, some stairs. The darker the level, the more detail we can imply with the bare minimum of it. From this idea of cheap level design evolves a nobler concept: to use darkness as an artistic opportunity, and a chance for players to accidentally shoot each other.
Having completed our basic training, we manage to construct two box-based orange-walled prototype levels, connected by a simple safe room transition. In spite of the adaptive, intelligent and vindictive nature of the AI Director, the levels cannot be populated with zombies or explored by the Survivor bots until a Nav Mesh has been created. This means generating an ultimately invisible, color-coded map that sits upon any walkable surface the Infected are expected to navigate.
Above: Playing with light and darkness is essential for any L4D map
Zones must be marked for the start and end of a level, and the Director’s zombie-spawning antics must be controlled by other such markers, lest the level simply lack the correct flow. As dynamic as the AI Director may be, like everything else it relies upon an inflexible system that can frustrate as much as any other.
As dawn approaches, we’ve started working beyond the confines of our tutorial-based boxes. We’ve made a multitude of prototypes; of angular temples and darkened roads, of street lamps and forests. They’re all a bit rubbish and most of these ideas will perish before the end, but each one represents the learning of a new technique or solution, and brings us closer to figuring out what the hell we’re actually going to make in the long run.
Above: Zombie is late. Run, zombie, run!