I've added one or two things to
test_garage in the last week or two. For one, stairs between
levels! (as usual, click to enlarge)

I put doors on them, since levels 1 and 4 are open to the rest of
the shop, which would funnel noise right into levels 2-3. I also
modeled the outside world, which entailed cutting a hole in the
side of the map, adding a skybox, and exterior brushes, which was a
mild pain in the ass.

Of course, there were some brush misalignments. It looks just fine
from this angle...

But move to the side a hair and...

Whoops, guess I didn't line those two up. Incidentally, this meant
that the map wasn't "sealed", or completely closed off from the
void, which causes vvis and vrad to error out. If vvis can't run,
then the engine can't tell which parts of the map the player can
see at any one place, and so renders the
entire thing.
Catastrophic on a big map, not so bad for something as simple as
test_garage.
If vrad can't run, then radiosity isn't calculated, and the
lighting isn't as nice. That's not as bad, but still ideologically
impure. That isn't why the lighting in the screenshots look so bad,
though; it's because I misconfigured light_environment, and ended
up with the sun shining straight up at the bottom of the map.
I also forgot to add "_hdr" to the end of "ep2_outland_12a". (The
skybox from EP2 I used for test_garage)

Consequently, the skybox doesn't render properly. Easy fix.

Much better.

With the skybox fixed and the sun lined up properly, the next item
was to get the sun shining through the garage door, casting a nice
beam, and contrasting against the cool blue garage lighting.

Criminally unimpressive! Another easy fix, crank up the power! I
went from 150 to 600. (Unitless variable)
Nice. With that fixed, time to start moving to production
textures. First up, grass. I also changed the exterior terrain from
brushes to displacements, which render faster, and spawn texture
appropriate detail props, in this case, small plants and tufts of
grass.

Unfortunately, displacements are two dimensional heightmaps, which
means that converting the face of a brush to a displacement
converts that face, and that face
only, to a displacement.
Exposed to the void yet again!

Mildly complicated fix this time, I have to build some brushes to
conceal the gap, and seal the void once more. Fortunately, I was
planning on doing this, and didn't (notationally) waste any time
patching.

Unfortunately, vbsp was still complaining about
light leaks.
Following the pointfile just slammed full length into the terrain
displacement, which was obviously sealing the void. I mean,
displacements seal the void, right?
Nope. What kind of
moron doesn't know that
displacements don't seal, hurf durf? Simple, but ugly, fix; I
sealed off the bottom of the map with a great big nodraw textured
brush butted up against the sides of the skybox. On to production
texturing the interior!

Lovely.
Source file, (11
KiB rar'd .vmf)
compiled executable.
(443 KiB rar'd bsp) I compiled cubemaps this time, though I, for
some reason, can't tell the difference. Oh well.