|
Sebastian has been released and in my effort to get
it done before the end of 2010, I ended up foregoing the fun "developer
commentary" mode. Nevertheless, I thought it would be fun to look
back on Sebastian's development. Unlike my professional work, a lot of
my modding work comes directly from my head, so I don't tend to keep a
lot of write-ups and maps. But Sebastian did have a few sketches and plenty
of development revisions, so I'll try to do my best.
The hospital was my favorite part of Half-Life 2: Episode
One. I believe it's because unlike the rest of the episode, which tends
to be more methodical and a little more focused on puzzles - whether that's
operating Citadel machinery or pushing cars over the Antlion mounds -
the hospital was a pretty no nonsense shotgun-to-the-head fight. When
the music starts, you know what's going on. You're going to cut loose
and kill Zombies or hapless Combine Soldiers who happen to be in your
way. It was a refreshing moment.
At the same time, one of my favorite games of the last
couple years was Mirror's Edge. I hated it at first, as did a lot of people
I think, for its trial-and-error gameplay. Eventually I overcame this
and had a lot of fun with it. One of the things I loved about it was the
sense that you were fleeing insurmountable odds. This was an FPS that
encouraged you not to shoot. Because, as we all know, too often
we play as the invincible super soldier who fears nothing. Yet, we'd also
agree that the first few minutes of Half-Life 2, when you're running from
tenement to tenement to stay one step ahead of Civil Protection, are among
the best. Much like a stranger in a strange land, you are urgently being
whisked forward without being able to stop and ask questions.
So with these two things in mind, I set about designing
a mod that emphasized these elements. It was realized early on that before
Freeman could be armed to the teeth, I wanted him to face his own insurmountable
odds. That came in the form of the Strider who bursts onto the scene,
breaking up the relative calm. There's nothing you can do about him. You
can only take cover behind cars and hope Barney can find a way out. You
are soon separated from your pal as you enter the parking garage of the
hospital, with a promise to meet up later. After a slow build-up in the
parking garage beneath the hospital, you eventually find a way to reach
the main floors and go about wrecking havoc with your boomstick.
Course, the Strider from earlier didn't forget about
you either. It returns at key moments in a relentless attempt to finish
the job, shooting through windows to get you.
I am something of a minimalist when it comes to level
layouts. If I can't justify a room for some gameplay reason, I lean toward
not having it at all. A reason could be to host a major battle, to provide
exploration time, to provide downtime between encounters, to showcase
a new weapon, etc. I believe that something is perfect (or at least, ready
to go!) when you can remove nothing else from it without compromising
the design.
This is contrasted against a meandering stream-of-consciousness kind of
design where a designer tunnels on and on, figuring that the gameplay
is inconsequential to the physical surroundings and can always be slotted
in after the fact. Part of this is because of the limited time I have
to work on maps, so every area needs to count. Part of this is also because
I feel that rooms are like characters. Just as two-dimensional characters
are lousy at telling a story, so too is a world of corridors and arenas
that don't seem to have a purpose other than to serve as corridors and
arenas.
Sebastian had a few crude sketches that served as the
basis for its overall layout.

The earliest seeds of what would become the mod started
back in late April 2010 with this
map. At this point and for most of the mod's development, I referred
to it as "Strider Hospital," with the overarching theme (on
top of replicating that great hospital gameplay) of Freeman being pursued
by a tenacious Strider. Although this layout was not the one I ran with,
it did establish the four basic cornerstones of the map. Namely, the exterior
portion of the map, the parking garage, the hospital itself, and some
kind of final showdown with the Strider on the roof. All four of these
archetypes were honed and developed for the final map.
What was also important to note in this early map (excuse
the chicken scratches) is that the hospital loops back on itself. This
is based on the idea that the elevator shaft is the only thing that leads
to the roof, but it gets stuck on the 2nd floor. In order to reach the
roof, you needed to get to the stairwell at the other side of the hospital
to reach the 3rd floor, and then circle back around to the elevator shaft.
The stuck car now serves as a platform for reaching the ladder in the
shaft that leads to the roof.

