The idea for the level initially came from my wanting to experiment with level streaming in UDK. I had seen another project that used level streaming to create a time travel effect. A player would move through ‘time’ by having two levels, one past and one present, and streaming the levels in and out to change the environment dynamically. Although level streaming won’t work for a multiplayer map, it did give me the idea to build a level that features the same basic area repeated with different details placed to create the illusion of different time periods. It seems like an interesting idea for a setting.
The first step towards designing the level was to try and sketch out the level. This helps me to solidify my ideas for the level by marking down what goes where, but also helps me work with proportions and how I want lay out the level. It also helps me look at issues with player flow and where to place items. As you can see from my sketches, my initial ideas for each section of the level were more simple and straight forward, but over time I added buildings, side sections, and changed the flow significantly by creating a road with a round-about rather then a straight road.
Because I’m not a good drawer and I like a more iterative design, once I had a more solid idea of the general look I wanted for the level, I decided to start building the sections that were very ‘solid’ in my mind and then work on filling in the gaps from there.
Landscaping? In my level design?
I knew from previous experiences that using BSP to create a flat ground for the level does not look very good, so I decided to start with a landscape section. I had never worked with landscape, so I had to do some research into how to create a new landscape and how to add a texture to it. After some work to get the right sized landscape, the next step was to put down the major landmark in my level that serves to give me the overall width of the section: the central road.
This road spans the width of each section and is its maximum width so making it is a good way to see how walking across the level feel and how its proportion looks. It was at this point that I discovered that UDK had not yet imported from Unreal 3 a number of extremely vital models for the my levels, namely cars, scenery to go by the side of the road, and the road itself. Of course no road model to build my road with was a set back but a good designer can build anything using what he’s got. I found a model for building edging that would work because it has a rounded and a straight section, and some sidewalk models and I began with them. Of course I wasn’t sure how big to make things since my model was not made in road size, so I had to improvise by using the existing Scorpion vehicle model and the Cathode player character model for scale.
It’s so pretty… can’t… look away!
The next thing I wanted to do is to add some of portal effect for the time portals that teleport between level sections. These happen to be at the end of the roads, so they could be added at the time. I knew I wanted to use cameras in the level to dynamically render onto the portal and give the player a live view of where the portal leads to. I didn’t know how to do this, so I looked some information on using cameras to render onto textures and added a wall to each side of the level to act as my portal effect. I also added a teleporter actor and had my initial test portals set up. I didn’t like the look of it though, it was far too flat and boring and obviously a wall and not a portal.
The next thing I though was to make it more like a lake, a surface that fluctuated and had waves. UDK has a fluid surface actor that does just that. Although I had not worked with them before, a little research on the subject allowed me to add a surface, place a material on it and add an actor to disturb its fluid surface and give it an undulating effect. At this point, I was unhappy with the material since it was a bit plain so I decided to make the material a bit more complex. I had not done any complex materials but I have seen how they are set up, so with experimentation and trail and error I eventually set up a much more interesting material that had moving noise on its surface, and some swirling rings. This was far more interesting looking. It also showed me another problem with my materials, I would need a different materiel for each portal since each had a different camera and base texture.
I needed a way to make my materials more manageable then having to recreate my material for each different portal. I happened to know that Unreal uses material instances to create a material that has variable parameters (its what they use to make materials blue for one team and red for the other without making two different materials). I had never had to use them before, so I looked up some information on them and then altered my material so that it had one basic texture with a parameter for the texture that the camera was rendering to. This let me create one material and use instances that simply had the parameter for which camera texture to use stated. One material and many instances. This not only makes things easier to organize and avoids recreating material for each portal but also makes altering the portal material easier. If I want to change the portal look, rather then having to change something in each portal material, I simply have to alter one material and every portal will reflect the change.
End of the day
At the end of the day, I had a basic level with a road, for scale and to begin to flesh out my level, as well as some initial portal set-up. I had to learn about several areas of UDK:
- Rendering from a camera onto a texture
- Fluid Surfaces
- Material Editor
- Material Instances
This is the how my level looks so far (its symmetric so the side of the level behind the picture here looks the same as the one pictured):