Survival of the Fittest

ns_eclipse_1

In my last post, I shared the long-overdue release of my old source files from ns_eclipse and ns_veil. My biggest regret was not being able to provide more of a play-by-play commentary of how and why the map changed over the months of development. Unfortunately, even with a good memory, it’s very difficult to browse through dozens of 10+ year old hacked up .rmf files and remember exact intent or even in some cases what the specific changes were.

Last Saturday, I spent some time chatting with my old friend and fellow Half-Life modder Robert Yang (more on this conversation to come!) during which we discussed the making of Eclipse and Veil. I shared the story of Eclipse’s texture swap from the grungy wall_black set to the clean wall_lab textures that became the signature “Eclipse” style. The following morning, with Natural Selection still strongly on my mind, I decided to dig through my old files in search of some before-and-after screenshots. I found them – along with a pile of in-progress shots not seen since the old WIP threads on the NS1 forums.

I still can’t necessarily recall exact technical details of every change or my guiding philosophy at the time, but for the Natural Selection fans out there, here’s the illustrated evolution of Eclipse.

EDIT August 3rd 2013: All screenshots have been brightened to emulate in-game gamma adjustment.

ns_veil

The story of Eclipse actually starts with Veil – or a Veil, at least. I’d fiddled around the NSTR enough to get a feel for some of the textures and shapes I liked, and started piecing together my first map.

ns_veil0001

This probably dates to about January 2002, but I don’t recall the exact dates. It wasn’t much to look at out of the gate. I had no clue how to use the NS textures yet, and seemed determined to use a strange number of floor textures on ceilings. my first experiment with the wall_lab set came in this hallway:

ns_veil0003

There’s flashes of Eclipse hidden here in the red panel and slight curve on the right wall, but the dimensions were all off and I didn’t fully understand the value of trims in this texture set. Adding the extruded boxes on the left was a nice idea for detail, but they were far too bulky and trying to tie it in with the wall the way I did was just plain ugly. Look at that bevel in the middle of the grooved section!

ns_veil0012

The original Veil still showed some potential, however. That ugly lower corridor led to a space wrapped around this elevated platform I dubbed “The Overlook.” Yes, that Overlook. Eventually, this ceiling shape would inspire what would become Eclipse’s South Loop. I also felt like I was on to something with this red light embedded into the wall – in hindsight, this is actually a better implementation than jamming them into the ceilings all over Eclipse and the real Veil; the grating painted into the wall texture is the perfect visual anchor.

ns_veil0016

The original Veil was a very tall map, as seen around Overlook Prime and this small bridge crossing over next to a small elevator platform. While the NS mapping guidelines recommended avoiding level-over-level design, I always felt (and still believe!) that interesting things were possible with func_seethroughs and Commander view parallax.

Tangentially, before knowing how critical entity count would be to good map performance in Natural Selection, I assembled some tests using partially transparent all-black func_seethroughs to simulate thickness on ceiling and wall structures encroaching on the Commander view. I had grand dreams of showing depth and even some hidden structure between walls for Commanders, but never was able to pull it off.

ns_veil0017

I apparently liked overlooks, so I put Overlook in an overlook so I could… yeah, this got a little ridiculous. Little did I know that I was actually constructing the first pass of Q4DM11‘s centerpiece platform, which I would build in late 2005. This structure is far better suited for a fast-action FFA shooter with rocket jumping than a slower-paced hybrid FPS/RTS.

An aside about the extreme elevation in Veil – these heights were generally based on 256×256 textures. That sounds quaint now, but the Quake engine, built mostly around 64×64 and 128×128 textures at 1:1 scale, split faces at regular increments based on texture scale. This behavior pitted level designer against artist – artists authored higher-res textures, sometimes intended to be scaled down, but designers couldn’t and/or wouldn’t scale them without risking skyrocketing wpoly (short for world polygon) counts. This resulted in a phenomenon where later Half-Life mods with larger textures frequently had hilariously overscaled levels – especially mods like Counter-Strike and Natural Selection which used smaller 64-unit players instead of the Half-Life standard of 72.

This needlessly tall and hopelessly bland room is the single most unremarkable image I could find of the original Veil, yet the most direct connection between old Veil and Eclipse:

ns_veil0020