From this draft, I did a shotgun pass on the map, where
I just tried to put down the basic layout to see how it felt. I don't
usually follow the debug orange texture approach because even at this
stage, I'm interested in what textures I'm going to be using and how they
look together. Since this map has a real-life grounding in similar maps
in Ep. 1, it was important to get to know their texture schemes and how
they were used in Valve's maps. A few months before I had the plan to
do a hospital, I had run through Valve's hospital and noted different
texture combinations, the dimensions of certain details, and so on. These
helped inform my version of the hospital.
Structurally, some things were immediately clear. One, the layout of the
parking garage and where the elevator was located made no logical sense.
The lobby stuck out into the middle of the underground road. How would
cars get to the opposite side of the garage? Furthermore, it was obvious
that the size of the garage had a big impact on the length of the hospital
hallways above. They had to run from the elevator to the far side of the
building where the Strider would be. One long hallway wouldn't cut it.
We needed a full-on lobby or some other structure to break it up, and
also be judicious about how long the parking garage was. These were things
I let simmer for the next few weeks as I thought about where I was going
with this.

The second
map came from late June 2010. I believe it coincided with time-off
from work for Independence Day. Here, many of the structures were part
of the final map. The exterior and the parking garage layout are almost
identical to the final version. The hospital is very similar to what this
sketch is like, with a few alterations. There used to be two emergency
rooms and there were several more recovery rooms on the second (fictionally,
the third) floor. I dropped the second ER because with the limited hospital
prop set, I had trouble making it look unique from the one before it.
Likewise, on the second floor, the S-shaped hallway was eliminated and
replaced with another hallway that maximized your encounter with the Strider.
As such, the hallways in the final version of the hospital
present three distinct permutations with the Strider - running toward
it, running away from it, and running alongside it.
From here, things evolved at a fairly steady rate.
The map that would become the final... maps... was started in late June
2010. Until late October, it was developed as a single very large map,
like Powerstation 17 was. But over time and as gameplay was added, I began
to run out of entdata. On top of that, my desire to use a few expensive
entities, like func_smokevolume in the parking garage basement, led to
missing effects in other parts of the map, presumably because I was exhausting
a global particle limit. On top of that, synchronizing the street and
the skydome where you would fight the Strider was problematic. So, I decided
to cut it into two maps at a natural break in the action - the elevator
getting stuck - and that was really a good idea, since in the final version
the entdata was about 85% in the first map and 98% in the second. No way
that would have ever fit in a single map! But for those who say Sebastian
plays like one long map, you'd be right. It was at one point. :)
Oh, the name. Even though I kept the Strider Hospital
moniker for a while, I did have to settle on a real name for the mod.
I always liked the name Sebastian for how it sounded. He's also the patron
saint of plagues, among other things. So the name Saint Sebastian for
the hospital sounded good and didn't seem to coincide with any real hospital,
except for the one in the TV show Lost, which was just a coincidence.
Maybe I should have put that Dharma Initiative logo somewhere. I couldn't
really think of any other name, so I just stuck with Sebastian.
In the end, there were about 200 drafts and backups
of the map files from July to December. I only had so much time to put
in massive work on them, mostly over the weekends or during vacations.
I took a break from it over August.
Anyhow, here are some interesting things that changed
over the course of the mod's development.
The Intro Corridor

So in the previous map, you might have
noticed that the intro corridor looked a lot different. In fact, it looked
like the picture above. The original draft was a bit less straightforward
and meandered between buildings, rather than just getting to the point.
One thing I didn't like about this was the way the buildings cast shadows
on the ground that darkened everything. I remembered a while back, I had
a map for another mod project of mine, "Propaganda," which I
never finished. I liked how that started.
It looks a lot like the start of Sebastian,
huh?
I basically rebuilt this area from scratch
for the intro corridor. Incidentally, a lot of the buildings I constructed
for Propaganda found their way into Sebastian, in a different configuration
of course. This is part of the reason why Sebastian's exterior came together
relatively quickly compared to the rest of the mod - all the concepting
was done in an earlier mod. If you want to go even farther back, the earlier
iterations of these buildings also showed up in my
original "scrap map" Propaganda.
The Strider's
Entrance

