3. Making The Real Thing

From here, it was Google time. I did an image search for hydro-dam related stuff and collected all the images which I thought looked cool and could be incorporated into my map, or at least some elements of the picture – how the lighting works, what kind of objects are present in a Hydro dam, how is some of the architecture constructed, etc. Here's some of the pics I fished up:

After looking at these pictures I had some ideas for what I could do with each “major room” in the map. I picked one, and away I went. In this case, the room I started with was actually not one of the “major” ones really – the “middle entrance” room. That is, this one:

Now, anyone who played the original CTF-Hydro32 should recognize this room, as it's almost exactly the same. That's something I should mention really – as I was making this map, there is always the original map to think about. Even if you want to create something totally new, for some reason the old one always sits in the back of your head and infects your design in some way or another :)… which isn't a bad thing, especially if the original level was a reasonably popular one. I had a think about how I would light this room – how I would create some cool shadows, where objects could go, where items were meant to be placed and what things were going to be made of (brick, metal, concrete, dirt, etc). Now, before I started working on the room, I thought about what meshes I'm going to need to make for the room – do I need to make a “unique” mesh for this room? What meshes can I make that can probably be used throughout the entire level? Every Hydro station needs pipes, and lots of ‘em! Also some nice big, rusty steel beams, and some supports for those beams. A metal/mesh “grate” – good for casting light through and so you can see through it. I liked how the original level had a dirt floor inside this area, so I decided to go with that again. Also, some trim was going to be needed – the original used the classic “Caution” striped trim… it's simple, effective… maybe a bit cliché, but I could use it for team colours later aswell (though for now I would construct the level with standard yellow caution trim).

Now I started making those assets. I always think in terms of re-usability when making meshes, and how I'm going to be placing them in the level. I made a length of straight pipe, a corner/bend, and a “joint” mesh, which I could use to join them together, hide the seams, and make the pipes connect more realistically to walls etc. With these three simple meshes I was able to create any system of pipes I wanted. Here's a pic:

I have to mention too that the reference pics I googled were a big help when making all these meshes, as I was able to see how things really looked. I don't consider myself a very good artist – I can't visualize things as good as some, but I can still make stuff if it's right in front of me, so that's where the reference pics are invaluable for me.

I then made the generic steel beam, the support for it, and the trim meshes. I knew they were going to be used a lot, and I'd like them to “stick-out” a bit, rather than being the usual flat BSP trim, and lastly because they were going to be striped with black and another dark colour - the crappy vertex lighting wasn't going to matter much - so I made them static meshes (on that note, I tessellated the steel beam a bit to compensate for the vertex lighting, as I knew it would end up being stretched across rooms and such, and wasn't going to light very well with huge, stretched polys). Something I don't like very much these days is seeing flat floors everywhere. I wanted to have some natural looking variation in the floor, so I made a generic “dirt pile” mesh, that fades out with an alpha channel:

I used this dirt pile everywhere. It makes the level look so much more natural, I can get some height variation, and I can make the dirt areas look lumpy and natural, and quite detailed, without having to use terrain.

… and that was enough to get me started. I made this first room, starting with the lighting (more on that in the “Lighting” section), adding a few large pipes, dirt piles and beams, then putting the right textures in, and the trim. Doing this one room to a reasonable state meant that I could get an idea for the style I was going to be able to pull off, so I wanted to get this room looking good from the start, as I'd most likely be doing the whole level in this fashion.

Now, I'm not going to go into this detail for every room in the map. Basically, I would start on each new, empty room, I would decide how I was going to light it and where everything needed to be from a functional point of view, put in the essentials first, then fill it up with miscellaneous objects I had pre-made in Max (by the time I was into the second or third room I had a good selection of pipes, planks, bars, grates, barrels and crates to work with, so filling the rooms up was not too hard). I just had to make sure I didn't make things “too big”, adding in small barrels and such to break up the larger objects in the rooms - as it can often be hard to acheive the right visual scale while providing areas large enough for UT2k4's movement and speed. I actually had a text file sitting on my desktop to remind me to add stuff in. Often I can get near the end of a map and just think “Oh man I just wanna play it! Just wanna release it!”… and so you do, and the map ends up unfinished. This time I was a bit more disciplined, and came back to areas every now and then to evaluate if they perhaps needed a bit more work. Some areas I made a unique mesh for – this was both to make it look better, and to make certain areas look more unique, so the player instantly recognizes where they are instead of having to look around for identifiable features. I used custom lightmaps on a couple of meshes – the “boiler tanks” and the main tower in the centre both have custom lightmaps. This was mainly due to them being quite large meshes, and I really wanted a bit more accurate lighting and defined shadow than simple vertex lighting can give. Below shows the difference between the lightmapped and non-lightmapped versions:

The lightmaps were applied using the UV2_Texture method, in the display properties of the mesh. I won't go into it too much here, but basically you can wrap a lightmap onto your mesh on the second UV channel in max (I just use the auto-unwrap/render-to-texture feature in max to save time), and you can import the unwrapped lightmap texture into UnrealEd, apply it as a UV2_Texture, and it will automatically take the UV coordinates from the second channel of the mesh for the lightmap, and overlay it on your mesh. Handy if you want nice shadows but still want to have tiling textures on your mesh (or want to use the mesh somewhere else without the lightmap).

Lastly, I had a look at optimization. Well actually, I kinda optimized as I went really, and tried not to create anything which I knew I would have trouble optimizing later. It's the kind of map that was zoned easily anyway, requires no anti-portals or even culldistances. Textures are all compressed and of optimal sizes, polycounts good, meshes that needed it have simple collision, overdraw is fine, all emitters set to high detail, fallback textures for any complex shaders... umm... and yeah - that's it, I think! A lot of the design and optimization decisions were probably related to having worked on consoles (Xbox & PS2) over the last year and a half... Believe me - work on those things for a while and it really makes you think about how you construct a level. Seriously.

 

1. Introduction
2. In The Beginning...
3. Making The Real Thing
4. Lighting
5. Artificial... Intelligence?
6. In Conclusion