I planned to use this room as a small command center (do you see where this is going yet?), and it also served as a test bed for playing with a fairly new (to the Half-Life community, at least) texture effect. Just, uh, ignore those two brushes coming out the top:

ns_veil0031

During my time building HL1 maps, I always had a certain feeling of envy towards the Quake III community and their fancy editor features, including a vague misunderstanding of what the term “shaders” meant (we were a primitive folk). A lot of Q3 texture sets found their way into HL1 mappers’ hands, and a few of us started wondering why there were these black textures with glowy bits on them. I was among the first level designers in the HL community (alongside fellow NS contributor Kevin “Relic25” Roberts) to realize we could apply this effect to func_illusionary brushes using the additive render mode. I hacked up a couple textures from the NS .wad file to make some glowing screens, and we got Cory (Strader, NS concept/texture artist/NS2 Art Director) to author new textures with these included. Glowy bits such as these computer screens would feature heavily in Eclipse and Veil as well as many other NS maps.

Eclipsed

I kept fiddling with the first Veil, but in the end, it never clicked. Around April 2002 I felt completely stagnant and unhappy with the jumble of a level I had mashed together. I took a break, tossing together a quick Opposing Force CTF map over a few days, and came back to a fresh idea later that month.

Part of my struggle with Veil had been planning ahead. Building on the fly had served me well making simpler DM and CTF maps, but in the early stages the added complexity of NS design stumped me. I decided to try something new and broke out a handy pad of grid paper to begin plotting a to-scale representation of my new map, which I expected would… eclipse… my work on Veil. I took a few pictures of the assembled sheets to document my progress for the NS forums:

eclip_layout_4-10-02

The layout started on the center page, expanding outward as I sketched towards the eventual Hive rooms. Eclipse landmark “Triad” was one of the first signature layout structures to make it to paper. With everything planned to-scale, it was easy for me to jump into blocking in the layout, which led to this, the first ever in-game shot of ns_eclipse:

ns_eclipse0000

…I have no idea what this was even supposed to be. It’s a huge step back from Veil’s first pass. I’m pretty sure those are even 16-unit tall stairs. This should have been my first clue that what works on paper doesn’t always translate as intended to 3D.

I kept sketching away on paper, though, adding sheets and highlighting my progress in the editor while convincing myself how easy it was going to be to build. I also added the type of stupid commentary a college freshman in 2001/2002 would add to this sort of thing:

eclip_layout_4-11-02eclip_layout_4-12-02eclip_layout_4-30

I took something of a kitchen sink approach to landmarks, taking the idea of a large hangar bay for the Marine spawn from Veil, and incorporating sci-fi tropes like command centers, huge energy generators, coolant vats, and even residential areas. I may have gone overboard with the number of styles I intended to pull off, but to this layout’s credit it actually had a stronger sense of purpose and function than the final release.

An early concept of the paper layout was the “Glory” corridor down the middle of the map, inspired by the first shots I had seen of ns_bast’s Nostromo-inspired corridors. Some of my first fiddling with wall_lab textures in Eclipse took place in this exploration, but I decided to stick with the wall_black set for a much grittier look:

This slideshow requires JavaScript.

The notion of a “Glory Corridor” is such a late 90s/early 00s way of thinking about level design – naively thinking, “Hey, if I make a totally sweet detailed corridor, my map will be good!” There were far more interesting structures waiting to be built while I focused so much time and effort on this, though this corridor would still become an important anchor of Eclipse’s layout and visual style.

In addition to Triad and Glory, I had a clear idea early for “Command” – remember that silly shot from the original ns_veil? Say hello to the first edition of Eclipse’s command center, affectionately known at the time as “The Egg:”

ns_eclipse0017

You can see some of the same strong elevation differences from the original Veil here, as well as more embedded red accent lights that I had first tried in Eclipse as part of the “Glory Corridor” experimentation. Once again, I began to explore the wall_lab set, this time going into complete func_illusionary overlay overkill. This is just a mess:

ns_eclipse0020

I was much more pleased with the direction of the Triad area. Here you can see ns_nothing-inspired spotlights lighting up the floor, mixed with the grungy wall_black set. At the time, this shot was the benchmark of what I expected the finished Eclipse to look like – dark, grey, and dirty:

ns_eclipse0029

Another landmark of the grittier Eclipse was the “Coolant” hive on the west side of the map just beyond Triad. A broken-out coolant tank provided an excellent nest for a Hive spawn:

ns_eclipse0036

It was actually a neat thematic idea and putting coolant reserves near the big generator room served the stronger sense of place, but I was never thrilled with the rendering on the glass or caustic texture. This theme is much better suited to something like NS2’s upcoming “Biodome” environment.

I also wasn’t exactly thrilled with my lighting in early Eclipse iterations, especially not after the disaster that was my first pass at Command. I ended up comparing lights.rad notes with ns_nothing designer Ken Banks, and borrowed the orange color he had used for this light texture:

ns_eclipse0030

A nasty side effect of using lights.rad texture illumination was the light texture rendering fullbright, often resulting in an ugly bright square in the middle of darker geometry. Instead of using the base light texture, I applied the texture lighting to the additive func_illusionary overlay texture, creating a much more pleasant light fixture. This light ended up playing a pretty significant role in the weeks to come.

wall_lab

A pivotal moment in Eclipse’s early development came in this simple and ugly room. Even armed with a new light color, I struggled trying to find a style to call my own.  Triad, Glory, and Coolant all seemed interesting enough with the wall_black textures, but when it came to some of the smaller filler spaces I just wasn’t happy with the look. On a whim, I combined the orange ns_nothing light with the wall_lab textures and Bast floor textures, resulting in this comparison:

This slideshow requires JavaScript.

The lighting was terrible, but when I saw the orange color mix with the wall_lab textures to the left side of the room, I knew what I had to do. I built out the area just south of Triad in the new style, assembling a new room that may start to look familiar to Eclipse players:

ns_eclipse0040

“Primary Generator Monitors” made its first appearance in this build. I continued using a blue-white light strip and white accent light from the base Half-Life textures, which I found provided a great complement to the warm glow of the primary orange lighting. With the experiment an official success, I got to work on propagating the style to the rest of the layout:

ns_eclipse0044

Triad came next. To give the room a bit more character I also added the blue texture to my lights.rad file, flooding the room with a nice glow around each generator.

When the wall_lab love spread to the “Glory Corridor,” I didn’t have a good solution to replace the excellent but now out of theme wall_black pillars lining the hallway. In the absence of wall_lab pillars, I cracked open Paint Shop Pro and made my first textures ever: two hacked-together vertical pillars that would become a mainstay of most wall_lab-themed levels.

This slideshow requires JavaScript.

With the new support textures in place, I continued fiddling with what would become the various “Access Corridors,” adding a second segment using these detailed wall panels from ns_bast:

ns_eclipse0057

I’ll also take this opportunity to note that the “Natural Selection” watermark embedded in the NSTR (as well as the NSTR itself) may be one of the most brilliant mod marketing campaigns ever conceived. By letting people dabble with the textures and style as the mod was developing and then plastering the NS logo onto every single screenshot, Charlie managed to draw some of the Half-Life community’s best level design talent (and discovered some rising stars) while ensuring a strong selection of maps in the initial public release.

Expansion

It would still be a couple years before Valve would show Half-Life 2 blockouts and everyone started talking about “orange boxing” their maps, so between that and a super detailed paper sketch I charged full bore into detailing what I had. I may have finally had a style to hang my hat on, but I had only built a fraction of a layout:

ns_eclipse0058

With Triad, Coolant, and Glory mostly settled, I started pushing to the north and east. This double-height corridor would help bridge the gap from the to-be-built Marine spawn to the center of the map, and made for an interesting hybrid between the new textures and colors and the gloomier feel of my earlier attempts:

ns_eclipse0064

I can’t speak to my exact inspiration in creating it, but I suspect I was probably influenced by an early version of ns_hera and the “Level 3” alien that would become the Lerk. Early Hera contained a blockout room with towering ceilings that served as a perfect home for Lerk strafing runs, something I had hoped to incorporate into my layout. This area would not survive later restructuring, but would somewhat inform the ramped areas that would become Station Access East.

I also took some inspiration from Hera to the east, building this circular alcove that shared some characteristics with some sunken alcove work Hera author Jon “Merkaba” Chapman had been throwing down:

ns_eclipse0055

This area actually had some interesting structure and gameplay potential, offering interesting elevation (including a sunken drop-off to the right) and solid cover, but it was far too large and repetitive. If I were to build this now, I probably would use two alcoves instead of three and add a small bend to block the huge sight line down the middle.

Back on the north side of the map, I built towards the Marine spawn. I was dead set on the idea of a Marines arriving in huge hangar bay that I had first attempted in the original Veil:

ns_eclipse0075

In this draft, I opened the ceiling for the first time and liked what I saw in the skylights, but it didn’t fix the problem of making the room big, bland, and ugly. This is the danger of getting too attached to an idea vs. being aware of its execution.

Further doubts started to materialize as I kept pushing forward with the layout. As noted before, I wasn’t happy with the way Coolant was turning out, but I realized had another room with enough ceiling space to hold a Hive:

ns_eclipse0072

I cut Coolant, allowing Command to take on a (too) dark infested look and move to its new home on southwest corner of the map. Conveniently, this also solved the problem of the absurd and distracting glowing overlays the last time I had worked on this room. With the new hive room in place, I started working on connecting Primary Generator Monitors to the Hive with the first appearance of Command Access South:

ns_eclipse0068

A version of this bulky door frame would become a very familiar sight throughout Eclipse (mostly around the central Access Corridors) and the new Veil. The twin gold pipes also laid the foundation for their use in the subtly named “Pipeline” area of Veil.

Earlier I spoke about the dilemma of texture scale that caused problems for world scale. As luck would have it, I didn’t particularly care for the top 64 pixels on one of the base wall_lab textures. I also found very quickly (even as far back as the original Veil) that lopping off those 64 pixels resulted in a perfect 32 unit trim at the top of the wall. This led me to build many of my corridors at a base height of 192 instead of 256, which in turn led to many bulkheads at 160 units and many doorways down to 128. While still slightly overscaled against the player model, this helped keep the level’s proportions from getting away from me.

Keeping the scale certainly helped anchor the feel of the Access Corridors in the center of the map. In this build, I started expanding them into a network of corridors that formed key connections through the heart of the level:

ns_eclipse0082

By this point, I had pretty much nailed the look, but I still hadn’t abandoned the idea of grittier elements on Eclipses south and west extents – I was probably headed for a 65/35 split of wall_lab and wall_black. To the south, I took a stab at a grittier and partially destroyed corridor:

ns_eclipse0083

As this corridor continued further south, it connected to a large almost silo-shaped structure that also retained the wall_black set:

ns_eclipse0084

I ended up building two versions of this room. Pictured here is the normal version with a half-open bay door, using the same fake light beam effect I had been using in the Marine spawn skylights. Through the door on the far side lay version 2, an infested Hive room.

Overhaul

As of the June 28th, 2002 (my 19th birthday!) playtest build, Eclipse looked like this:

People were enjoying the map well enough in testing, but this was not a good map. Only a few of my ideas were working the way I wanted them to and even with the more consistent wall_lab theme, the map still felt like a jumbled mess. There were too many tiny winding corridors and too many parallel or unnecessary routes. Multiple key routes required unnatural hairpin turns. The map was unnecessarily huge, too, bumping against the edge of the Hammer grid. 

This entire RT room had interesting ideas and structure, but was ridiculously overscaled (it’s almost as big as that hangar bay at the Marine spawn!) and a complete dead end. Why would I ever want to come here?

ns_eclipse0091

This wasn’t going to work.

I’ve hinted at a few different choices I made being “critical” to the development of the map, but none moreso than the decision I made after this playtest. I took a bulldozer to the entire layout, finally and decisively throwing out any notion of “oh this was in my sketch so I have to keep it” (though much of it was already long gone). No area was off-limits – I estimated I ripped out between 70-80% of the map and rebuilt from scratch.

By late July 2002, the layout had taken this shape:

This is the first time Eclipse looked like Eclipse.

What had been one of the largest NS maps became one of the smallest. I completely scrapped the southeast side of the map, adding this new “Maintenance” area as a resource room just outside the east Hive:

ns_eclipse_7-260008

A mess of mostly equal-sized corridors in the center of the map focused into this large connection that would become “Station Access Alpha:”