The Strider needed to enter the scene
in a really dramatic fashion. The tunnel in the screen above was the first
stab at this. He was going to come barreling down that tunnel, sort of
like his appearance in that one Half-Life 2 level where you are making
you're way down a tunnel and the Strider charges at you from behind. But
that tunnel was enormous. I'm not kidding. And this tunnel here,
the poor Strider could barely fit. He has a bit of a wide stance when
he does the crouch walk, so he needs even more width. Basically, the height
of the tunnel just looked silly in this context, so it was replaced by
the building and skybridge.

The skybridge was a direct homage back
to that early
Valve trailer, right down to the 6m sign. :)
The Hospital
Elevator

When the player calls for the elevator,
the power goes out. Therefore, they have to take a jog downstairs to the
generator room to turn the power back on. Complicating this is a valve
that is needed to raise the parking garage gate that leads downstairs.
For a while, there was an ordering issue here. How could I make sure that
the player interacted with the elevator before being able to
go downstairs? In this original draft above, the question was unanswered
and really confusing. The side door which the Zombine bursts from in the
final draft was originally a valve door. Behind which, there was... another
valve that you had to take to the other door.
I mean, that's confusing just reading
it, isn't it?
The Zombine was the solution to this problem.
On interacting with the elevator, the power goes out and the Zombine bursts
through a locked door, opening up this side room where a single valve
is. And the obligatory Poison Headcrab, of course. It's also a nice little
surprise, a total win-win.
The Emergency
Room
The ER went through a few different drafts.
This was the original one. Originally, the hospital's design was a lot
more squiggly and had several points where you had to duck into other
rooms, such as the ER, because something blocked your path. I could never
get that right. Rubble always has to come from somewhere and since the
floor above was playable space, it couldn't be the ceiling. These massive
rubble piles just looked bad and had to be super tall to make it look
like you couldn't go over them. In the final version, everything was re-routed
to be more direct. No little shortcuts into the other rooms - the hallways
just went there. Additionally, for the ER itself, the final version forces
you along a U-shaped path through the shower area. In the original, you
could just hop over the counter and skip the encounter.

Something else worth noting with the ER
is that here and in the security office, I really wanted to play around
with sickly green lights. Batman: Arkham Asylum used that effect
in the morgue and I thought it added a lot. It took a while to try to
dial in exactly what RGB values worked for this. Most the time, I ended
up with something way too green. I eventually ended up using Valve's standard
for Combine lighting and shifting the hue of the light from ice blue to
ice green. This was also contrasted against the standard yellow incandescent
lighting in the shower area. Without that contrast, them whole room was
drenched in an unappealing green.
Refractive glass windows were the final
touch, partially obscuring the room from the hallways while still hinting
at a large room behind them.
The Cafe Baltic

Originally, the Cafe Baltic was another
lobby, very similar to the one on the floor below. In fact, it was so
similar that it elicited confusion from a playtester who was immediately
concerned upon reaching this room. He thought he had gone in a full circle
and came right back to the place he started. I decided that the room needed
another theme and so a cafeteria was built, the walls retextured, and
a pretty heavy bloom was added just to make it distinct. This only took
a couple days and I was really happy with how it turned out. Confusion
was gone, and here was another room that added visual variety to the hospital
while still reinforcing that it was a hospital. With hospital food. My
brother insists that the hospital in downtown Portland has fantastic prime
rib on Wednesdays.
Roof Access

This concrete room serves a couple purposes.
First, it eats up some of the considerable space between the elevator
shaft and the rooftop where you fight the Strider, and it also serves
as the last restocking point of the level. Originally, it was kind of
claustrophobic. The texture scheme was reminiscent of Powerstation 17.
Playtest commented that it really didn't "fit" the hospital
theme. So I did some revisions here, just like with the Cafe Baltic. Tile
was added, albeit using a grimier texture, to continue the tile theme
elsewhere. Exposed concrete was minimized. The ceiling was inspired by
the one in Kleiner's lab. I liked the final result.

