| NICK.MOHILCHOCK Designer | ||||||||||||||||||||||||||||||
| Unreal Editor 3 - Last Updated: April 4th, 2010 Checksum... OK | ||||||||||||||||||||||||||||||
Unreal Engine 3 is quickly becoming one of my favorite tools to work with. It has enormous flexibility (provided you know what you are doing) and makes other tasks outside of level design (such as particles and shaders) more accessible. I've been spending a few months now working with Unreal Tournament 3, and during that time I've built several test worlds - learning as I go and studying the video tutorials on 3DBuzz.com. I decided to make my first public release a small deathmatch/duel level loosely inspired by Fort Casey on Whidbey Island. The map features a WWII bunker on the coast of the Washington Sound in the approaching spring time. It would be a great way to try out a number of the engine's features (post-process volumes, terrain, foliage factory, etc.) and get acquainted with the games many available assets and editors (cascade, matinee, the material editor, and so on). I figured I could also write about my experience with it here for others to read and learn from. So, I did.
I was lucky to get a copy of Unreal Tournament 3 from a good friend a few months back. After 20-plus hours of tutorials, I started playing with the editor weekly and experimenting with what it might be capable of. I built several test worlds (including an airlock, a tropical island, and several incomplete multiplayer levels) but nothing I'd consider publishing to the net. So, to really get some good background on what goes into making a deathmatch level for UT3 I opened up a number of the source maps that come with the game to pick them apart and see what makes them tick. In particular, I took a look at DM-Biohazard and DM-Gateway (since they both dealt with similar themes and materials). DM-Biohazard for the most part taught me how to think outside the box in terms of utilizing a number of the static meshes that come with the game for world geometry, and the difference a few decals can make. DM-Gateway taught me a bit about utilizing the material editor to create instances of other materials for that cool 'frozen' look, while also teaching me a bit about the post-process volumes and various effects (billboards, particles, etc.). The BSP foundation came first - or the only portion of the level that would work as an occluder to either side of my bunker. I started by making the level an additive world and built the floor plan, then the walls, and finally the ceiling and second floor using additive brushes. I then began to carve out certain details in the floors and walls using subtractive brushes (mainly for the alcoves in the walls and the sub-floor maintenance area. Once the general floor plan was complete, I began texturing the bunker with variations of concrete until I found something that matched the bunkers at Fort Casey. I threw in a few simple lights and began working on the outside of the bunker - the first items of which were the water and sky.
I wanted to do something similar to DM-Gateway's frozen portion, which was to have a transition from natural rock to icy ocean, but I wanted to feature more of the water and make the island bunker feel more like a peninsula. So, as soon as I had a temporary water plane and sky sphere in place I began using static meshes of large, snow-covered rock walls as I had seen done in Gateway. This would be the foundation for which I would later drape terrain over. I needed some natural-looking player containment for the rear of the level, so I used some of the same rock meshes to form a cliff wall that extended out of both directions - creating a cape around the peninsula. finally, I was ready to begin laying down the terrain. There are aspects of the terrain editor that still mystify me to this day... like how to I merge vertices, or is it possible to blend more than one material over another using alpha information per vertex like I've done in previous Call of Duty games. Despite those aspects I forged ahead and created the snow-covered landscape that connected the outside of the bunker to the rest of the world. I ended up creating several meshes by cutting and removing certain sections around the bunker and the landscape. I was happy to learn that when it came time to adjust the height and noise of my terrain that the painting tool was very intuitive - much like how I had done in the past with Call of Duty. With the floor plan and structure of my level complete, I was ready to move on to detail and item placement.
For gameplay, I wanted to keep players moving around the world for the best weapons and armor. I also wanted to associate the bunker with survival, so the medium health units are both found within the bunker's domain. Armor is usually more sought after, so I made sure to place it all on the outside of the bunker towards the edges of the terrain (except for one which is concealed as a reward for exploration). Ammo is always tricky... you don't want to over-saturate the game space with it, you don't want to under-supply the players, and you don't want to unintentionally shift the balance of the playing field to one end with one particular weapon. I ended up applying a rule to only provide three pick-ups for each type of ammunition, equally distributed around the level from the location of the weapon itself. This rule only varied when accounting for the expenditure of ammunition for specific weapons (like the Stinger and Link Gun for example). Like many of the other locations in Unreal Tournament 3, I wanted my bunker to feel as though it had been re-purposed for entertaining combat. Also like Unreal Tournament 3, I wanted to bring the location further into the future as the other locations are meant to feel. I spent a lot of time browsing through machinery and other decorative meshes - trying to settle on what a bunker would actually need, what would be the essentials. I focused on lighting, air ventilation, and water. I also settled on supply containers, which meant big reservoir tanks and the always popular crate & barrel supply. Pipes, ducts, and wires were also essential elements for the circulatory systems of the bunker. I kept the item list of decorative meshes for the exterior area to a minimum - primarily for preserving the barren, frozen theme of the landscape - but also to reduce the amount of objects drawing at once for performance. I chose a few rocks that I could use multiples of (with snow shaders applied), and a couple bushels of grasses (which I swapped the material for a dead variation). I ended up making a material instance of ocean water (because I needed an up-scaled version that could be stretched on my water plane mesh), another for a mesh that needed it's glowing colors changed, and two materials I made from scratch - a dark, rubbery-smooth material for the cables that would light well with reduced specular, and a red-glowing light source for this "gun light" mesh I found that looked really cool. Placing the detail objects where they made sense - both in relation to the environment and gameplay - was challenging to say the least. In particular, making detail obvious but keeping it out of the way and making the pieces all fit without too much scaling was a hassle at times. I tried to re-use the same static mesh in as many ways as possible to extend it's usefulness throughout the level (no professional designer in their right mind wants to use an individual asset only once unless they absolutely must), and in some ways this really helped with thinking outside the box when it came to using a number of these decorations. I ended up mounting big tanks of liquid to the ceiling with the girders that some of the smaller tanks rest on, and using floor grates to cover a number of the walls with another texture behind them. I used a really detailed floor material to swap out with the one in use on the crates - one that didn't show up as dark and was a better match for the color scheme of the level. I also started using more subtractive brushes and did a good amount of clipping/splitting to add material details and trims to the otherwise flat BSP. Decals were an obvious necessity, since the majority of the bunker's structure was flat BSP and not detailed static meshes. I used a number of default decals that were available, in particular the water stains and the default impact mark were great for using around pipes at spots where they met with the floor or walls. I also used one of the dirt decals to help distinguish one of the floor levels from the others. On the outside of the bunker, I got an idea to use the same distorting icicle material as part of a "decal mesh" over a number of the existing static meshes. I managed to clone and offset these meshes by a few units, then apply the icicle material to them, making the rocks underneath look as though they were encased in a thick layer of ice. I also used the terrain to my advantage where it met up with the concrete floor tile meshes of the bunker by slightly elevating the snow to peek in between the cracks of the tiles. In addition to this, I used more of the "ice meshes" as transitional elements between snow and concrete (a trick I had seen done in DM-Gateway).
The next detail was lighting. One of my favorite views of Washington is in the morning when riding the ferry, and the weather is overcast. The wind is calm, fog rests on the water, and faint silhouettes of objects beyond are barely visible. This was going to require a collection of tricks which included multiple directional light sources, height fog, and a post process volume. The directional lights came first, orienting them all in a similar (but not parallel) orientation and with similar values of intensity and color (a cool grey). The height fog came next, setting the density and color to mimic light scattered through the air and allowing the sky to be barely visible in the background. I also added a number of simple 2D cards with fog materials applied to them to ad a cheap layer of density in certain areas (mainly around some of the cliff peaks and near the waterfall). The last part of the puzzle was the post-process volume. I enabled the DOF (Depth Of Field) and blurred the horizon to give the fog a more realistic distortion. I also modified the color values - desaturating the scene and brightening some of the darker areas to remove some of the contrast that comes with looking through fog. This also meant that I had to place post-process volumes inside the bunker, to make the color and contrast more appropriate for indoor lighting. I shifter the colors to a warmer, more saturated feel, kept the settings I used for the DOF effect, and disabled the motion blur. I pushed the transition times for the volumes to 1.2 seconds, making the fade between indoors and outdoors less jarring and more natural. Lighting the interior was less problematic. I still wanted to relay how cold the overall temperature was, but also to give the deeper interior of the bunker some warmth. I felt the best way to do this was to use cooler white fluorescent lights on the ceiling and around the upper levels (along with some small, cool red lights for accents), and use warmer yellow work lights and red-hued fluorescents for the lower areas close to the floor. This worked well as it allowed me to use the red-colored fluorescents as the guide lights for players to the lifts, as well as being the light sources on the dynamic channel to make them visible. Bounce lighting was done as a second lighting pass, and I covered both the interior and exterior with small point lights near spots that I felt would be particularly reflective (i.e. ice). This meant that I could regain some of the contrast I had lost from desaturation and fog by introducing more colors reflected by water and frozen glacial rocks. I placed a number of these cool blue "highlights" just off the coast of the peninsula and in a couple of the water holes on the south-eastern side of the map, as well as near any face where ice was present. For the interior spaces, I pushed the falloff exponents higher and more focused to create hot spots from focused light sources.
Sounds and particles are often overlooked when making a map, but they are as vital to gameplay as lighting and as important to the environment as static meshes themselves. To start, I looked for particles that could relay how cold the atmosphere was, and what sorts of objects could be giving off particles. Certainly the vents from the air ducts could be pushing out condensation, and the waterfall could use some mist where it meets the ocean, but what about wind and snow? I decided to concentrate on the effects that helped relay the chill in the air. This meant placing particles on the vents, foggy cones of light in front of the major light fixtures, and rolling mist on the ocean where the waterfall pours in. As for other effects, I used simple sounds to relay water drips, machines humming, and gentle winds blowing between the craggy rocks around the shore.
The last part of creating this level was collision and performance. Most of the collision work had been done for me, seeing that foliage factory meshes have none, and most of the meshes I used were either per-poly or had their own simplified collision models. However, there were a few instances where I went through and changed some objects to COLLISION_WeaponOnly and COLLISION_None just to simplify some of the indoor spaces. I did this as well to all of the background meshes and all of the ice coverings I had made. There were a few places where the player didn't traverse over terrain or objects as well as I'd hoped - and I wanted to smooth out collision over surfaces like stairs and the like - so in those locations I placed a blocker brush as a ramp for players to easily glide over. Performance was a challenge, since there were a couple places (despite good effort) where you could see roughly 70% of the level. So I started going through groups of objects by type and manually setting the cull distance. This wasn't difficult since the map is small and the majority of different objects all resided within the bunker itself - especially small items like signs, cables, wall ornaments, pipes, and so on. It became more difficult when moving outdoors and setting these values to some of the landmark items around the terrain. Most of these objects had to have their cull distance values set manually, or set to zero and toggled to ignore culling volumes. After all that fuss, I placed a culling volume into the level anyway and set it to a value almost equal to the length of the peninsula, just to be cautious. Beyond that, I also set the detail level for a number of objects so they would be excluded from rendering on low-end systems. The first items to be excluded to Medium and High detail settings were the floor tiles, signs, and particles. After that I excluded the ice meshes, cables, and several of the big metallic bolt plates on the walls and ceiling of the bunker. Soon I was down to individual pipe couplings and non-essentials like decals. This saved me about 5-10 frames-per-second in some areas (which is a lot considering how under-powered my PC is).
In the end, the level took a little over 3 weeks to complete. Breaking it down; it was about a week to get the BSP and meshes into the world, the second week spent on gameplay and details, and the last week on lighting and performance issues. Not bad for a complete, playable level. I imagine it would have taken a lot longer had I been creating my own assets (static meshes, textures, sounds, particles, etc.) from scratch, but in a standard production it takes anywhere from 6-to-12 months for a level to reach completion. So, yeah, I'm kinda proud of myself. You can check out the finished level in the screenshots below, or you can be adventurous and download it from the Downloads page. Enjoy!
Shortly after creating Thaw, I felt the need to build something warmer and try creating a Subtractive BSP (Thaw was an Additive BSP) to get a feel for the difference in construction. A cavern was the simplest and obvious choice for me. There have been a number of limestone and granite caves that I have visited, as well as a couple abandoned mining shafts which were good reference for incorporating the look and feel of the level. In the past I'd been inspired by locations such as the abandoned Calico Mine in California (the actual mine, not the ride at Knott's Berry Farm - although that too ended up becoming part of the inspiration for some of the decorative aspects) and so I pulled from those references. The first thing I needed was the BSP, so I began by setting up a main room and two smaller rooms, then a few hallways to connect them once I felt the distance apart was good. Since most natural caves have fairly uneven walk-able surfaces, I offset the heights of the floors and ceilings by a minimum of 64 units and a maximum of 256 units. Next I would need to lay down some terrain for the floor so that I could navigate between all the rooms and their otherwise unreachable offsets. However, I was conscious of the fact that making the entire floor out of dirt would add to the repetitive quality of the overall map, and so I decided to leave one of the side rooms completely flat without terrain. I also planned on having other elements for the floor, such as bottomless pits, pools of water, and one-way only drop-offs that would offer tactical advantages in gameplay, as well as provide valuable landmarks for navigation. The bottomless pit would be the only portion o the mesh that would need any cutting, so it was a fairly simple task to get all the intended rooms and hallways connected and looking natural. The next phase would be the walls and ceiling. I began doing what could almost be considered "research", looking at other levels in Unreal Tournament 3 that featured natural terrain and how it was built. I also took note of what assets were used so that I would have a pool of resources to choose from. There were a number of large and small rock meshes that could be scaled, flipped, and rotated for a number of unique combinations that were also a natural fit. I briefly played around with some of the "crystals" included with some of the cave elements but decided to leave them out, because they began to evoke a more "fantasy-like" feel than what I originally was shooting for (this turned out to complicate things later on). For the non-terrain room, a more artificial theme would be necessary to set it apart from the rest of the environment. I looked for a number of "utility" and "support structure" items that had a sub-structure quality to them... like plumbing under a building. There were a number of pipes, steel beams, supports, and some walk-ways that I figured would be good for elevating the path from the actual floor and allow me to network more elements underneath. The next big hurdle would be lighting. Lighting is difficult without a primary source, and has the potential to look silly or very out of place. I had mentioned earlier that choosing to not use the crystals would complicate matters for me, and with regard to lighting this was definitely true. Those crystals would have very easily become consistent natural sources of light throughout the cave, but because I had chosen to go with a more realistic feel it was out of the question. Instead, I turned to the "set dressing" that the Calico Ghost Mine ride at Knott's Berry Farm in California used for a number of places around that themed area of the park. They incorporated a number of gas lamps and lanterns hung around from posts and support beams, as well as nailed to walls or even sitting on stacks of boxes and barrels. There is also a section of the Train Ride at Knott's through the mine where the cave is filled with bubbling pools of water, sulfer, and phosphorescent stone - which gave me some ideas for adding a little color to the lighting scheme and allowed me to get away with having some darker sections throughout the caves. For the structured interiors, I chose some basic spot lamps to embed and hang from the ceiling. After the lighting situation was taken care of, the cave needed some ambiance. This required two basic elements; sound, and particles. The sound was easy enough, as UT3 has a fairly decent-sized audio library to pull from. Particles by themselves were also not a big deal, but the challenge for both would be to get them to work together to add some life to the caves. I had already placed a ventilation shaft into the map with a spinning fan to supply some movement to an otherwise static area, but I planned on having a variable-speed loop of a minor earthquake every 45-60 seconds throughout the entire level. During the quake, the camera would jitter, the earth would rumble, and dust would fall from the ceiling all at the same time. All of that would require some setting up in Kismet, which wasn't a problem. The "Camera Shake" was probably the most difficult thing to set up, because I had to hunt down where and how it was being called and used (which turns out you need a pre-recorded camera motion track to play). Once the layout, details, lighting, sounds, particles, and other ambient elements were finished, it was time to start balancing the gameplay items and getting the bots to run through the level with confidence. Thankfully there were no lifts or complex navigation that would be difficult for pathing (not that setting up pathing on a lift is difficult, just annoying). Getting everything working and playing right took a couple of days play testing and making adjustments. Overall, the entire process took roughly 2 weeks. I even managed to get a decent review on UT Unlimited. You can download it from their site, or right here on the Downloads page. If you give it a try, send me an e-mail and let me know what you think!
One of the first test levels I built was intended to be something completely different, but has since been my testing ground for all sorts of things. It's a constantly changing, living, learning city block where I can try out all kinds of fun with Kismet, Matinee, and the other tools in the Unreal 3 toolbox. I like to show it off - not because it plays great or is unique in any way - but rather to show off what's possible in just 2 days of work.
I took one of my existing incomplete Capture The Flag maps and re-tooled it into a "Sampler" - or rather, an example of different disciplines all exercised using the editor and it's assets. What I started with was a general floor plan and a spawn point - no prefab objects, no textures, no lighting, nothing else. The original idea of the level was to create a city block that would represent the base for one team (with streets that would allow vehicles), then mirror it to create a base for the opposing team. First, I closed off all the streets and openings where the level was meant to join up with it's mirror image and began applying simple textures. I began browsing through a number of assets that matched those textures and tones and began propagating the space with facade buildings, props, and decals. Then I wanted to bring some life to the city; so I took a taxi cab prefab and used Matinee (the Unreal 3 cinematic editor) to animate a route that the vehicle would drive. Next, I began lighting the space by playing around with different values using the real-time lighting system in the editor. After that, I began placing all the game-specific objects into the world (weapons, health, path nodes, spawn points, etc,) and played through the space a few times. Finally, I did a second detail pass and placed more props, decals, and non-essential lights into the scene - being mindful of performance.
While I'm not the biggest fan of speed mapping, I think this level is a good measure for potential in regard to what the editor is capable of (especially in the hands of a novice user like myself). I'm continuing to work on the foundation I built, and learning more as I go. As to whether I will eventually release a polished, public version of the level is so far unlikely. However, you can check out some screenshots of the end result below. Questions and comments are welcome as always.
Back to top | ||||||||||||||||||||||||||||||
| Website contents © 2009, 2010 Nikolai Mohilchock | ||||||||||||||||||||||||||||||