I hear word that the first alpha of koth_roundhouse did the rounds on the TF2Maps server tonight; I had planned to bring it over this way soon, probably with alpha 2, but since some of you may have seen it by now I figured I should pop my head over here.
Roundhouse has been something of a geometry experiment I've been fiddling with off and on for the last few years. I picked up a neat technique from former colleague Joe Swinbank for creating precise modular curves in UE3, and on a whim decided I'd try to replicate this in Source.
My first tests failed miserably as the rotated segments quickly degraded to floating point precision loss hell, but after Left 4 Dead shipped, I managed to convince some former colleagues at Valve to add instancing support back in to the Orange Box branch (so you can probably blame me for the horribly broken SDK that existed for a little while afterwards).
With instancing added, the technique worked perfectly - I could build a circular level on a happy grid, rotate segments to my heart's content, and never lose any floating point precision.
Shots 2-6 attached above demonstrate how the technique works. First, I build a segment on the grid as normal, using 0,0,0 in the world as a rotational pivot point. Then, I use two large brushes, rotated + and - 7.5 degrees on the Z axis, to chop off the sides (yes, the dreaded carve tool!). The chopped wedges can then be rotated on 15 degree increments, and as long as I'm careful about matching the geometry from one to the next, they seal perfectly.
This is a bit more detailed than an alpha should be, mainly in the central turntable section, but this was a necessary evil to prove how far I could take the concept and explore how various elements and textures would handle the seams.
I've run a couple playtests already and am well on the way to alpha 2 - because this level has been mostly focused on the technical geometry for so long, a few connections for alpha 1 are a little forced and awkward, and priority #1 in alpha 2 is streamlining that flow. Some other known issues:
- The back door clips up through the roof. I'm an idiot and forgot I copied a non-animated door for that one. Oops.
- The area behind the short side of the roundhouse is too empty, and that dump truck won't cut it. I'm playing around with a few options for more structure, including flipping the teams' spawns across the tracks to fill in more space and encourage more traffic through the roundhouse structure itself.
- For some strange reason, you can build on part of the low roof, but not all of it. Some segments work, and some don't. Probably some weirdness with the rotated slope vs. the collision check in the engineer placement code. One possible option is adding some little flat ledges a la the little planks that roofers put out, and limiting roof-building to those locations. I'll need to fiddle.
- There's some ugly displacement blends on the ground. The gravel/concrete blend is incredibly valuable for hiding the texture seams and repetition rotated around the center of the layout, but I've taken it as far as the proof of concept and no further.
- I'm not happy with the big stairwell extending out behind the back entrance. Feels like it takes up too much X/Y space and makes an awkward extension from the building. The back entrance and this staircase has been re-worked and simplified for Alpha 2.
- The rails on the ground in the roundhouse are jittery. I tried my HL1 instincts to use func_illusionaries, but these break when rotated in instances (they maintain their original rotation). I'm re-attempting non-solid rails with func_brush entities in alpha 2, but may have to experiment with some smoother clipping if that option fails.
- General feedback so far has indicated a need for more cover around the turntable, this is on the way for alpha 2.
- There is a third "back" exit from each spawn to help offset the spawn's proximity and line of sight to the main gameplay spaces. Unfortunately, I broke the Blue exit, so you might get stuck back there and curse my name. This is fixed (and the whole area re-worked a bit) in alpha 2.
I'm hoping to have Alpha 2 ready by next weekend, but if you had a chance to play around in it tonight or otherwise in your spare time, I'd still love to hear what you think. Enjoy!