ns_eclipse_entrance0000

And in lieu of the massive hangar bay for the Marine Spawn, I shrunk things down and constructed this entrance structure, tucking the Command Station away in a smaller room behind. Look familiar?

ns_eclipse_command0001

Two days later, July 28th, the map had taken this form. The noise by this point had started to simplify – sure, it’s still a corridor crawler, but now with more varied and focused routes and more deliberate destinations:

I realized that the Maintenance area I built was a better Hive than the bland nondescript room I had been building towards before. I cut the level short and took an infestation pass, then anchored the Hive in the center over the RT:

ns_eclipse_7-28b00061

Computer Core had not existed until the 26th, and in this version I re-oriented it to face north, hooking it up to new north and west entrances:

ns_eclipse_7-28b00011

One slight problem is that these two entrances still required you to loop around the single linear entrance. All three Hive rooms suffered the same fate in this version – every one of them was reduced to a single narrow choke point entrance. Oops.

Back near the middle of the map, I replaced an extraneous Access Corridor with a bigger and bulkier route connecting the central network of corridors, Maintenance, and what would eventually become Station Access East and T Junction – my area names really were something, weren’t they?

ns_eclipse_7-28b00001

The central Access Corridors also began to shine this build – they were now the way to move between resource nodes in the heart of the map. I also added new double door frame structures near Station Access Alpha and the Computer Core entrances. These were interesting in that they took a claustrophobic and completely linear structure and created just enough space to take cover or flank an enemy in a close-range battle.

My momentum carried into August, with this layout prepared on August 3rd:

The Alien side of the map started to get a dense connection of vents for fast travel between Hives. My personal favorite was the pair just south of Station Access Alpha – I put a set of alpha wires over the exits, and for a couple playtests I was the only person who knew why Skulks were suddenly falling from the ceiling:

Promoting Maintenance into a full Hive room was absolutely the right choice, but massively imbalanced the layout by giving the Alien team two Hives right next to each other. I pushed the Hive back to the east, adding a new room called the “Keyhole” to bridge the gap.

ns_eclipse_8-300003

For the other side of the Keyhole, I brought in the blue texture from the Triad generators and re-applied the scrolling electric arcs I had borrowed from ns_hera in an earlier version. This became a landmark wall structure on this side of the map, as well as a signature image of Eclipse.

ns_eclipse_8-300004

By adding this space, the travel time from Computer Core to Maintenance began to even out with the time from Command to Computer Core. This was a key design consideration for NS map balance, and would play a significant role in Eclipse’s success.

Of note: I never had a stopwatch handy and was always annoyed having to try and time my routes using the Windows clock, so instead I eyeballed routes based on Hammer grid views. By increasing my grid size to 128 or 256, I could quickly count the number of blocks from one location to the next and determine if I needed to make adjustments without compiling. It worked!

Back on the north side of the map, I wasn’t thrilled with the original Marine spawn – it was too cramped and put the Command Chair behind a pair of thin and unnecessary corridors. Here, I replaced it with a larger room I dubbed “Cargo Transfer:”

ns_eclipse_8-300006

This room offered a bit more space to build and a smaller, more accessible Command Chair. It worked for launch, but this room’s stay in the map was short lived – for NS 2.0, I ripped this out and sent both the original Marine spawn and this iteration to the new Veil as Nanogrid and the Cargo Hive, respectively.

With additional playtesting and tuning, I updated the map with this layout in September.

I wouldn’t fully appreciate the term “committment” in level design terms until a few months into my time working at Raven, but had started to apply it here. Note the significant split between the two routes out of Marine spawn – in the previous build, teams could get a couple steps outside and then just switch directions. Now, leaving Marine spawn meant if you wanted to go back the other way, you’d either have to backtrack or push forward through the central Access Corridors (I would end up using a similar layout strategy in the Marine spawn exits in Veil). While not as drastic, similar choices were required on approach to Computer Core and the new Command Hive.

The long linear route to Keyhole bothered me, so I added an additional connection + RT that generated another loop along the way. The U shape I created would become known as the “Horseshoe:”

ns_eclipse_9-100000

Command finally got its time to shine, as I ripped apart the old version, flattened it out, and created more definitive choke points to the north and south. The trisouped infested hole in the ceiling, while not well lit here, was one of my favorite things to build:

