Thursday, August 14, 2008

New Level

I've been meaning to post my current progress on a city map that I've been working on for Unreal 3. I gathered a lot of my inspiration from the building in Home Alone 2 where all of the traps were set up. I really didn't have a base floorplan for this one, as I wanted everything to focus around the main building that would be multi-story. I first blocked out the building (perhaps in too much detail, as I currently I have been having to delete a lot of BSP. I then thought of a cool mechanic to act as a border: having a street with passing cars that would hit the player as they crossed the line. After play testing this multiple times, it seemed unfair that a car would fly out so fast at the trigger of the player, which was both frustrating and unrealistic. Because of this, I decided to make the cars begin moving as the level begins. It would have been repetitive to have just one type of car at the same speed and the pattern would be easily spotted by the player and thus break the immersion. For this, I developed a complicated system in kismet that randomly chooses 1 out of 4 cars that will pass by, randomly pauses in between, and each have a different speed for variation. This seems to work really well was worth the effort.
Next, I wanted to have the same effect on another part of the level to really make the city feel alive. I copy and pasted the code and altered the matinee animation so that the cars would accurately travel a long, winding road in the distance. This may have been unnecessary, since the road is not easily seen by the player, but it really adds to the depth of the area "beyond" the play field (I hope players notice this one).
Taking inspiration from another amateur mapper's technique of building levels, I used a transparent grid texture on most of the BSP of the level (except for floors) so that I could see if walls were snapped correctly and to let me have more freedom in placing static meshes. It seems that a realistic level relies heavily on static meshes opposed to bsp these days, as opposed to older generations. Also, I've been doing a lot of research into Unreal's automatic occlusion that each Static Mesh provides. This greatly increases framerate: as a static mesh will not be drawn on screen if the player's view is blocked by another object. This does not seem to be the case with BSP.
From here, I began placing meshes and had previously came up with a water-overlay texture that I thought would be perfect in a nighttime city setting. What better for a Wow factor than water flowing on nearly every texture? This has been a long but rewarding process in learning the ins and outs of materials in Unreal. I have a better understanding of the use of instancing and how slight variations can be created in the blink of an eye.
After having most of the level blocked, I noticed that there were too long of stretches in the open areas on either side of the main building. I decided to add some flare by having a huge billboard (that's main purpose is to occlude) right in the middle of the alley. I had to make it have a purpose and narrative, so I thought it would be cool if it had fallen and crashed into one of the buildings. This would cause a lot of rubble, of course, so I took account by adding mounds of debris (the other section still has a framerate drop and I'm cycling through feasible means of occluding the insane amount of static meshes in that area.
After having water flowing and static meshes placed, I still thought the level could use a little more "umph." This is when I noticed that none of the levels in unreal have lit windows. This isn't the destroyed post-apocalyptic village like in unreal: it is a living, breathing metropolitan area. I had a couple of different lights in windows that I've noticed from observing houses at night: lights go on and off in certain rooms, stay on in others, tv's flash blue erratically, and occasionally there will be a party with a flashing strobe light (I have used these sparingly, in areas that would serve as clues to guide the player).
Yesterday, I noticed one building off in the corner getting no love. I decided to pamper it, then, so I proceeded to make it an abandoned building with boards and all. I then thought it would be nifty to make it haunted, so created a script to make the windows glow red and would add a screaming voice once the player got too close. This seemed fun but a little over the top, so I made the color transition as if an explosion were being set off: either by other npc's in the distance (it is a war, after all), or by construction workers using C4 to slowly destroy parts of the building.
Here are the screens of my progress:


























Right now I have most of the dressings of the level with mostly all of the close-encounter static meshes in place. What's next will be lighting, and sound, item placement, and bot pathing (probably in that order). This has been a bigger project than I had expected, but I like to finish the ambition that I have set for myself. The level has nearly evolved out of a mere Deathmatch, and would probably serve as a good CTF or single-player level.

No comments: