Movers and Dispatchers
 Home
 Overview
 Starting
 Interiors
 Exteriors
 Triggers
 Movers
 Skybox
 Decorations
 Inventory
 Monsters
 URLs & Notes

ATTENTION: This work is copyright 1998 Ron Andrade for Portal Special Edition. Do not duplicate for other than your own purposes or redistribute without the permission of the author: Ron Andrade (Gadget Factor)

Second Edition is Sponsored by

This chapter will be a slight departure of the overall tutorial as presented thus far.

We will start by creating the main structure for section three of the DMArray map. Then, we will spend  this and the next chapter or two concentrating on a few details. It is important to note, though the Special Edition tutorials are considerably more in depth than most you have seen so far, these tutorials are specifically written in a vague pattern.

The first and, perhaps second tutorials gave you specifics in terms of which buttons to click on and how many units tall or wide to make your brushes and even suggested which textures to use.  However, as we move along, you should be getting familiar with the routine. How to create a brush, how and when to intersect or deintersect, etc.

In this chapter, we will again jump into verbose mode. meaning, absolute specifics will be provided. The intent is not to build your objects for you, rather it is to show you how it greatly helps to plan ahead in these situations. Another reason for the specifics is to allow your rendered model to appear and work as closely as possible with the sample provided here and here. A note: these were built in haste, and do not example the attention to detail you must strive for. One of the bolts can be seen moving thriough the wall. To exit a mover room, jump while moving forward through the doorway.

Now, on with the show...

A very quick recap: You should now have a large (tall) outdoor area, with a lake and a plateau on high. Slightly above the plateau is the top portion of your "array" - a structure intended to resemble an antenna array of sorts. In your map, you also have a diversionary area that is accessible by the player through the lake itself. This area really has no purpose other than to enlarge our map for DeathMatch play and to add to the story or puzzles in single-player games.

We will add an additional "in-ground" location that will serve an important purpose in DM games - but no real purpose in single-player games ... unless you decide to give it a purpose.  :-)

Locate a cliff wall with a good view of the antenna dish. The further away, the better. Especially if the player can look down onto the top of the plateau. Imagine a room inside the rock - with a tiny opening for sniping at the dish or plateau. This is the purpose of area three.

When you have found an ideal location, create a room inside the rock - just on the other side of the cliff. Do not allow it to "punch" through. This will require subtracting your brush from the solid universe. The size of the room itself does not really matter - but create one with two-story ceilings and enough room to really move around if more than one player were to duke it out in here. Hint: Two stories will be approximately 200 units.  :-)

Create an other brush - very small, but large enough that a player can jump through in an emergency - remember, some players are very large and wide. Use the brush to create an opening or window in the side of the cliff. A location where a player inside the room can see out to the dish and possibly the plateau.

Now, let's duplicate the large room (click once on the tan outline of the large room and press CTRL-W to duplicate) - and move it down - way down so  it is level with either the plateau or the floor of your valley. The actual position does not matter because there will be no doors that allow access to this area. This whole underground location can only be accesses by a portal - which we will be covering in the next chapter. For now, try to enure the duplicate room is exactly beneath the original room. Use your top axis view to align the rooms. Now might be a good time to take another look at the tool bar (alignment tools)  :-) Press the F8 key and rebuild the geometry without Auto BSP - this will allow UnrealEd to know you have duplicated the room.

At this point, feel free to add any additional rooms or other structural decoration - but do not connect these two rooms and ensure one side is completely clear of any obstructions - for example: a large elevator that happens to be a similar size as the first two rooms.

Now we will begin our excruciating detail...

First, an explanation of the plan and  caveats. When creating a map that will include what we are getting ready to create, it is always a very good idea to have a very good idea of what you want. You should see clearly, in your mind's eye, what the player will see. Then, you have to construct the methodology in your mind based on what you know and your understanding of how the mechanical portion of Unreal and, hence, UnrealEd works.