The Strider Battle
The final Strider
battle using the Hopper Mines was kind of a pain to implement and went
through about three different implementations. In all three revisions,
the goal was the same - allow the player to use Hopper Mines to destroy
the Strider, which are continually replenished by Claw Scanners.
Claw Scanners made sense as the delivery mechanism. Not only are they
known to accompany Striders, acting as sight beyond sight for them, but
they are also naturally able to deploy Hopper Mines, which is briefly
seen at the end of Episode One. This seemed like a good match!
The problem is, the mines that are dropped are completely unaccounted
for. There wasn't an easy way to know how many mines existed on the ground
and how many more had to be brought in. Likewise, there was no way to
know when a mine was exploded, both because the mine is created on-the-fly
from the Claw Scanner, and because Hopper Mines lack an "OnExplode"
I/O callback.
What I wound up doing to solve this was using a trigger_multiple along
the surface of the roof that filtered only for Hopper Mines. The trigger
calls a counter that keeps track of how many mines are inside it. If a
mine has left the trigger, it is assumed that it either exploded or was
thrown away (and will explode in the future as any !activator who leaves
the Trigger will be automatically killed in 10 seconds). A timer does
a continuous check every few seconds to see if we have a deficit of mines,
and summons one Claw Scanner in each interval if we need more. The Claw
Scanners follow a series of path_corners. On passing any of these path_corners,
they can randomly choose to drop the mine they are carrying. The last
path_corner over the arena will force them to drop the mine if they haven't
alteady.
I had settled on the timer-based mechanism as the third and last revision
of the battle. Previously, I had attempted to tie it to Claw Scanners
completing their routes or dying, or Hopper Mines entering and leaving
their trigger volume. Neither was especially reliable.
The system is not completely foolproof. It is possible to get a couple
more mines than I intended. Likewise, sometimes when the mines impact
against the Strider, the hit doesn't count. As a result, taking down the
Strider can take anywhere from 6 to 10 hits. I think what probably happens
is that the game doesn't always filter that the mine did the
damage, depending on various factors in code. A filter was needed to commit
increased amounts of damage to the Strider. If you try killing a Strider
with Hopper Mines in standard Half-Life 2, it takes about 20-30 of them,
which is totally impractical for a boss battle. So I cheated a little.
It's not like there's an existing scenario in Half-Life 2 involving Hoppers
and Striders, so the player has no point of reference for how many hits
it should take. :)
Still, I think the end result is worth it. I got really tired of the cliche
of finding that one lone RPG on the other side of the arena to
kill a Strider and wanted to do something a little different. Plus there's
kind of a fun David and Goliath thing here. How do you take down
a giant using only your zero-point energy field slingshot?
December was a mad rush to get the mod
done because I really wanted it to be part of PlanetPhillip's Mod of the
Year contest. Whether I thought I had a chance of winning or not, it was
a great motivation to finish it (just as unemployment was a great reason
to hit the gas on Powerstation 17, heh heh). Many, many things were added
in those final weeks.
- There was a fair bit of custom texture work.
- The most obvious of which are the murals which
were added the day before release. I had always wanted to do some
propaganda in a map. I especially love it when it plays ironically
with what's around you. For example, in an early train station map
I was working on, I wanted to have a bright and cheery "Let's
Take The Train!" mural with happy smiling people amidst a sea
of dead zombies and civilians. But finding free resources for propaganda
was kind of hard. On a whim, I decided to do a search through the
US Government pages, since virtually everything the government does
is public domain. And the National Cancer Institute had a massive
treasure trove of doctor-related propaganda. I'm not kidding. You
want doctors consulting with patients? Scientists holding test tubes?
Diagrams of the human body? They have it all. Run it through a few
filters in Photoshop, do some desaturation, make a normal map, and
you have a nice conversation piece for the people in the waiting
room.
- Less obvious was the hospital signage. It was
made to mimic the signs that Valve created for the hospital, but
these were made from scratch using textures from the Blender Texture
Pack. Aside from adding to the hospital ambience, a big motivation
behind the signs was to reinforce Barney's order to you - to get
to the roof. Signs for the stairwall emphasize that it has "No
Roof Access" while the signs near the elevator emphasize that
the 4th floor is Roof Access.
- After about a day of struggling (and learning
quite a lot about how .vmts worked), I got the refractive glass
to work. You only see it on that one tenement door in Half-Life
2. I made a new .vmt that let me call those existing textures on
a brush. It's the small victories!
- The roof's surface was kind of blah, a very
large expanse of rubber roofing. So I made a vertex blend shader
by rolling out a custom .vmt that again leveraging existing Valve
textures. It's really easy to do this. I should do it more often
because the blended displacements break up texture monotony and
look "next gen" to me.
- Monitors were added above the generator panel to
remind the player to go back to the elevator. For one playtester, it
wasn't clear to return there once the power was back on. The monitors
were always there in some form or another, but weren't functional.
- The many side rooms were added along the hospital
hallways. They came out of a need to have more locations to hide goodies
from a playtesting suggestion. But they also helped break up the combat
by providing nooks and crannies to explore.
- The mechanism for replenishing Hopper Mines
in the Strider battle was changed to the aforementioned timer-based
system. The paths of the Claw Scanners were also adjusted to ensure
that no mines would drop onto the vents.
- Last minute combat tweaks included giving more Combine
the AR2 rifles and adding the rappeling Combine to the final Strider
battle. The make-up of Zombies in the final parking garage encounter
also changed. These changes helped to form the final difficulty curve.
Minor Things You May Not Have Noticed!
- There is a G-Man encounter in the second map. From
the start at the elevator, go to the right and look down the hallway
behind the door.
- Doors you have to go through are red whereas ones
you don't are white. A small Mirror's Edge homage.
- Barney will skip his opening monologue after "Look
out, Strider!" if you run straight for the parking garage entrance.
We know your time is valuable and if you don't want to watch the cinematic,
then fine, we'll just skip it. You most likely know what you're doing
anyway if you left Barney behind, right?
What Worked?
- Barney. I think the addition of
choreographed scenes added immeasurable awesomeness. It's polish that
I think most fans would come to expect from a good HL2 mod. I gave myself
a crash course on Faceposer back over Thanksgiving and with relatively
fruitful results, roped korgmeister into doing Barney's voice. Now,
he's Australian, but you wouldn't know it from most of the dialog. He
did a lot of rehearsing and produced many different takes to choose
from. I put a lot of effort into his expressions and gesturing to help
sell the character. In the end, Barney does a good job of bookending
the mod, providing both an intro and a proper outro that Powerstation
17 lacked. Key to all of this was keeping a tight rein on how much dialog
was going to be in the mod. I knew I wanted to customize every line
that was said, so I had to use a finite number of lines. After all,
given the length of the mod, I didn't need a whole State of the Union
speech.
As some reviewers have mentioned, they enjoyed the Barney sequences
and wished Barney played a larger role in terms of being a comrade.
I did toss around the idea of Barney helping the player take down the
Strider at the end, but by that point it was too close to release to
seriously contemplate.
- Improving on Powerstation 17.
While Powerstation 17 was a well received mod, there were a few common
complaints about it, and I feel pretty much all of them were addressed
in Sebastian. By far the most common was the way the mod ended. After
you destroy the Combine Gunship, it just fades to black and rolls the
credits. It is an extremely abrupt ending. Barney was instrumental to
fixing this in Sebastian. His arrival at the conclusion of the final
battle gives us about a minute to ramp down and properly end the mod.
The use of music was also restrained. There isn't as much music in Sebastian
and what exists is staggered across the mod and doesn't repeat. Music
cues will also fade out properly if the player was incredibly fast and
made it to the following music cue before the previous one is finished.
- The size of the map. As I
alluded to earlier, there were other mod ideas that came and went between
Powerstation 17 and Sebastian. Propaganda was one of a handful. There
was something to do with a radio tower on an island, that lighthouse
idea, even another hospital. Yet all of these basically had a common
thread - they were meant to be bigger and longer than Powerstation 17
was. After all, one of the chief complaints about that mod was its length.
But ultimately, I had to come to grips with the fact that to create
a mod to the detail and quality I wanted, within a reasonable time frame,
there was no way it could be much larger. Some mappers are happy to
just tunnel away and produce mods that are many hours long, or flit
from one location to the next, never really dwelling or fleshing out
the details. And, truth be told, there are more than a few mod players
who are more than happy to play mods that are really, really long. But
I take no pleasure in things like Offshore or Strider Mountain. I'd
rather have the short mod that's detailed to the n'th degree and really
fun. My favorite mods are things like Minerva,
Mission
Improbable, and Union.
Relatively short, but meticulously detailed and strongly capturing that
Half-Life spirit.
So developing Sebastian as a single map, relatively small on paper,
was the right thing to do. Because, invariably, it ended up being a
lot of work to get to the level of quality I wanted.
- Gameplay and pacing.
After some exposition in the city streets and the build-up in the parking
garage, I believe the mod succeeded in its goal of providing a fun environment
for blowing apart Zombies and Combine in a hospital setting with your
trusty boomstick. The addition of the side rooms not only provided ample
space to put supply crates (as this is a hospital, you wouldn't generally
find ammo off-the-shelf), but added some exploration that increased
the gameplay length, contrasted against the combat, and produced a fuller
overall experience.
- The Strider battle. I'm happy that
I stuck with it, despite issues with how to implement it, because it's
a novel way to bring down the beast that, to my knowledge, hasn't been
done before and yet stays within the theme of Half-Life 2.
What Didn't?
- The lights in the parking garage.
Because all of the lights in the garage turn off when the power goes
out, it's a very large expanse of named lights. All of the lights can
be toggled, which makes them somewhat dynamic. Not as expensive or dynamic
as a true light_dynamic, but still dynamic. As a result, they cast direct
lighting, which is what causes the heavy shadows here because the lighting
doesn't bounce off surfaces. But worse, sometimes props would get confused
about which lights were lighting them. So, a recurring problem the garage
had was pitch dark props in the middle of bright light.
Not really wanting to get rid of the dark sequence, there were a few
ways I tried to mitigate this. The most basic was moving or removing
props that were in the darkness. Other tricks were to add geometry to
these areas to prevent the player from taking the props there, as well
as increasing the radius of lights. That said, it's still possible to
get the dark props, particularly if you save/reload when props are in
certain areas of the map.
In retrospect, if I knew about that limitation, I probably would have
designed the garage in a different way to minimize the amount of artificial
lighting needed. I believe so long as there was an ambient light source
that was always available, such as light from outside or the car headlamps
used in the basement, the problem would at least be minimized. It is
far less obvious in the basement, where the headlamps are used to help
spotlight where the player is meant to go.
One little trick about this section - to get the cubemaps to not look
shiny and glossy in the darkness, the level starts with all of the lights
turned off. So the cubemaps are built assuming darkness, and as such
don't glow. Course, they don't really shine either, but you tell me
which looks weirder. :)
- The title screen. It's kind
of funny, the very first thing you see is something I don't really like.
The streets at the start are probably the most photogenic part of the
mod, in my opinion, but having the title screen be the same thing as
the start of the mod would look silly. If I was to do it again, I probably
would have picked the long Strider hallway on the second floor of the
hospital and have the Strider walk by every now and then.
As if to compensate for this, I tried to make the chapter selection
images look really nice and included NPCs in them instead of having
them be boring screenshots.
Incidentally, that Claw Scanner in the title screen is kind of spastic,
isn't he? He's meant to be photographing the corpses, but someones he
whips around very quickly or tries to aggressively back up against walls.
His SetFlightSpeed doesn't work, so there wasn't a whole lot I could
do about him. Once he knocked over the monitor as he flew off. I haven't
seen that in the final release, but I would imagine if the stars were
aligned right, he probably could. :)
|