Now that we have our "hollow" world carved out of our "solid" universe and the textures are satisfactory, it is time to start constructing the non-organic "man-made" structure. This is where your creativity and planning come into play in cohesion.
You should have a basic idea of what your overall level will look like and how it will play.
For our example, we will have a large antenna array and a few "underground" passages and the like. Most importantly, we want the MP play to be interesting and engaging. We also want to keep the player moving and provide a little "eye-candy" along the way.
For this level, it will be best to construct the architecture in three separate sections, one at a time. This will allow us to ensure each section is practically complete and properly "working" before we move on. By organizing your level-building technique in this way, you will save a lot of time and work. Especially when you decide to make those inevitable changes.
In your mind, separate your new world into three logical sections: The underground portion that will be at the base of the cliff in the valley, the exterior structure that will become the actual array and a second underground area based at the top of the valley, accessible from the plateau itself.
The first section at the bottom of the valley is entirely optional. We will use it to create a way for the player at the bottom of the valley to get back up to the top of the plateau. Not to mention, a way for the player to get out of the water. You could simply make the water level high and close enough to the edge of the valley floor to allow the play to "climb" out on his own, but we want to make the experience more interesting, especially if the player is running through this map for the first time.
Before you begin, download the sample map 01.unr right now. It is an empty world already carved out of the UnrealEd universe. [Note: this one will look familiar: I have taken the NYLeave map and chopped it up in an experiment to prepare for this tutorial - just so you don't think I was trying to cheat.:-) - ED.] Or, if you have followed along with the first tutorial, you can use the world you created there. Also, go ahead and create a cube brush. The architecture we create in this tutorial will be based primarily on the cube. However, you are free to use any shape you desire, of course.
NOTE: This sample map is intended to be viewed inside Unreal Editor - NOT the Game itself. There is not player stating position, so trying to open this map in your game may crash your computer.
Before we continue
there are a couple of things you really need to keep in mind while creating architecture in your levels: specifically
the player's size and movement ability.
The "official" exact numbers are available in the overview reference you should have downloaded in the overview section. So, these are approximate, easy-to-remember numbers:
If the player is human:
Keep all ceilings at least 90 units high unless you want to force them to crawl or crouch to get through.
Keep all hallways and arches at least 40 units wide or they simply cannot get through.
If the player is not human:
Keep all ceilings at least 110 units high unless you want to force them to crawl or crouch to get through.
Keep all hallways and arches at least 60 units wide or they simply cannot get through.
These numbers are strictly for guideline purposes and will allow a little "fudge-factor." So, unless you are intending to tease the player by allowing them a peek at the other side, but not access you should stick to these numbers as a minimum.
Lets start by adjusting our cube brush to these dimensions. Do this by right-clicking on the cube brush tool. Set your brush to a height of 100, width of 100 and breadth of 600. This gives us a 600 unit long rectangle that will easily fit any player who enters. Move your brush into position so it just skirts the wall of you world with most of it in the black void area. Place it way down low so it will be under the waterline (that you will add later.)
Use your three axis views to ensure the brush is positioned properly: make sure it is actually, though very slightly, extending into your hollow world, with most of the brush outside your world (in the "black void" area.) Make sure it is down low, almost to the very bottom, but not touching the floor. And use your 3D Camera view to preview the area
you will see the bright red brush clearly as it is positioned in your world (see the example image.)
Keep in mind as you position this brush that we will use it as a drill to dig a hole into the void part of the universe. Now choose a convenient texture. Note: when you decide on a texture library, it is a good idea to stick with the textures only found in that library. In this tutorial, we will be using "PlayerShp" (Player's Ship.) and several "General" textures. The general libraries begin with "Gen" such as "GenEarth."
Load the PlayerShp texture set by clicking on the LOAD button on the object library palette. Select the PlayerShp texture and commence to load and selecting your desired texture. When you save this level, only those textures you have used will reload the next time you edit this level. So, get into the habit of loading your texture library early on. This will ensure that you have access to all the textures in the library. In any case, feel free to experiment as we go along.
Once you have a texture picked out for the walls of your underground tunnel, click the subtract from world tool. This will subtract the part of your brush not inside your hollow world, from the solid universe beyond. It also creates and opening into your new shaft. (Note, the tutorial is still using the general earth texture for this part of the level.)
Note: If you discover that your brush was not positioned the way you would prefer, you could simply click the undo tool, move your brush, and click the subtract tool again. However, you would then need to rebuild the geometry to clean things up for the UE engine. Here is a simpler way: Look at any of your axis views zoom in tight if you need to.
Move your brush out of the way. What is left is the tan object that will be your shaft. Cool trick here: move that tan object into the position where you want your shaft to be and be sure it is slightly inside your world. Press the F8 key to bring up the rebuild dialog box. Uncheck the "Auto BSP" selection and click on the Rebuild Geometry button. This tell the UnrealEd engine to look at your map again and rebuild it from what it sees.
In a nutshell, you can move your "holes" around! just like any other object.
Now, reposition your rectangle brush so it is at the end of your new shaft, but rotate it a tad so it goes downward a little and maybe even in a slightly different direction. Remember that technique we used when building your outside arena? Use your axis views and even your camera view to ensure your rectangle brush is surely within the end of your shaft.
If you have good overlap, you are ready to reshape the brush for a perfect fit: click the deintersect brush tool. Your long rectangle will take on an unique shape. The end of your brush will not conform exactly to the end of your shaft
wherever the brush is in actual contact with the shaft. This provide a seamless joining of your brush to the existing object. Click the remove from world tool and your shaft is continued. However, in the "middle" of your shaft, the tunnel banks off into another direction. Sure, there are probably a few visible seams, but that just adds to the effect. Structurally, as far as the UE engine is concerned, you have a perfectly sealed connection.
Having a perfectly sealed connection is important. A good example of the need for such tight enclosures is the use of zone info actors. We will be covering these a little later on. For now, we should reset our brush into a cube and return it to the "straight and up" position.
From the menu bar, choose Brush -> Reset-> All. This should reset your brush to the default location, orientation and size. The default location is in the center of the universe, so you may need to zoom your view out to see it.
Grab your brush and move it back to the vicinity of your tunnel shaft. Right-click on the cube brush tool and bring up the brush properties. This time, we need to create a large room. Remember that all these tunnels will be under water. We need to create a way for your player to get out of the water and to access another portion of our map. You will create this room in two parts. Not because you have to, but because it is easier to explain for this tutorial.
Leave the default height of 256 units. That will suffice nicely. Change the height and breadth fields to a larger number. How large is up to you. It is recommendthat a minum of 300 or 400 in both directions be used. Position the brush at the end of your shaft. Also, when the shaft comes into this room, we want the floor of the shaft to be very close to the floor of the room. This leaves a relitively high ceiling as compared to the tunnel itself. This is important because we will be sealing-off this area a little later. Choose a non-earth texture for your room. We want this room to appear to have been constructed rather than just dug out of the rock. Add your room when you are ready.
Use the techniques you learned in the first tutorial to adjust the scale of your textures as desired.
Now, move your brush above the first room you have just created. Be sure there is a slight overlap of the bottom of your brush and the top of the room. Also, in the top axis view, move your brush into any direction slightly, at least 1/3 the length of the room. This will create a ledge that the player can climb onto in order to get out of the water.
At this point, we will go ahead and create our first zone portal. A zone portal is a siple wall that sections off one part of your level from another part of your level. It is never solid, so your players will pass right through, in many cases without ever knowing it is there.
To create a zone portal, an unique brush is needed. Click on the plane brush tool. You will have a square that is a single pixel thick. The plane should appear in the general vicinity of your current brush, so you shouldn't need to move it around too much. Right-click the same tool and select the proprties option.
Be sure the Floor/Ceiling option is checked and set the two sizes to the same amount, plus 10, that you used in your room. For instance, this tutorial has created a room with a width of 300 and a breadth of 400. So the tutorial's plane will be set to 310 and 410 respectively. This allows a very slight overlap of the plane through the walls of the first room, ensure a very tight seal.
Place the brush into the bottom-half of your room. The plane will be the water level, so place it very close to the floor of the top-half of the room. This will allow the player to climb out of the water and onto the floor of the top-half. Use your top axis view to ensure the slight overlap of the plane as it is positioned in the bottom portion of the room.
When you are certain the plane is properly positioned, load a texture library that contains water or other liquid serfaces
a good example is GenFluid. This is a nice collection of liquidity types of surfaces, most are even animated. Go ahead and select the first one that looks good to you.
Click the add special tool. This will allow you to create a special object, in this case: a zone portal. The small pop-down menu defaults to "regular brush" even though a player can always pass through a place object. Select "zone portal" from this menu. Normally, a zone portal will use the default settings of all other preferences shown on this dialog box. However, we want to make a change.
Because we are using a water texture, we do not want the "masked" option, so leave the masking set to regular. This is a portal from one zone to another, so the player will obviousely be on both sides of the portal at one time or another, so set the visibility to 2-sided. If 1-sided is selected, your texture will be visible from one side, but not the other. In other words, the other side will be invisible.
Since this is the waterline and you have chosen a liquidity texture, we do not want the port to remain invisible, so uncheck the "invisible" selection in the effects area. The next option, translucency, is entirely up to you. The sheet of water will look good either way. This tutorial will leave the "transpaerent" option turned off.
This makes the surface dense. The player cannot see into the water or out of it. This could make for some exciting surprises in deathmatch games
should an adversary be waiting on the other side! Solidity should pretty much always be set to solid. Don't worry, your player and any actors added to your level will be able to pass right through.
Click the Add Special to add the portal.
While we have our plane brush all set, zoom your top axis view outward so you can see the entire world. Then, right-click on your plane brush tool and reset the size large enough that the plane actually covers your entire level. This may not be a recommended practive, but it is quick and easy and does not seem to have a detrimental effect on gameplay. Next, be sure to raise the plane high, so it is just below the floor of your valley "plateau." Hopefully, you have left some room between the top of the room we have just created and the velley floor.
Follow the same procedure for adding a special brush as outlined above.
One note, because of the size of your lake area and the fact that the lake can be seen from almost all outdoor areas, it is strongly recommended that the transparency effect not be used. This could horribly slow-down the players gameplay. Select your texture and add your zone portal.
Once you have added your water surface, you may want to rescale the texture so it looks good from on high. Go ahead and reset your brush to ALL. Then, create another hallway that leads from the top (dry) portion of your underground room. Have it lead about 600 units away from the room, parallel with the edge of the lake. Feel free to exercise any creativity in this area that comes to mind. For the purpose of this tutorial, we are sticking with the very basics as far as creativity is concerned.
You will see how creativity can change this level from the basic map that it is, into a truly interesting game.
At the end of your second tunnel, turn your brush toward the lake. It does not matter how far out into the lake it goes, because we are simply going to create another "entrance" into our underground cavern. When you brush is connected to the end of your second tunnel and clearly extending into the lake, click on the intersect brush tool. This will cause the brush to disappear, except for the portion intersecting with the solid universe (or other object.)
Now, click on the subtract from world tool. This creates another hole or entrance to your underground maze. Now we have a problem: your player will be underwater again. However, you are not quite done with this portion of your maze just yet. However, before we continue, let's go back and check our textures. If you have selected textures with a specific pattern to them, the patterns may not be aligning up in a comfortable way. Let's go back now and fix them.
Locate two surfaces with the same or similar surfaces that do not quite line-up. For example, we will line-up the walls of our tunnel to the ceiling. It needs to look natural or the player will sense something is not right. First, center the ceiling. Start by left-clicking once on the ceiling in the camera view.
The surface now becomes highlighted and is ready for input. Right-click on the ceiling and select the properties option. The surface properties dialog appears. We have already covered some of the special effects and the scale features of this tool. Right now, click on the Align tab.
The first five buttons may or may not actually help you. Many editors prefer to simply use the rotate and panning tools. Since these are considerable more flexible, we will go directly to them. Click on the Rotate tab.
This panel is self-explanatory. Click the rotate or flip buttons until your ceiling is aligned the way you want it. It is important to note any nuances and small details. For instance, if there are any highlights in the texture, do those highlights make the phantom light appear to be coming from the same direction as the phantom light on the wall textures? If not, you may need to flip the texture. Attention to detail will pay off every time.
Next, right-click on one of your walls. The texture properties will now assume the information for the newly selected texture. Click the Pan tab. There are four untitled buttons arranged in a cross and a fifth called Reset. Between them are four radio buttons labeled 1, 4, 16 and 64. The Reset button should be self-explained.
The untitled buttons will scroll the selected texture in the direction respective of the button. If you click the top button, the texture will scroll up. The numbered radio buttons are pixel increments. If the 1 is selected, the texture would scroll up one pixel for each click. If the 16 were selected, the texture would scroll 16 pixels for each click and so on.
Use these panning buttons to align your textures to satisfaction. When you have all your hallway textures aligned to satisfaction, close the texture properties dialog box.
Now, back to that second hole in the wall. Create another cube brush. It should be the same size as the last one you used, so we want to make a slight change. First, maneuver it over the second entrance you created so it acts like a bridge, but covers the hole completely. Be sure the end of the brush facing the wall is flush with it, or even slightly into the wall itself.
At this point, we will switch from "digging" out of solid universe to "adding" objects to the hollow world. Make your brush as long as desired, but it should not cover more than half the lake. Be sure the brush is evenly aligned with your entrance, both vertically and horizontally. Right-click the cube brush tool and select properties.
Add ten units to the height and width of the brush. This will cause to brush to expand slightly, but it should not get any longer. Choose a texture for the exterior of your bridge and click the add to world tool. Now, without moving the brush at all, change the height back to its original size (current height minus 10 units) and add 6 units to the width. The brush will contract in height back to its size before the first change, but the width will expand further so that it extends outside the box you have created. Click the subtract from world tool. You are now subtracting solid mass from the block you created to make it hollow.
You could have simply created a hollow cube brush, but we ant to also know out the sides of this block. This is simple a quick and easy way to do it. You should now have two parallel "platforms" extending away from the wall.
Click the cube brush again and give it a good large size. Make it tall (so it will extend out of the water) and plenty of space inside. This time, we will make it hollow from the outset. So, also set the wall thickness to about 25. Click the build button and move the brush to the other end of your bridge. This will be a building, sitting in the water, which will be the player's destination. When the brush is positioned as desired (be sure it overlaps the bridge slightly) click the add to world tool.
Readjust your brush size back to height 100 x width 80 x breadth 50 and set the cube to solid (not hollow.) Position it at the end of the bridge that meets the building. Be sure the brush goes through the wall of the building and click the intersect tool, then click the subtract from world tool. This should leave you with a nice threshold into the building from the bridge.
Without moving the brush, select the plane tool. Go with the defaults of 128 x 128 and select the proper orientation (x wall or y wall depending on what you need.) Think of this plane as your door. Be sure it is positioned in the center of the wall and evenly centered around the new doorway
Click the add special tool and leave the other settings at their defaults, except the solidity should be set to solid. Click the add special button. Note: the portal will assume the current texture, but fear not! The portal will be invisible during play. Move the portal to the other end of the bridge and do the same thing.
Now, change the orientation of the plane brush to the opposite of what you have. Change the size of the plane so it covers the entire length of the bridge, with a little overlap. Also, be sure the plane is actually on the bridge and not just next to it. The goal is to completely seal-off the inside of the bridge. In the plane brush properties, select Transparent Window from the pop-down menu. Be sure solidity is solid and the others set to their defaults.
Move the brush to the other side of the bridge and repeat.
Remember how plane brushes are always non-solid no matter what the settings say? We need to keep the player from walking through the window and going for a swim and vice-versa. Change your plane brush to a cube brush. You may need to resize it to properly fit the "open" area of the bridge. Make the brush at least 4 units thick and move it into a simular position as your windows, just slightly inward. Change the "add special" type from "Transparent Window" to "Invisible Collision Hull." be sure solidity is set to solid and add it. Move the brush back to the other side and repeat.
NOTE: There are many people who have noted that this area, the underwater bridge, is filled with water when they test-play. You must ensure the zone portals AND the transparent windows are completely sealing-off the inside of your bridge. Also, you can substite "Zone Portal" objects for "Transparent Windows" - just change the properties from Invisible to Transparent before clicking the "Add Special" button.
Structurally, our bridge is now complete. As for our building, go ahead and fill the interior with some "shelving"
you know, platforms where the players can fight from and jump around on. Just so long as it is not one giant, empty room.
Using the techniques described earlier in this tutorial, create hole in the ceiling and a small, second room at the top. Seal the hole with a zone portal (important) and create an opening in the tiny room at the top, facing back to the floor of the valley. Just outside the door, create a half-circle platform or "balcony" where the player can stand. We will be placing our first mover here. Also, zone off the room from the outside using another zone portal. By the way, the "water" near the ceiling is intentional.
Now, let's create a swinging drawbridge as our first mover. This is to allow the player to get back to the valley floor where the array will be located later. Create a cube brush that has a height of about 20 or 30 and is about 50 units wide. Set the breadth to extend all the way from the "penthouse" you just created to the valley floor. Give it a little overlap, but be sure the brush is well above the ground at the other end.
Once you have the drawbridge sized right, set right, move the brush into a completely open, mid-air position. It should be well clear of any other structure or object. Click the add to world tool to add the drawbridge object don't move the brush out of the way. Swap, scale and align the textures as you see fit. When you are satisfied with your drawbridge, open the cube properties again and add 10 units to each size field. This will expand your brush so it encompasses your drawbridge entirely. Be sure the drawbridge is the only item inside your brush.
Click the intersect tool. Your brush now assumes the shape of all solid objects in your hollow world. What you may not have known is that all texture properties are included with an intersection or deintersection. Remember creating the original world?
Now, move your new brush back into position. Place it so the end near our penthouse is actually under the small balcony, and move it back, close to the penthouse wall. One thing you may have notice with all this brush play, is that little star that always seems to appear on every brush and on some objects. If you haven't figured it out by now, that star is your pivot point. Up 'til now, it hasn't been important.
However, we are going to swing our bridge out to the valley floor and then back again. So, we need to ensure our pivot point is in the right place. First, let's create our moving object. All moving structures or architecture in Unreal are known as "movers." Thus, when you have your bridge brush in a position you like, click the create mover tool and move your brush out of the way.
You now have a purple object. All objects of this color are movers. The color makes it easy to identify them at a glance. You may have seen many tutorials on movers and how to create them. You will note that we have just created our mover in the "opened" position. This is not an issue and it really doesn't matter. Besides, we are going to create a three-position mover anyway!
First, click on that original drawbridge you created that is now floating in mid-air. When it is highlighted, hit your delete key and confirm the prompt. Now, click once on your new mover so it becomes highlighted. Locate the corner of your drawbridge closest to the penthouse on the side of the direction the mover will swing to. Right-click on the vertex point located there. The red pivot point should appear on that vertex point. You are now ready to start animating.
Now, we should confirm for the UE engine, this particular position in the keyframe structure. Note that this probably is not a necessary procedure, but I am for playing it safe. Right-click on a porting of the mover that does not have a vertex point on it (a plain line) and select "Mover Keyframe -> Key 2" since we are already in the "open" position, we need do nothing more.
Next, repeat this step and select Mover Keyframe -> Key 1.
Now, rotate the mover 90 degrees in the direction you want. The mover should pivot on the pivot point. Remember, rotate, don't move. When you have the mover in your desired position, repeat the step: right-click and select Mover Keyframe -> Key 0. Key 0 is the closed position. In most cases, key 1 is the open position, but we have added a step in between them. After you have selected key 0, rotate the mover again, but this time, rotate it to a vertical position. When the mover is set the way you want it, select each keyframe again, but do not move or rotate the mover. It should jump to each respective position you set for it. Return to keyframe 0 and deselect the mover by clicking on any blank area.
Now, right-click on the mover to bring up the menu and choose "mover properties." An advanced dialog box appears. This is where we fine-tune our mover.
The mover properties dialog is an advanced dialog where you fine tune the properties of an object, actor, mover, etc. It seems to be easier to start from the bottom. Each line in the dialog is a title for that section. Expand the sound section by clicking on the + symbol next to the title.
The sound section appears. These settings do not control the sounds made by the mover as it moves, rather these are the ambient sounds in the vicinity of the mover. Note, ambient sounds are centered at the mover's pivot point. So any ambient sounds attached to this mover will be loudest at the end that pivots. Because this is an unusually large mover, chances are that your player will not hear the ambient sound as he moves to the other end of the bridge.
In your object library, change the object to SoundFX using the pop-down menu. You will need to load a sound library that contains the type of sound we want. Click the load button and choose the AmbOutside library. The SoundFX library itself will segregate the types of sound objects, usually, into two categories: looping and one shot. A looper is a sound that will play continuously, without stopping unless you set-up a reason for it to stop. The one shot sounds are just that: one shot. These sounds play once each time an event calls for it to play. In cases like this, if a looping sound is called upon to play, and different sound is not called upon to play (thereby stopping the first sound) AND the same looping sound is called upon again, you could actually end up with multiple instances of the same sound playing. In which case, each time the sound is called upon, you will get another instance of the sound. This could (somewhat) cause a drain of the player's processing power, not to mention a horrible sounding noise.
With this in mind, take care to choose looping sounds only when the sound will not be triggered on unless an other sound will replace it or it will not be triggered more than once.
For our ambient sound, click on the third pop-down menu in the object library and choose looping, if it is not already selected. It is usually the default. The bottom third of your sound objects should be a selection of various winds. Click on one and click the play button to hear it. Because they are looping, you will need to click the stop button when you are done sampling the sounds. NOTE: If you have upgraded Unreal with the 2.0.9 patch
the STOP button will not work. If the sound starts driving you up the wall with insanity, simply locate any one shot sound and click play.
Click the wind sound you wish to use. Then, in the area of your properties box where it says AmbientSound, click the word "none." The field will be ready for input. Click the small "Use" button to use the sound that is currently highlighted in the sound library.
The only other field we want to adjust is the SoundRadius field. Remember, our sound is centered at the pivot point, so we need to expand the distance reachable by the sound so our player will hear it at leat to the middle of the bridge. In multiplayer games, the player may never notice these things, but attention to detail is what creates a great level! Set the SoundRadius to a larger number but not too large. Around 100 to 150 should be good. Click the symbol to collapse the sound section.
Expand the Object section. You will not make any changes here for this particular mover, but it is important to know how the mover will be activated. The third line down is called InitialState. The default is "BumpOpenTimed." All this means is that when a player bumps into the mover it will begin its animation sequence. Click on BumpOpenTimed to see what other choices are available. If this were a standard lift or elevator, the proper choice might be "StandOpenTimed" which simply means the mover will activate if the play stands on it. Since our mover is in a vertical position while in its closed state, the player obviousely cannot "stand" on top of it to get it moving. So, for this mover, be sure the InitialState is set to BumpOpenTimed. By the way, the "timed" portion of this statement simply means the mover will close automatically after an amount of time has passed. Collapse the Object section and ignore the Network section.
Expand the MoverSounds section.
Though the ambient sound is entirely optional, this section should always be used or your player may get a feeling of deafness. This is where you will set the sound actually made by the mover as it moves.
In the object library, be sure you are in SoundFX and click the Load button. Select the DoorsMod library. The default category is "General" this is because these sounds are provided in sets: loopers and one-shots together.
Notice the list: a good example of a set are these three sounds: md2start, md2loop and md2end. These are specifically designed to work together, though you really do not have to. Click on you selected sound set that includes the "start" option. In your properties box, click the field for OpeningSound and click use. Now, click on the sound object you want that has the word "loop" in it, and set it to MoveAmbientSound in your properties box. Next, click on the "end" sound you want and set it to ClosingSound in your properties.
This may be slightly confusing for the inexperienced. "Opening" sound and "ClosingSound" do not refer to the mover as being open or closed. Rather they refer to the movers motion as it animates. The "opening" of the mover simply means the "beginning" of its motion. The MoveAmbient sound is what you hear whil the mover is in motion and the "ClosingSound" is what you hear as the mover stops its motion. Thus, these sounds are hear when the mover itself is in motion, regardless of whether the mover is "opening" or "closing." This also makes it clear why many of these sounds are in sets. They provide a smooth sound transition for the entire movement of the mover. Though, you can achieve truly unusual sounds by mixing and matching these sets.
Next, if you desire it, you can add a sound to the ClosedSound and OpenedSound fields. An example might be a door that opens to the outside at the top of a cliff, while the door is opened, a loud whooshing wind sound might be heard. But, when closed, the whooshing is cut-off by the closed door. In most cases, you will probably leave these set to none. Collapse the MoverSounds section.
Expand the Mover section. This is the meat of the customization of your mover. Many of these settings only work best in a single player game. Since we are designing our level to also accommodate a an MP game, we need to keep the game play itself in mind.
Therefor, the first field we want to look at is the BumpType field. The default is "BT_PlayerBump," which is fine for a human MP game. But for the purpose of playing with bots and single player actors, we should set this to BT_AnyBump. This way, when we add other characters for single player and bot match games, they too can activate the mover.
Next, we need to make a change in the EncroachDamage field. In most games, if you happen to be in the way of something moving, it simply bounces back to where it came from. In this game, however, we want to make it a little more realistic the player will actually get hurt if they are in the wrong place at the wrong time. This field is where you tell Unreal how badly to hurt the player (if he is hit by the mover) each time the mover "encroaches" on him. A good number here is on the conservative side, about 15 or 20 should be good. Just enough to let the player know that he should not be standing around in the wrong place when that mover comes swinging by.
For now, leave the MoverEncroachType field set to its default. In the case of heavy lifts, you could actually set the mover to crush any player foolish enough to be standing under it when it comes crashing down.
The MoveTime field is where you set the time, in seconds, it taks for the mover to go from closed to open. A realistic time here might be something in the order of about 3 or 4 seconds, due to the shear size of this mover (it must weigh a lot) but it is really up to you.
Now, remember that we have added created three keyframes to our movers animation. Thus, in the NumKeys, we need to change the default from 2 to 3. Otherwise, our mover will stop at the second keyframe (number1) and our players will be stuck at the penthouse, unless they need diving board practice. By setting this number to three, you are telling Unreal to keep moving the mover until it reaches the third keyframe (number2) and to consider that keyframe the "open" state of the mover.
The only other field we need to be concerned with is the StayOpenTime
this is where we tell Unreal how long, in seconds, to keep the mover in its open position. Remember, it is a long bridge, be sure to give your players enough time to get across before the mover starts to close again. If you really want to have fun
give it an unusually long time, like 8 or 10 seconds or so. This would allow the bridge to stay open long enough for one or two players to get across
but, in a multiplayer game, if a player comes along when the bridge is still open, and they are unsure how long it has been open, they may attempt to cross. Imagine the fun when the mover begins to close while they are half way across. Then they need to think fast. Go ahead and collapse the Mover section.
That pretty much does it for our mover right now. Go ahead and close the Mover Properties box.
In your object library, select Classes from the browse menu. In the object classes list, click on the (minus) symbol next to NavigationPoint. A sublist will appear. About half way down is a class called PlayerStart. Click once on it so it becomes selected.
Navigate your camera so it is near the first underwater entrance to your cave system. Move the camera up, out of the water and position it so your are looking at the ground just above that underwater entrance. Right-click on the floor or ground surface in the camera view. A menu appears. Below the usual "Surface Properties" selection is an "Add PlayerStart Here" option. Whatever object you have selected in your classes library can be added to your world this way. Click the Add PlayerStart Here option to place an icon in the area you have selected.
This is all there is to adding a player start position to your level. If you look at the player start position in your top axis view, you should not a red arrow pointing away from the player start icon (you may need to zoom in tight to see it.) This arrow indicates the direction the player will be facing when he starts the game. You can use the standard rotation methods to change this direction.
We are almost finished with this tutorial. However, there are a couple of loose ends we need to tie up before continuing with the next chapter.
Move your camera into the lake it doesn't matter where, as long as it is under water. In your classes library, expand the subsection called Info. Then, expand the sub-subsection called ZoneInfo. Click once on WaterZone.
As you have done with the PlayerStart class, right-click anywhere on the floor of your lake and select the Add WaterZone Here option. That's it! You have just created water.
Now, move your camera into that big building we created earlier. There are no steps inside (unless you have added some on your own.) So wee need to allow the player a way out. We will simply change the gravity here. Perform a quick double-check that you have created zone portals at both entrances to this building. One at the underwater bridge and the other at the large hole in the top leading to your penthouse.
In your object library, click on ZoneInfo (it has a + next to it) and then right-click on any surface inside your building and add your ZoneInfo class. The, double-click the ZoneInfo class icon. This achieves the same effect as right-clicking, then selecting the properties option.
In the ZoneInfo properties box, starting from the bottom, expand the ZoneInfo section.
Set bGravityZone to TRUE.
Expand the -ZoneGravity subsection.
The three axis's are: X = East and West, Y = North and South and Z = Up and Down. The default for Z is a negative. It is assumed here that 0 is equal buoyancy, meaning zero gravity, like outer space. Thus, the default planet gravity is negative gravity (it pulls you to the ground.) The default of 950 would be considered "zero" gravity, but 0 would be considered "neutral" gravity.
Enough of the confusing jabberwockey. If you make the number smaller (i.e. 1200) your player will get VERY heavy. Yes, the number is smaller because we are dealing with negatives. However, if you make the number larger, i.e. 500, your player will become lighter and be able to jump higher. Since we have a building that is roughly 5 or 6 stories high with platforms, you want to decrease the gravity just enough to allow your players to be able to jump from one platform to the next. Set your gravity to a good number that will also allow your player to jump from the highest platform (or floor) directly under the penthouse opening to that opening. This will require some experimentation on your part.
Start with a relatively lightweight setting, like 350 and test play this part of your level. If the setting isn't right, come back here and adjust this setting and test again. Do this until you are satisfied with your gravity in this room.
Note, you can also have some fun with a positive gravity setting in here, such as 50 or 100. The player will be pulled to the top of the room and could create an unique challenge! Remember, this game is called UNreal.
Of course, you can set ambient sounds for the zone as well. If you do, keep in mind that the sound will emanate from the Zone Info icon, so it should be placed appropriately in these situations.
For now, close the ZoneInfo properties box and press the F8 key.
This brings up your Rebuilder Dialog box. Be sure the Auto BSP box is unchecked. If it is checked, all lighting in your level will also be generated. Since we have not added any lights yet, your level would appear pitch black. No fun there!
Click the Rebuild Geometry button. When rebuilding is complete, save your level!
Press CTRL P to start Unreal and load your map.
You should be standing in the position where you placed your PlayerStart icon. You will notice your character is not lighted (the gun you are holding is only a silhouette.) Go ahead a take a walkabout around your level. Jump into the water and follow your shafts and into you low-gravity building. How does the underwater bridge look? Can you pass through the glass? Is the gravity low enough that it allows you to get up to the penthouse?
If not, press the TAB key and type "ghost" and press enter. This will allow you to move around your level by flying and passing through walls. When you get to a point you want to test in normal mode, press TAB and type "walk" and press enter.
Does your mover work properly? If any of these things, especially the gravity setting, are not working the way you would like, take notes and go back to UnrealEd and make your changes. By simply quitting the game, you will return to UE.
The next chapter deals with: Exterior architecture. We will be creating our full-scale antenna array, more movers, booby traps, puzzles and a more in-depth session of textures.
Please note: Each of these tutorials takes around 14 to 16 hours to write. I am working as fast as I can and I know you don't like to wait a whole week for the next incarnation to be posted. Thus, I will be creating a Questions & Answers page, beginning with the first question to be asked (are you going to be the one?)
This way, the content will be updated a little more frequently and the wait may not seem so long between chapters. If you have a question, please e-mail it to me. I will create the Q&A page with the first Question and Answer when I receive it. This complete tutorial will be made available for download after it is completed.
Thank you for visiting! |