What will be seen: The player, after entering the lower room via a portal will be presented with a large room, or perhaps several large hallways. Other than the portal itself, there is only one exit - a very heavy and intricate looking door.

When the player passes through the door, he will enter into another room. However, this room will have only a single exit: the door the player came through. Though, when the player reenters the door, he will find himself back in the first room, but there will be a window and  the portal. The portal will lead to a different location where the player entered from.

Explanation: The player, upon entering the first room will have nowhere to go but the single door at the other end. When the player realizes it is a "dead-end," he returns to the first room - but he is in fact in the third room - the one way above the first room.

Construction: This will obviously be done with three main rooms - two are stationary and one is really an elevator. If the moving room has no sound, the player should not realize he is moving. Thus, we create the effect that the rest of the world has changed.

Caveats: In a multi-player game, what will happen if a second player tries to enter the elevator room when it is in the other position? What if a player is at the top and another player is at the bottom and both wish to enter the "third" room? How will we hide the fact that the third room moves - since the door will not move with the room?

This brings us to synchronized and coordinated movers. There is no such thing in UnrealEd - you have to use your own creativity. So, here is how we will do it:

Solution: The doors in rooms one and two will actually "open" in the closed position and "closed" in the open position. Key frame 0 will be open and key frame 1 will be closed. This means the doors will remain open, until they are triggered.

To keep the player from noticing the movement (the area where the door is will be seen as the room moves) - we will have the room move at an incredible speed (about one second - or faster) - and dim the lights for that period. This will confuse the player just enough to allow you to move him from one location to the next.

To allow anyone at anytime to move up or down - you will create two moving rooms - they will alternate in position. This will allow a room to be available in the up or down position at any time. Also, to ensure the player is not near the door when the room moves - a switch will be placed at the opposite end of the room. The switch will activate the movement.

The doors themselves will be intricate pieces of machinery. Each door will have several moving parts - giving reason for a slower-than-normal opening operation. This will slow things down in the players' perception, allowing that one-second movement to be hardly noticeable if at all.

There. You now have your orders - go create it and e-mail it to this author for your grade.

OKAY - just kidding!  :-)

05a1We already have our stationary rooms. One end of those rooms (in the universe area) should be completely clear of obstructions. Use a cube brush and create a large hollow area at this end. The area should be ridiculously large. The player will never see it, so do not be concerned with textures or any of that. 05a2

Now, you cannot simply move a room. You need to create a mover that looks like a room - basically and very large elevator. Click once on one of your existing rooms and duplicate. Move the duplicated room into the large hollow area. We will call this area the "mover space."

Create a cube brush of similar size to your original rooms. Set the cube brush to be hollow with a wall thickness of 4 or 5. Create the cube inside the mover space. Resize your cube to be approximately 100 units tall by 100 units wide and set the breadth to be deep enough to penetrate the wall of this new room completely.

Place the cube where the door should go and perform an intersection. Then click the subtract from world tool. You now have a threshold where the door will go. Do not add any lights to this room. Even though we have not covered lighting, this author knows how many of you out there like to jump the gun.  :-)

Click the cube brush tool to recreate your brush. It should return to the last dimensions you used. Move the brush to the location of your fixed room where the door will go. Keep in mind, you will be matching this doorway to the doorway in the moving room. Repeat for the other fixed room. Intersect and subtract. These doorways will actually open into the mover space. When the mover room is placed flush against the wall - the player will not have an opportunity to see the mover space itself.

At the opposite end of the room, create a diversion switch - something that looks like a button or switch that the player will assume is a button or switch. (Note - the sample map provided with this chapter does not include the "dummy" switch.) Also, you should set the texture properties of the dummy switch to be unlit. This will allow the switch to glow in the dark.

Encompass the mover room with a cube, intersect and mover your intersected brush off to the side.