ns_eclipse_9-100002

While I typically abhor a hairpin turn in level design, I was also proud of what I felt was a crafty way to handle infesting the layout. On approach from Command Access North (on the way from Triad), I inserted a small null-textured (our equivalent of “nodraw” or “caulk,” depending on your more modern tool of choice) vis blocking wall covered in infestation on either side. This allowed me to retain Command’s symmetry, while allowing the infestation itself to block a route and change the layout. I wish I had done more of this – the idea of infestation is more interesting when it’s creating its own structure and flow that doesn’t necessarily line up with the base level geometry.

With all these changes made, Eclipse had taken quite a jump in the final 2 months of work – here’s a recap:

This slideshow requires JavaScript.

I made a few more tweaks in the final weeks, including re-works of the approach to Maintenance (creating a split entrance on either end of the Keyhole, matching the pair of entrances to the other Hives) and the Ready Room (which, to save time, became a non-infested version of Computer Core). The map was a hit in playtesting, and Charlie selected it as one of the seven maps that would be included at release.

On October 31, 2002, Eclipse went out to the world with NS 1.0:

This slideshow requires JavaScript.

Eclipse was never really a finished product; I kept tinkering with the layout well after release and alongside development of the new Veil. As noted previously, two old versions of Eclipse’s Marine spawn found new life as Nanogrid and Cargo in Veil. Maintenance Hive is the Spinal Tap drummer of Hive rooms, and probably would have kept getting rebuilt in every new release had I not started at Raven and passed the map off to Ben Ives in the summer of 2004. Multiple other post-release experiments also fell to the cutting room floor – poke through the old source files if you want to see some of what might have been.

Elements of or nods to Eclipse have snuck their way into later work I’ve done. As I learned Radiant for my Quake 4 work I fiddled with a vision of what Keyhole might look like in Doom III. I also directly emulated the Eclipse door frames in the lower sections of Q4DM11, and the Beacon Station in the Starhawk mission “Harvest Season” is named “Eclipse Station” as a nod back to my roots on NS1. 

This slideshow requires JavaScript.

While I may still have found a career in games without making Eclipse, it certainly wouldn’t have been the one I have. Branching out from my DM/CTF comfort zone and being around the talent that made NS taught me more about multiplayer level design than anything else in my time as a modder. Lessons learned on Eclipse and Veil (the real one) continue to influence my work, development process, and career over the last ten years, as well as leave a mark on others (including, of course, the ns2_veil remake for Natural Selection 2 and an as-yet-unreleased ns2_eclipse still in the works by a NS2 community member).

Thanks for playing.

PS: briktal, I’m still sorry for the build where all the vents were too small.

10 thoughts on “Survival of the Fittest

  1. moultano

    This is fascinating. 🙂 All of the screenshots look very dark though. Did you apply the “overbrightening” effect to them? I had to look up how to do this again. Set the top value in “levels” in photoshop or gimp to 383 – [(your map’s env_gamma value)*128]

    Reply
    1. Andrew Weldon Post author

      Hey man, long time no see! You are correct; I forgot to apply the gamma correction. It’s been a while. I’ll take another pass at those when I have time – thanks for reminding me!

      Reply
  2. Flaterectomy

    This was a great read. I remember looking at Eclipse and Veil a lot during my NS1 mapping days, though I never actually managed to produce a finished map back then. It’s also very interesting to see how you altered the layout while trying to figure out NS1 gameplay in those early days of the game before boxing out a map first became the standard.

    Additionally, amusing factoid: looking at the original Veil and FMPone’s remake of it is great inspiration for my remake of Caged, so these days I /still/ look at your maps for inspiration.

    Reply
  3. Mark

    Nostalgia is right… I used to go by Flatline in the NS days and remember playtesting this. A friend of mine retweeted the article. Glad you’re at Bungie now!

    Reply
  4. Pingback: Level With Me, Andrew Weldon | Rock, Paper, Shotgun

  5. Pingback: A classic Natural Selection map has returned - WEI - 喂~! 電玩資訊站

  6. Ben Ives

    An enjoyable read : ) I was trying to make hammer work the other day and I got stuck! Back to it I think after reading this!

    Reply

Leave a comment