From BRUSH menu, choose SAVE AS. Give your brush a name, such as MoverRoom. This is only as a precautionary step. In case we need to create another room later on.

Click on the original mover room you used to create the brush with - press the delete key to remove it. Do the same for the doorway you created. Confirm the prompts. Using your custom brush, create a mover object by clicking on the MOVER tool.

Position the mover room so the doorway lines up with the doorway on the lower fixed room. Note: there may be a very slight overlap in the walls. This is not only fine, but recommended. It ensures no portion of the mover space will be seen by the player while the mover room is in its stationary position.

Using your brush, create a second mover and position it against the other fixed room. You will have two identical movers - each placed against two identical rooms.

Now a quick word about synchronized and coordinated movers. These two mover rooms will be synchronized movers. If you were to jump up and down, your feet will leave the ground together and touch the ground together. This is a good example synchronization. If you are running or walking, this is an example of coordination. While jumping, your feet and legs are moving together. It doesn't matter what they are doing or in which direction they are going - they are in motion at the same time.

In coordination or it could even be called "cooperation" - your feet are working with each other as you walk, but they do not move at the same time. One foot is firmly on the ground before the other begins to move.

These mover rooms will be synchronized so they move simultaneously and in conjunction with one another. In order to prevent these rooms from passing through each other (and providing a truly weird effect for the player) - you will need to create multiple key frames to cause them to move around each other.

The first position where the mover is placed is key frame zero. Do not move the mover without selecting a new key frame, or the new position will become the current key frame. For simplicity's sake, the bottom mover room will slide straight up to the upper fixed room. The top mover room will move toward the rear of the mover space as it comes down to the lower fixed room.

05bRight-click on the top mover room and select key frame one. Reposition the mover room to the rear of the mover space - about halfway down. Try to ensure there is enough space for the bottom mover room to move past. Right-click the bottom mover, select key frame one and position it halfway up the mover space. Vertically speaking, both mover rooms should be level with each other - and they should not be touching each other.

For each mover room, select key frame two and position it to the opposite fixed room, as snugly as before. Right click each mover and select key frame zero to put it back to its starting position.

Right click the first mover room and open it's properties box. Leave the sound alone and set it's object settings to the INITIALSTATE > TRIGGERTOGGLE property.

In the MOVER setting, set the NUMKEYS to 3 (the number of key frames to use) - leave all other settings here at their defaults (unless you wish to radically speed-up the mover)  :-)

In the EVENTS setting, leave EVENT at "None" and set the TAG to MoverRoom.

Close the properties box and open the properties box for the second mover room. Set all the properties for the second mover room to the exact same settings - especially the TAG setting.

Select CLASSES > TRIGGERS > TRIGGER from your object library. With your camera view, position  your viewpoint inside the bottom mover room. Right-click on the floor, near the entrance of the mover room where the door is. Add your trigger there. Double-click on the trigger to open the properties box and set the properties as follows:

TRIGGER: Leave defaults

SOUND: Set an ambient sound if desired

EVENTS:
TAG doesn't matter
EVENT should be the same name as the TAG of each mover room: MoverRoom

All other settings can remain with their defaults. Using your top axis view, move the trigger into the room right next to your "dummy" button. The proximity trigger should activate when the player enters the room and wanders into the vicinity of the switch or button. Because this is a proximity trigger, interesting effects will be seen every time a player wanders near the trigger.

Creativity Tip: If you do not desire the "randomness" of the mover as presented with a proximity trigger, try creating an additional mover. This one acting as a button or switch that become animated when the player bumps into it - and this new button mover triggers the gate.

Since the movement is so fast, movement will be completed by the time the player realizes the there is only one exit. Even after he has been here a few times, it may still take him a while to really understand what it going on. (evil grins unite!)  :-)

05cDuplicate the trigger and place it in the same position in the upper mover room.

Two triggers, each triggering both rooms. This is synchronization.

A single trigger activates all associated movers at the same time.

At this point, our mover rooms are basically complete. Note: the triggers that are in place now, when completed, will not actually initiate the room movement. We have it set that way for now. Make a note that you will come back to these triggers to reset them. They will eventually close the doors and the doors will trigger the rooms. Now to solve the problem of the gaping hole that will be left behind when the movers are in motion - the first set of doors. These doors are to prevent any other players from falling into the mover space while the mover rooms are in motion.

The first set of doors will be very plain - nothing special. Though we still need to pay attention to detail, it should be noted these doors will be visible for a very brief time. Your player may even be considered "lucky" to see them. The sole purpose of these doors is to provide an impassable barrier to "protect" the player from the mover space.

Create  a simple cube mover - about 100 units high and wide and about 5 or 10 units thick. Place key frame zero at the very edge of the fixed room's entrance into the mover room. However, set the door in an "open" position so the player can pass through. Set key frame one to be in a closed position. Key frame zero = "open door" and key frame one = "closed" door. In the door's properties, set the sound and movement speed as desired. Speed should be very fast - less than one second. A good example might be ".25" or even less. For this reason - you may not wish to include a sound. Set the Stay Open Time to 1 (one second) or whatever time you have set for the movement of your mover rooms. The doors and your rooms should be synchronized - they move together. Also, be sure the object is set to Trigger Open Timed.

Also in this door's properties, set the EVENTS > EVENT to "MoverRoom" and set it's TAG to "Gate."

Create a second "gate" and perform the same steps - positioning it against the other fixed room.

When this is accomplished, double-click the triggers inside the mover rooms and reset their EVENTS to "Gate." This allows the triggers to initiate the doors closing and the doors will initiate the room movement.

Our synchronized movers are now complete!

Now, for a little cosmetic makeup. To add an interesting effect, an intricately designed door in the threshold will have your players talking about your wizardry for years. Well, okay, maybe for a few days. Obtaining God status when it comes to level editing and design is not an easy task - and you are only as good as your last effort.

Before attempting to create a coordinated mover, you need to have a detailed design in your head. Because this author is very rusty at his telepathy and simply has not been practicing like the rules say, you will have to bear with the following description.

We will create a door with three moving parts. The goal is to give the door an appearance of absolute strength and security. The player's perspective should be that of awe - "whatever is on the other side must be something I am not supposed to see..." (okay, we all exaggerate at one time or another.)

This is also a tricky proposition because we need two of the same thing. Logic would dictate we completely assemble the first door, duplicate it and move the duplicate into position, then move the original into position. Unfortunately, all is not as simple as that. The mover is based on precise locations in 3D space. Meaning that when you select a key frame, that object's 3D coordinates are recorded. Select another key frame and the objects position is recorded again. You can move the object around, and wherever it ends up in position and rotation is where the object will be recorded as being for the current key frame.

Thus, the proper way to accomplish this unique task is to assemble the complete mover - and all its individual mover parts, position the entire assembly, then animate each mover.

In order to save time here, this door will be greatly simplified. It will be a "heavy" door with two "dead-bolt" beams holding it closed. It may be easier to explain the door in reverse order. The idea for this door will be somewhat like this: The door raises into the ceiling of the threshold to open. Before the door can open, the two heavy wood bars (dead-bolts) must slide out from the loops attached to the door. These slide horizontally into the walls of the threshold.

So the sequence will be like so: Door is activated, releasing the bolt-bars. The bolt-bars slide into the walls. The door rises into the ceiling. Obviously the door could be considerably more intricate. However, for the sake of this tutorial and this author's sanity, these three mechanisms should suffice in giving you a strong understanding of how to create these kinds of movers.

Remember, we need to create the entire assembly before animating any part of it. Locate a nice open area inside your mover space. If you feel you need more room - create one. :-) That is to say, create a very large dummy room somewhere else in your universe - this room will serve no other purpose other than to give you plenty of working space.

Because each part of the coordinated mover must be created and modeled separately, the following order of construction is strictly a matter of personal preference. many will feel that modeling then converting to a mover, then assembling will be more efficient that modeling, converting and assembling piece by piece. We will use the former method.

First, we need to model the actual door. The door will simply be a flat square with loops attached where the bolts will go. Let's get started:

05d1The size of the threshold is exactly 100 units by 100 units. Create a cube brush that is 110 units Tall and wide - and about 20 units deep (we want this thing to look really heavy.)

05d2Select an appropriate texture and add the "door" to your workspace.  Resize your cube brush to 20 units tall and 10 units wide and leave the breadth at 20 units.

Place the brush halfway out of the door and two-thirds up from the bottom and about one fourth from the side of the door. Add the cube. Add a second cube about one fourth from the opposite side, but level with the first. Now, move the brush out of the way. Hold the CTRL key and select both cubes. Duplicate them and move them down to one-third from the bottom. Press the F8 key to rebuild geometry.

05d305d4Resize your cube brush to a height of 16 and a width of 110. Leave the breadth alone at 20. Position the brush so it runs horizontally "through" two of the cubes you have created. The brush will be recessed into the door slightly. Be sure there are a few units left on the bolt loops at the top, bottom and front. Click the subtract from world tool. Your loops now look like loops. Note: you may need to turn off the snap-to-grid feature by clicking on the snap-to-grid toggle tool.

Move your brush behind the door - and away from the door. Now click the add to world tool. You have just created the bolt that will fit into the bolt loop!

When you have all the prongs in place (the center prong will penetrate the bolt - but that's okay for now) - add a cylinder at the pivot end. Use a cone inside the cylinder to create the pivot point.

Now we have the two models needed to construct our door.

Use a cube to encompass the door section and intersect. Save your brush, then move it off to the side and create a mover. Repeat this process for the bolt - except you will create two bolt movers. Now, assemble the components of the mover to create a complete door.

When your door is completely assembled, it will contain three individual movers.

Create a cube that encompasses the entire assembly. Click the select all inside tool and move the assembly into position - at the entrance to the bottom mover room (from the fixed room.) Set the door assembly into the entry way so the threshold shows somewhat.

Now animate the assembly: Move the top bolt on the assembly in one direction and the bottom bolt to the opposite direction. This makes for a more fluid movement. Again, remember to select key frame one before repositioning the mover. You may want to leave just a bit showing. This way, the player should not notice that there is no hole for these beams to actually slide into.  :-)

05kNext, move the door all the way into the ceiling of the threshold. Now, create a cube brush that fits snugly over the door in the ceiling - but do not perform an intersection. When the brush is positioned as desired (completely encompassing the door) - right-click on the door and select key frame zero. This repositions the door at key frame zero (closed) and leaves the cube brush. Click the subtract from world tool to create an opening where the door will go into while it is open (since this will be obvious to the player.)

Under normal circumstances, the level editor will decide to control this door via event/tag keywords. Similar to the way you have configured the mover rooms. However, for coordinated movers, there is a much better way. Allow us to introduce you to the Dispatcher. The Dispatcher is a trigger that allows precise control over several movers. Unlike the previous example, where several triggers activate several movers simultaneously, the Dispatcher allows you to perform the same tasks with far better management and far greater control over delays and timing. We will cover the dispatcher momentarily.

For now, let's continue configuring our door assembly.

Before we begin editing these movers' properties, let's decide now what we want to edit: We will set the bolts to move at a speed of one second and the door itself will take 3 to 4 seconds to open. The door will crush a player if he gets in the way. The door will remain open for 2 seconds (let's add a little excitement here.)

Each mover, except the door, should be in it's respective opened location - this will make it easier to select each and edit their properties. Note: except for the door, which is already at key frame zero, it is a good idea to reset each mover back to key frame zero when you have completed editing its property values. This will help to keep you oriented and move the elements "out of the way" after editing. Yes, we are only working on a simple three-piece mover, but these are good habits to develop now.

Right-click the door to bring up its properties box and set the following (remember to take notes):

SOUND: Ambient sound: Set this as desired
OBJECT: InitialState: TriggerOpenTimed
MOVERSOUNDS: Set all these properties as desired
MOVER: MoverEncroach: ME_CrushWhenEncroach
MOVER: MoveTime: 3
MOVER: StayOpenTime: 2
EVENTS: Event: None
EVENTS: Tag: HeavyDoor

Close the properties box and select your first bolt (beam.)

Set these properties for each bolt:

SOUND: Ambient sound: Set this as desired
OBJECT: InitialState: TriggerOpenTimed
MOVERSOUNDS: Set all these properties as desired
MOVER: MoverEncroach: ME_IgnoreWhenEncroach
MOVER: MoveTime: 1
MOVER: StayOpenTime: 2
EVENTS: Event: None
EVENTS: Tag: Bolt

Now, select the standard trigger in the CLASSES section of your object library. Add the trigger directly in front of the door assembly and set it's EVENTS > EVENT to Dispatch (or whatever you want.) Leave its tag setting at the default. Duplicate the trigger and place it on the other side of the door to allow a returning player passage through the door.

Viola! You now have a masterpiece of UnrealEd engineering! ... well, almost. Next to your trigger, add a dispatcher. The dispatcher trigger is located in your object library, in the classes section under "triggers." After placing the dispatcher, double-click to open the properties box.

Only two settings apply (in our case): the EVENTS settings and the Dispatcher settings.

05lFirst, set the EVENTS: TAG property to Dispatch (or whatever name you put in the Trigger's EVENT field earlier.) Leave the EVENT property alone (none.) Now, expand the DISPATCHER settings. There are two properties here: OutDelayes and OutEvents. Expand both these properties now.

OutDelays and OutEvents each have seven fields, numbered respectively 1 through 7. These two properties are directly linked. For example, data in field 5 of OutDelays corresponds directly to the data in field 5 of OutEvents. Let's first concentrate on OutEvents. These are the events you want triggered in order. For example, field zero should have the TAG keyword for our dead bolts. After all, the door would look mighty suspicious if it were to slide up into the ceiling before the bolts were removed. The keyword that goes here is Bolt.

Set field 1 to the keyword in the doors TAG: HeavyDoor.

Now, take a close look at the OutDelays property fields. This are self explanatory: the numbers here represent seconds, right? This is a correct assumption. However, a word of warning: When a mover triggers another mover, such as one door triggering another ... the first door will open, triggering the second door to open. The second door will remain open for the time specified (unless it is set to toggle) then the first door will close, completing its animation sequence.

The movers triggered by a dispatcher work differently: each mover will open and close according to its own properties. One mover will not wait for another mover to complete its cycle. The way the dispatcher works is pretty simple. It basically starts all movers assigned to it at the same time. The only difference is that the dispatcher can be instructed to delay the start of specified movers.

So, we will set the bolts to move immediately. Since the bolt tag (Bolt) is on field zero of the OutEvents property, we will leave field 0 set to zero in the OutDelays property. In other words, no delay at all. However, the door needs to wait for the bolts to clear the loops attached to the door before it can move. So a little math is in order here.

The bolts are set to move into the wall and wait there for four seconds. The time it takes the bolts to move from key frame zero to key frame one is 1 second. Therefore, the door should be delayed by at least 1 second. We will give it two for good measure. In field 2 of the OutDelays property, enter 2.

We now have a nicely choreographed opening door. unfortunately, this all presents a problem. Though the door will open as expected, the closing procedure will not be very pretty. The bolts will close long before the door comes down out of the ceiling. Thus, a minor change in the bolts' properties is in order. Close the properties box for the dispatcher. A red line should indicate your trigger is linked to the dispatcher, but there are no lines leaving the dispatcher to the other linked movers. This is normal. Note that the dispatcher itself can cause an event to trigger other trigger able items.

Holding the CTRL key, click on each bolt so both are selected. Right-click on one of the bolts and open the properties box. Since both bolts are selected, the properties you change here will apply to both movers. If a setting is different for each mover, it will appear blank. Changing a blank setting will cause the change to apply to all selected movers.

We need to simply change the StayOpenTime setting. Again, we need to consider what we are doing. The door is delayed for two seconds after the bolts have opened. Plus, the door takes three seconds to open and remains open for two more seconds. The door takes another three seconds to close.

Add all these seconds together: 2 + 3 + 2 + 3 = 10 seconds. In the MOVER setting, reset the  StayOpenTime to 10. You may even want to add an extra send or two. This should keep the bolts open long enough to provide sufficient time for the door to open, pause and close before the bolts return to their key frame zero state.

Now, when your player comes within the proximity radius of your trigger, the trigger will activate the dispatcher, which will activate your coordinated mover.

Now, to provide your player with access to and from this area. Yes, we said portals would be covered in the next tutorial, but we have reached this point in this tutorial ahead of schedule. So, let's move on, shall we?

First, ensure all movers are set to key frame zero. Rebuild your geometry and save your level.

Important note: Portals can be very finicky and tricky to create and operate properly. A portal is that fantasy mirror that will take you to a different realm. In this case, walking through this "magic mirror" will take your player to a different part of your map. A portal can be two ways or one way. We will create a two-way portal. One portal will be located in your bottom fixed room. The other will be created on your plateau.

In the first fixed room, create a hollow cube and add it to your world. Resize your cube brush to its current size minus about 10 or 15 units. Place this new brush inside your cube and move it to one edge. This will be the entrance into this portal. Click the subtract from world tool to create the hollow space inside the cube. This "closet" will become your portal housing. It should be large enough for the player to enter completely. In other words, if you were to add a door to this closet, the closet will have enough room to hold the player with the door closed.

Take note that the floor of the room may or may not be flush with the floor inside the cube. If not, and the floor inside the cube is higher than 1 or two grid squares from the floor of the main room, you may want to add a set of stairs or other means by which the player can easily access this portal ... unless you intend to make it a small challenge.

Select all of this portal housing and duplicate it. Move the copy out onto the plateau somewhere. Remember, these two portals will be linked.

Creativity Tip: You could even create a third, fourth or even fifth portal and have each portal link to the other, creating a "ring-around-the-rosies" type of loop. It would sure prove fascinating to watch your players figure it all out.

Now you will need to create a zone portal. This is the tricky part. It is important to remember that a plane brush has two sides, even though it is only one pixel thick. When a plane  is used as part of a portal - the sides matter. When you "enter" a portal, your are actually mirroring your self as you go through the plane.

This is difficult to explain, so please bear with the description below:

If a plane setup as a portal zone and is part of a transporting portal - one side allows you in and out. The other side is not used and will never be seen. So, if you have a portal that will transport the player from one location to another ... the portal entered will be Portal A and the portal where the player comes out will be called Portal B.

Regardless of which is which, the first portal you create in UnrealEd will include the "master" plane. The master plane is the first plane created in a set of portals. A set of portals are all portals that link to one another (more than two can be linked together.)

So, the master plane (the first one created) will have a side 1 (the side of the plane face out or away from the portal) and side 2 (the side of the plane facing into the portal..) When a player "enters" a portal - he is not really entering the portal housing. As soon as he touches side 1 of the plane - he immediately is placed in front of side 1 of the plane on the portal he is going to.

Think of each portal plane as a camera. The camera is facing away from the portal and sees everything  from the portals point of view. Everything in front of the plane is captured as an image and "broadcast" to the portal that leads to it. This is how Unreal shows the location of the other portal.

When a player runs "into" the camera, the player is instantaneously transported to the other portal and placed in front of that portal's camera - but facing away from the portal. This gives the player the impression of "passing through" the magic mirror.

Now, the reason for all that explanation: If side 1 of the master portal is facing away from the portal (Portal A) - then side one of Portal B's plane must be facing into the portal.

Now, with all the information ammunition, create a plane brush that fits tightly into the portal housing you have just created. You may even want some overlap.

Using the plane brush, create a single-pixel wall in the opening. Click the add special tool to add a zone portal. This portal can be invisible, transparent or non-transparent according to your preferences. Be sure the zone inside the cube is completely and tightly sealed.

Select a texture if desired, then click the add special tool and create a zone portal. Add a zone portal you your other portal housing (and all additional portal housings you may have created.) Using your camera view, maneuver into your first portal. In your object library, in the classes section, select INFO > ZONEINFO > WARPZONEINFO.

Right-click on the floor and add your WarpZoneInfo. Use your side or front axis view to position the warpzoneinfo so it is resting on the floor. Use your top Axis view to position the warpzoneinfo in the center of the housing and double-click.

In the properties box, set the WARPZONEINFO settings as follows:

DESTINATIONS: (Ignore this)

OTHERSIDEURL: This is the name of the portal where the player will be taken to.
In this case, put "P2" here (without quotes.)

THISTAG: This is the name of this portal
In this case, "P1" (without quotes.)

Next, set the advanced property:

ADVANCED: bDIRECTIONAL = TRUE

Close the properties box. You will notice the warpzoneinfo icon has an arrow pointing out of it. This was created when you set the directional tag to true. You rotate this arrow the same way as any other object. Rotate the warpzoneinfo icon so the arrow is pointing toward the rear of the portal housing.

Duplicate the warpzoneinfo icon and place the copy into your second portal housing. Rotate the arrow so it is pointing into the rear of the housing. Double-click the warpzoneinfo icon and set the OtherSideURL to the name of the portal the player will be taken to when he enters this portal. If you are linking only two portals, and you want a two-way portal, put the name of your first portal here. In this case: P1 - set the ThisTAG property to the name of this portal - in this case P2.

If you are creating a portal ring, simply put the name of your third portal into the OtherSideURL property. Then, in the third portal, put the name of the first portal into this property and so on. For a one way portal, simply leave the OtherSideURL property blank in one of the portals.

That's it. Your portals are now complete. Special note: when you test your map, your portal may react strangely. If this is the case, it is because the wrong side of one of your planes is facing the wrong way. Simply come back to UnrealEd - locate the first portal where you noticed this anomaly and rotate the zone portal 180 degrees. This should fix the problem. Also note: your portals may not work until you rebuild your geometry with the AutoBSP function turned on. Since we have not yet covered lighting, here is a quick way to add a little light for testing:

First, rebuild your geometry without AutoBSP and save your map. In Windows explorer - make a backup copy of your DMArray file - so if anything goes wrong, you can come back to this point.

Use your camera view to navigate your map and find the first location where you wish to place some light. Now, rebuild your geometry with the AutoBSP option turned on. Your map will become very dark.  From the classes section of your object library, select LIGHT.

Right-click on the ground in your camera view and place the light. It may not be very bright. Hit CTRL-W to duplicate the light until you feel the area is bright enough. Continue to navigate your map adding light this way until you feel you have enough to experiment with.

please keep in mind that these lights will not be permanent. They are only placed here for testing. When you are ready to test, rebuild your geometry using AutoBSP again. Do not save the file - press CTRL-P to play the map. As long as you do not save the file, it should remain intact and ready for the next chapter, which is, ironically, covering trivial things like lights.  :-)

If you do accidentally save your map - you should have a backup from which to restore.

In the next chapter we will deal with: Lighting and illumination effects.

Previous Chapter | Home | Next Chapter