---- - - ----- - ---- ----- ---- ----- --- - -- --- | -- \ | | | | - - | | | - \ - - | - \ - - / -- | |/ / / -- -- | -- / | | | | | | | | | | \ \ | | | - / | | / / | / \ \ -- | -- \ | | | | | | | | | | / / | | | - \ | | \ \ | \ \ \ -- | -- / | - | - - | -- | - / | | | | \ \ - - \ -- | |\ \ -- / -- ---- ----- ----- ---- ---- - - -- ----- --- - -- ---
_ _ _ _ _ ___ _ _ _ |_ | | |\ | \ / | | |_| |_ | |_ \ / /\ | / \ |_> <_ | |_| | \| \/\/ | | | | |_ |_ |_ \/ / \ | \_/ | \ _>
_ __ __ __ __ |_> \ / /_ /_ /|// / / /_/ /| /_/ /|// |_> | __/ /_ / / / /_ / / / | / | / /
Build Tricks: Fun With Elevators by Semicharm
This is a guide to using and controlling Build's elevator sector effects. It will take you step-by-step from the basic principles for controlling elevator effects to the creation of a fully functional elevator that works like a real elevator.
Each section outlines solutions to solving problems from previous sections and adding new features to them as well, so please do not skip ahead. Also, each section includes examples, tips, and notes on how and why these tricks work. This guide also includes sample maps to demonstrate the effects detailed in each section.
This guide assumes that you are familiar with all of the basics of using the Build editor and creating sector effects. If you are still learning Build, I recommend getting "The Map Editing FAQ", by Jonah Bishop. For those who already know how to use Build, I recommend reading "The Build Tricks Tutorial", by Patola. Many of the "help sector" tricks are used to great effect in this guide.
Table of Contents
Introduction Controlling the Elevator
Section 1: Simple Three-Floor Elevator 1.1 Introduction 1.2 Setup Figure 1a Rooms and elevator Figure 1b Separating Room3 from the elevator 1.3 Mutilswiches 1.4 Setting up the Stop Figure 1c Adding a Stop to the elevator Figure 1d Tags and corresponding movement of the elevator 1.5 Setting the Starting Position of the Elevator
Section 2: Simple Four-Floor Elevator 2.1 Introduction 2.2 Setup Figure 1a Rooms and elevator Figure 2b Separating Room2 and 4 from the elevator 2.3 Setting the Starting Position of the Elevator
Section 3: Elevator Doors 3.1 Introduction 3.2 Controlling the Doors Using Two-Way Trains 3.3 Ceiling Door Figure 3a Adding a ceiling door to Room1 3.4 Sliding Door Figure 3b Adding sliding doors to Room2 3.4.1 A More Realistic Elevator Door Figure 3c. Connecting the elevator to the doorway of Room2 Figure 3d: Connecting the elevator to the doors of Room2 3.4.2 Metal Gates Figure 3e: Adding metal gates to Room3 3.4.3 Another Sliding Door for Elevators Figure 3f: Adding sliding doors to Room4 Figure 3g: Connecting the elevator to the doors of Room4 3.5 Correcting the Timing of the Doors 3.5.1 Using Two-Way Trains to Delay the Elevator 3.5.2 Using Auto-Close Doors for Timing 3.5.3 Adjusting the Timing of the Doors 3.6 Setting the Starting Position of the Elevator
Section 4: Elevator Call Buttons 4.1 Introduction 4.2 Complex Switches 4.3 Setup 4.3.1 Setting Up the Switches Figure 4a Call button for Room3 4.3.2 Controlling the Stops 4.3.3 Setting the Starting Position of the Elevator 4.4 Adding Switches to the Elevator 4.5 Adjusting the Timing of the Doors and Stops 4.6 Adding Buttons to the Elevator 4.7 Call Button Lights
Section 5: Advanced Topics 5.1 Design Issues 5.1.1 Adding More Floors to the Elevator 5.1.2 Player Staring Points 5.1.3 "Floor Rise" GPSpeed Bug 5.2 Creating Elevator Platforms 5.3 Complex Elevators 5.3.1 Creating Free Standing Structures in an Elevator 5.4 Elevator Transport Effect 5.5 Single Door Elevator Figure 5a Connecting the floors to a single doorway Figure 5b Adding the track and sliding sectors Figure 5c Completed effect 5.6 Myst Elevator
Closing Thoughts
About the Author
Introduction
Normally, elevators in Build only go between two floors, but this doesn't reveal how they really work. If there are more than two sectors connected to the elevator's sector, things begin to get interesting. Take either of the "elevator platform" effects for example. When the elevator is activated, Build looks at the floor heights of the connected sectors to see if there are any that are lower than the floor of the elevator's sector. If so, Build lowers its height to the height of the next lower floor. If it is already at the height of the lowest sector, then Build raises its height to the height of the next higher floor. Contradictory to the Build documentation, both "elevator platform" effects are identical and interchangeable.
Unfortunately, they are not particularly useful. The other two elevator effects however will do the opposite. If there are any connected sectors with floors that are higher than the floor of the elevator's sector, Build raises its height to the height of the next higher floor. Otherwise, Build lowers its height to the height of the next lower floor. With this in mind some interesting effects are possible.
Controlling the Elevator.
While this by itself may seem useful, there's a catch; once an elevator effect reaches the highest sector, it will only go back and forth between the two highest sectors. However, there is a way to use all of this to our advantage in order to control the movement of the elevator. To do this, the floor heights of the connected sectors need to be moved. If the heights of these sectors could be controlled, the movement of the elevator could be controlled as well. Since it does not make any sense to move the doorways connected to the elevator, they need to be separated from the elevator with another sector.
Now all that is needed is to connect new sectors to the elevator and set them to go between the lowest height for the elevator and any height you want. The easiest way to do this is to use the "floor rise" effect. These sectors will be called "Stops". When you want the elevator to stop at a particular height, just set one of the Stops to go to that height. After the Stop has moved into place, activate the elevator and reset the stop to the lowest height. When the elevator is activated, Build first looks for the next highest sector and then the next lowest sector. Since the Stop would be the only sector that is higher than the other connected sectors, it will always move the elevator to that height. Of course, it can be forced to go to the lowest height by not setting any of the Stops before activating the it.
One thing to note is that if the Stop is moving when the elevator is activated, the elevator will move to the height where the Stop was at that moment, so make sure that the Stop is not moving first. However, it is OK to move a Stop after the elevator is activated because Build only checks the heights when it activates the elevator.
Well, that is enough theory. Now for some practical examples that you can use in your own maps!
Section 1: Simple Three-Floor Elevator Difficulty: Intermediate Map: EX1S3.MAP
1.1 Introduction
The first problem to tackle is to make an elevator go between three floors. This time we'll use several shortcuts so that we can focus the Stop itself.
The easiest way to control the elevator and Stop is to use a multiswich. Since the multiswitch can only activate four consecutive tags, in order, the elevator will go to the next floor each time the switch is activated like so, floor 1->2->3-> 2->1->2...
1.2 Setup
First, create an elevator with three adjoining rooms. Call these Room1, 2, and 3. - Set the sector floor and ceiling heights of each of the rooms. - Set the height of the elevator floor to the height of the floor of Room1. - Set the ceiling to the height of the ceiling of Room3.
Figure 1a Rooms and elevator (top and front views) +--------+--+--------+ +--+--------+ | Room2 | | Room3 | | | Room3 | +--------+--+--------+ | +--------+ | | | | |R | +--------+ | |o | | Room2 | | |o | | +--------+ | | |m | --+--x | | --+--x |1 | | +--+ | +--+ y Room1 | | z +--+
Room3 needs to be separated from the elevator so that it does not interfere with it. - Spilt the elevator sector by creating a sector in the elevator and connecting it to the doorway of Room3.
Figure 1b Separating Room3 from the elevator (top view) --------+------ /| | +| Room3 --+--x +| | \| y +------ -------++ Room1 |
You should make this sector very narrow so that it is not seen when playing the map.
- Now set the sector tag of the elevator to 19 to make it an "elevator up" effect.
1.3 Multiswitches
- Add a multiswitch (#147) to each room and in the elevator.
Note: Use sprite #147, NOT #146. It works like the normal multiswitch, but only activates one tag at a time. Also, it activates the second tag, of the four tags that it can activate, the first time the player uses it in the game.
The multiswitch requires four consecutive tags, so for this example use tags 11 to 14. - Set the LoTags of the multiswitchs to 11.
Note: Sprites in elevators tend to act strangely. - Make the multiswitch one-sided. - Face it against the back wall so that it cannot be seen. - Make it really big, so that the player can press anywhere on the back wall to activate it.
The elevator needs to be activated every time one of the multiswiches is activated. - Add four Activators to the elevator a set their LoTags to 11, 12, 13, and 14.
1.4 Setting up the Stop
Next, add a Stop for Room3 so that the elevator can go there. - Connect a sector to the back of the elevator. - Make it a "floor rise" SectorEffector (SE31). - Set the height of the floor to the height of the floor of Room1. - Set the height of the SE to the height of the floor of Room3 - Set the angle of the SE to 512, so that the Stop starts at this height in the game.
Figure 1c Adding a Stop to the elevator (top and front views) ++ +-----++-------- ||<-Stop | || --------+-----++-------- | || Room3 | | | || Room2 | | Room3 | SE-------- | | | || --------+ +-------- ~ ~~ ++----++ ~ ~~ | | | |+----+| | Room1 --+--x || || --+--x | || || | y || ||<-Stop z Room1++----++
Here is how to setup an elevator Stop. The Stop needs to be at Room3 before the elevator can go there. In this example it's best to do this when the elevator goes from Room2 down to Room1, so that it has enough time to move into place. This needs to happen when the multiswitch activates tag 11.
- Add an Activator with a LoTag of 11 to the Stop.
The Stop also needs to be reset after the elevator goes to Room3. - Add another Activator with a LoTag of 13 to the Stop.
Figure 1d Tags and corresponding movement of the elevator (front view) +--+- | | 14 / \ | +- | | | | | | -+ | \ / 13 | | 11 / \ -+ | | | | | | | --+--x | +--+ \ / | 12 | | z +--+
The Stop needs to move quickly so that elevator cannot be activated again while the Stop is moving. - Add a GPSpeed sprite to the Stop - Set the LoTag to 1024.
Note: Even though it would be preferable to set the speed even higher, this can trigger a bug in the Build engine that prevents the Stop from reaching the set height. While it is possible to work around the bug, it can be tricky to do so.
- Finally, set the height of the elevator's ceiling to what ever you want.
Once you've tested the elevator in the game you'll want to hide the Stop so that it cannot be seen while playing the game.
Note: The map, EX1S3.MAP, is the polished version of the original prototype that I used to test the multi-floor elevator trick.
1.5 Setting the Starting Position of the Elevator
Even though the elevator in this example is setup to start at Room1, it can also be setup to start at Room2 or 3 as well. To do this, the elevator needs to be setup as if it is at that room during the game.
To setup the elevator to start from Room2 - Move the floor and ceiling of the elevator sector up to the height of the floor and ceiling of Room2. - Change the spite of the multiswitches to sprite #148, which activates the third tag the first time the player uses it in the game.
To setup the elevator to start from Room3 - Move the floor and ceiling of the elevator sector up to the height of the floor and ceiling of Room3. - Change the spite of the multiswitches to sprite #149. Which activates the four tag the first time the player uses it in the game.
When the elevator goes to Room3, the Stop needs to be reset. Since the elevator is starting at Room3, the Stop needs to at the at the lowest height at the start of the game. - Set the angle of the SE in the Stop to 1536.
Tag Reference
Tag Use Activates 11 Send elevator from Room2 to Room1 Elevator, Stop 12 Send elevator from Room1 to Room2 Elevator 13 Send elevator from Room2 to Room3 Elevator, Stop 14 Send elevator from Room3 to Room2 Elevator
Section 2: Simple Four-Floor Elevator Difficulty: Intermediate - Advanced Map: EX2S4.MAP
2.1 Introduction
For another practical example, we will expand the elevator from Section 1 by adding a fourth floor. This time the elevator will move like so: floor 1->2- >3->4->1->2... Unfortunately, some of the shortcuts will not work this time, so things will get a bit more complicated.
2.2 Setup
Using the map you created in Example 1, connect another room, Room4, to the elevator that is higher than the other three. - Set the height of ceiling of the elevator to the height of the ceiling of Room4. - Add another multiswitch in Room4.
Make sure that the switch in the elevator is not blocking the doorway of Room4. Most of the space on the walls of the elevator are used for the four doors. In the sample map, EX2S4.MAP, there is a tall, thin multiswitch in each of the four corners, such that they are not seen during the game and the player can still press on any of the walls of the elevator to activate them.
Room2 did not need a Stop in the previous section, but this time it does. - Add two more Stops to the elevator, Stop2 and 4, so that the elevator can go to these rooms.
- For Stop 2, set the floor to the height of the floor of Room1. - Set the height of the SE to the height of the floor of Room2 - Set the angle of the SE to 512.
- For Stop4, set the floor to the height of the floor of Room1. - Set the height of the SE to the height of the floor of Room4 - set the angle of the SE to 512.
- Also add GPSpeed sprites to Stop2 and 4 and set their LoTags to 1024.
Figure 2a. Adding Room4 and Stop2 and 4 (top and front views) Room4 +-----+++-+ | |++++ Room4 || ||| | | ||||| || ||| | ++----++++++ || ||| | -------+ 432 +------- |+----+SE | | | | ||<-Stop4 Room2 | 19 | Room3 | || | | | | || | -------+ +------- | |++|------- ++----+----+ | |||| | | | | |||| Room3 | Room1 --+--x | |||| --+--x | | |SE|------- | y | |||| Z | |||<-Stop3 | |||| -------+ ||++ | |||| Room2 | ||||<-Stop2 | |||| -------+ ||SE | |||| | |||| | |||| |+----+|||| || ||||| || ||||| || ||||| Room1 ++----+++++
Stop4 needs to be at Room4 before the elevator can go there. It is best to do this when the elevator returns to Room1 and this needs to happen when the multiswitch activates tag 11. - Add an Activator with a LoTag of 11 to the Stop.
The Stop also needs to be reset after the elevator goes to Room4. - Add another Activator with a LoTag of 14 to the Stop.
Also, Stop2 needs to be at Room2 before the elevator can go there. It is best to do this when the elevator returns to Room1. - Add an Activator with a LoTag of 11 to the Stop.
The Stop also needs to be reset after the elevator goes to Room2. - Add another Activator with a LoTag of 12 to the Stop.
In Section 1, Room2 did not interfere with the movement of the elevator, so it did not need to be separated from the elevator. However, this is rarely the case, so Room2 and Room4 need to be separated from the elevator. - connect sectors to the doorways of both rooms like we did for Room3 in Section 1.2.
Figure 2b Separating Room2 and 4 from the elevator (top view) Room4 | ||||| ++----++++++ ------+ \__/ +------ |\ /| | Room2 || 19 || Room3 --+--x |/ \| | ------+ +------ y ++----+----+ | | Room1
- Remove the sector tag from these sectors - Set the height of their ceilings to the height of the ceiling for the room.
They could be higher, but they need to be at least this high. You should also make these sectors very narrow so that they are not seen when playing the game.
- Finally, move the ceiling of the elevator back down.
Once again, after you've tested the elevator in the game you will want to hide the Stops so that they cannot be seen while playing the game.
2.3 Setting the Starting Position of the Elevator
This time the elevator can start from Room1, 2,or 3, but not Room4. Starting the elevator from Room4 would require using the normal mutliswitch, sprite #146, which activates two tags each time it is used. Because of this, it will not work properly with the stops.
To set the starting position of the elevator, it needs to be setup as if it is at that room during the game.
To setup the elevator to start from Room1 - Set the floor and ceiling of the elevator sector to the height of the floor and ceiling of Room1. - Change the spite of the multiswitches to sprite #147, which activates the second tag the first time the player uses it in the game.
When the elevator goes to either Room2 or 3, the Stop for that room needs to be reset. Since the elevator is starting at that Room, the stop needs to at the at the lowest height at the start of the game.
To setup the elevator to start from Room2 - Move the floor and ceiling of the elevator sector up to the height of the floor and ceiling of Room2. - Change the spite of the multiswitches to sprite #148. It will activate the third tag the first time the player uses it in the game. - Set the angle of the SE in Stop2 to 1536.
To setup the elevator to start from Room3 - Move the floor and ceiling of the elevator sector up to the height of the floor and ceiling of Room3. - Change the spite of the multiswitches to sprite #149. It will activate the four tag the first time the player uses it in the game. - Set the angle of the SE in Stop3 to 1536. - Set the angle of the SE in Stop2 to 1536.
Tag Reference
Tag Use Activates 11 Send elevator from Room4 to Room1 Elevator, Stop2, Stop3, Stop4 12 Send elevator from Room1 to Room2 Elevator, Stop2 13 Send elevator from Room2 to Room3 Elevator, Stop3 14 Send elevator from Room3 to Room4 Elevator, Stop4
Section 3: Elevator Doors Difficulty: Expert Map: EX3S4D.MAP
3.1 Introduction
For the next example, we are going to add doors to the four-floor elevator from Section 2. This section will explore several styles of doors and how to get them to work in sync with the elevator. The techniques discussed here can be applied to not only elevators, but all kinds of other effects as well!
3.2 Controlling the Doors Using Two-way Trains
First we need to use a trick to control the doors.
- For this task create four two-way trains (ST31;SE30), one for each door.
Let's call them Train1A, 2A, 3A, and 4A.
Note: For those who are not familiar with this trick, the two-way train can be used to activate two consecutive tags and the length of the track controls the timing between activations. It also locks every switch that has the same LoTag as an Activator in the train's sector. I assume that it does this to prevent the player from trying to activate the train while it is moving. This is very important because it also prevents the player from interfering with the elevator as well.
The trains do not need to be fancy, simple squares will do. The tracks should be just wide enough to fit the train and at least 14 units long at the largest grid size.
Note: Do not connect the tracks to any of the rooms, because you do not need to see the trains when playing the game. However, sometimes it can be useful to see the trains when debugging the elevator.
- For this example set the HiTag of Train1's SE to 111. The door should open when the elevator arrives at Room1 and closed when it leaves Room1. - Add two Activators with LoTags of 11 and 12.
- Set the HiTag of Train2's SE to 121. - To open and close the door for Room2 add two Activators with LoTags of 12 and 13.
- Set the HiTag of Train3's SE to 131. - To open and close the door for Room3 add two Activators with LoTags of 13 and 14.
- Set the HiTag of Train4's SE to 141. To open and close the door for Room4. - Add two Activators with LoTags of 14 and 11.
3.3 Ceiling Door
Start by adding a simple ceiling door to Room1. - First, create a sector for the doorway where Room1 connects to the elevator. - Set the height of the ceiling to the desired height for the door. - To create the door, spilt this sector twice, making three sectors.
- Make the middle sector a "ceiling door" (ST20) - Add an Activator with of LoTag 111, the first tag for Train1.
Figure 3a Adding a Ceiling Door to Room1 (top view) Room2 | | Room3 -------+ +------- ++----+----+ +----+ | +----+ <-door --+--x +----+ | | | y Room1
Now is a good time to test the door.
If the door does not work, double check the settings for Train1 and the door.
If the door opens before the elevator arrives at Room1, make the track for Train1A longer. If the door stays closed for a long time after the elevator arrives at Room1, make the track for Train1A shorter. It's just a mater of trial and error.
3.4 Sliding Door
Another type of door commonly used for elevators are sliding doors (ST25;SE15), so add a pair to Room2. For this example uses my simple method for creating sliding doors, but any method will do.
- First, create a sector for the doorway where Room2 connects to the elevator. - Set the height of the ceiling to the desired height for the door. - Add two points to each white-wall of the doorway. - Use these points to connect a new sector for each door.
The doors should meet at the middle of the doorway.
- Set the sector tags of the doors to 25. - Add a SectorEffector with a LoTag of 15 to each door. - Angle the SE's so that they point toward each other. - Now, lower the ceiling of the door sectors to the floor. - Move their walls up against the walls of the doorway without overlapping.
Figure 3b Adding sliding doors to Room2 (top and left views) | Room4 | | ++------- |+----------------+| ------++++ || || || |||| || || || |||| || || || |||| || || || Room2 |++| || || || |++| || || || |||| || || || |||| | || || || | |||| --+--x |+-------++-------+| --+--y ------++++ | | | | ++------- y z | Room1
You can look at the example map, EX3S4D, to see how this should look. This may sound harder than it really is, but in practice it is easy to make compared the style of sliding doors used in the game maps.
Since the doors are closed at the start of the game, use the second tag for Train2 to activate them. - Add an Activator to each door with a LoTag of 122. - Also set the SE's HiTag of one of the doors to 126 and the other to 127.
Note: Both doors have to have Activators or else the player could open one of them. Because both of the doors have Activators with the same LoTag, their SE's also must have different HiTags.
Again, you should test the map to make sure that these doors are working correctly.
3.4.1 A More Realistic Elevator Door
While these sliding doors look fine for an elevator platform, they do not look like the doors you would see in a real elevator. Real elevators have two separate sets of doors; one is attached to the elevator shaft at each floor and the other is attached to the elevator itself. So now we'll modify the set of sliding doors to Room2 to make them look like real doors!
Before we continue, now would be a good time to save.
Remove the sector separating Room2 from the elevator by joining the elevator sector with it, connecting the doorway of Room2 to the elevator.
Figure 3c. Connecting the elevator to the doorway of Room2 (top view) Room4 | ||||| ++----++++++ ------+ \__/ +------ | /| | Room2 | 19 || Room3 --+--x | \| | ------+ +------ y ++----+----+ | | Room1
Regardless of how you made the doors the basic process is still the same. - Set the height of the floor of the doorway and door sectors to the height of the floor of Room1. - Connect the corner points of the doors that are closest to the elevator.
The doorway should now be split.
- If you used my method for making sliding doors, make sure to lower the ceiling of the door sectors to the floor.
Note: If you made doors with white walls, like the style used in the game maps, just connect the corner point of the doors to the point on the red wall between the them that is closest to the elevator.
- Join the elevator sector with the part of the doorway that is still connected to it.
Now the doors should be connected to the elevator itself.
Figure 3d: Connecting the elevator to the doors of Room2 (top and front views) | Room4 -------++-+ ++---------- || | -------+++ Room2 || | ||| || | ||| -------++ | | ||| | | --+--x Room2 |++\_connected door->| | | |++/ points | | z ||| | |+- ||| | | || ||| --+--x | || Room1 -------+++ | | || ++---------- y +-++- | Room1
In 3D mode you should see the door to Room2 from inside the elevator. - Use the 'O' key on each door to orientate the texture with the elevator ceiling.
If you move the ceiling of the elevator, the door textures should move with it.
If this did not work, DO NOT SAVE! Reload your map and try again. If you still do not get it to work correctly, look at the example map, EX3S4D, to see how this should look.
- Now realign the textures on both sides of the door and test the map.
3.4.2 Metal Gates
While writing this guide I thought of two more designs for sliding doors, so I included them as well. Next we wil add metal gates to Room3. These would be very fitting for a map with an industrial or ghetto setting.
These doors require using my method for making sliding doors; the style used in the game maps will not work this time.
Follow the directions used for the doors in section 3.4 to create two doors in the doorway of Room3, only this time do not lower the ceilings of the door sectors.
- Connect both of the corner points of the doors where they meet, splitting the doorway twice. - Join the elevator sector with the part of the doorway that is still connected to it.
Now the doors should be connected to the elevator itself.
- Raise the ceilings of the door sectors and the sector in between them up to the height of the ceiling of Room4. - Lower the floors of these sectors to the height of the floor of Room1.
Note: Their ceilings have to be at least this heigh or else they will not look correct.
Figure 3e: Adding metal gates to Room3 (top view) | | | -+-+-+-++ +++-------- ||| ||| ||| ++| Room3 ++| ||| ||| | ||| --+--x Room1 +++-------- | -------++ y
Since the doors are closed at the start of the game, we need to use the second tag for Train3 to activate them. - Add an Activator to each door with a LoTag of 132. - Also set the SE's HiTag of one of the doors to 136 and the other to 137.
- Add a mask wall to both walls of each door. - Use the 'O' key on each door to orientate the texture with the ceilings of the elevator and Room3.
Make sure to align the textures on both sides of the walls.
When you are done there should be a set of gates in the elevator and a set of gates at Room3. Both sets will open when the elevator reaches Room3.
You should test the map to make sure that these doors are working correctly.
3.4.3 Another Sliding Door for Elevators
I do not know what to call this one. It is the style of elevator doors that are common in office buildings.
Note: While this can be done with the style of sliding doors used in the game maps, my style is much easier.
Follow the directions used for the doors in section 3.4 to create a single door in the doorway of Room4. - Make the door only half as wide as the doorway.
- Add two points to the edge of the door. - Connect another door to it. - Make this door half as wide as the doorway, so that the door closes it off, and half as thick as the other door. - Also, position the door about half way between the elevator and Room4.
The smaller door will need to move the entire width of the doorway. - Add a GPSpeed sprite to this door and set its LoTag to 512.
Figure 3f: Adding sliding doors to Room4 (top view) | Room4 | +----------------------------------+ +----------------+ | | +----------------+| | | | | +----------------+| | | | +----------------+ | | | | +----------------------------------+ | | | | | +--+--+ | -------+++-+ +-+ --+--x ||| | Room2 ||| y ||| - Now add two points to the edge of the bigger door, one on each side of the smaller door. Position these points as close to the small door as you can.
Note: These points are needed to keep the smaller door from warping the edge of the bigger door, or at least so that this is not seen.
Since the doors are closed at the start of the game, we need to use the second tag for Train4 to activate them. - Add an Activator to each door with a LoTag of 142. - Also set the SE HiTag of one of the doors to 146 and the other to 147.
Now connect them to the elevator. - Remove the sector separating Room4 from the elevator by joining the elevator sector with it, connecting the doorway of Room4 to the elevator. - Add a point to the side of the doorway near the smaller door. - Connect it with the corner point of the door that is closest to the elevator to split the doorway. - Join the elevator sector with the part of the doorway that is still connected to it.
Figure 3g: Connecting elevator to doors of Room4 (top view) | Room4 | +----------------------------------+ +----------------+ | | +----------------+| | | | | +----------------++ | | | +----------------+ | | | | | | +--+--+ | --------+-+ +-+ --+--x | | Room2 | y |
- Set the height of the floor of the doorway and door sectors to the height of the floor of Room1. - Lower the ceiling of the door sectors to the floor.
In 3D mode, use the 'O' key on each door to orientate the texture with the elevator ceiling Realign the textures on each side of the doors.
You should test the map to make sure that these doors are working correctly.
Tag Reference
Tag Use Activates 11 Send elevator from Room4 to Room1 Elevator, Stop2, Stop3, Stop4, Train1A, Train4A 12 Send elevator from Room1 to Room2 Elevator, Stop2, Train1A, Train2A 13 Send elevator from Room2 to Room3 Elevator, Stop3, Train2A, Train3A 14 Send elevator from Room3 to Room4 Elevator, Stop4, Train3A, Train4A
111 First tag for Train1A Door for Room1 112 Second tag for Train1A 121 First tag for Train2A 122 Second tag for Train2A Doors for Room2 126 HiTag of door for Room2 127 HiTag of door for Room2
131 First tag for Train3A 132 Second tag for Train3A Doors for Room3 136 HiTag of door for Room3 137 HiTag of door for Room3
141 First tag for Train4A 142 Second tag for Train4A Doors for Room4 146 HiTag of door for Room4 147 HiTag of door for Room4
3.5 Correcting the Timing of the Doors
Before moving on there still is a problem that should be addressed; the elevator starts moving before the doors close. This is especially obvious when using slow-moving effects such as sliding doors. To fix this problem, the activation of the elevator needs to be delayed long enough for the doors to close.
3.5.1 Using Two-Way Trains to Delay the Elevator
First, create four more trains like before, one for each door. Let's call these trains, Train1B, 2B, 3B, and 4B. The track sectors should be at least 7 units long at the largest grid size.
Note: Again, do not connect the tracks to any of the rooms, because you do not need to see the trains when playing the map.
- For this example, set the HiTags of these train's SEs to 113, 123, 133, and 143.
Each train needs to be activated before the elevator leaves a room. The elevator will leave Room1 when the multiswitch activates tag 12, Room2 when it activates tag 13, Room3 when it activates tag 14, and Room4 when it activates tag 11.
- Add an Activator to the Train1B with a LoTag of 12. - Add another Activator with a LoTag of 13 to Train2B. - Add another Activator with a LoTag of 14 to Train3B. - Add another Activator with a LoTag of 11 to Train4B.
3.5.2 Using Auto-Close Doors for Timing
Now these trains need to be reset back to their starting positions after they activate their second tags so that they will be ready for next time. To do this we need to use another timing trick, the auto-close door.
Note: When a door, such as the "ceiling door", has an auto-close effect (SE10) it will activate the tags of any Activators in the door's sector. We can use this to our advantage, but it can be just as much of a disadvantage. For instance, if an Activator is used to open the door, all of the Activators with the same LoTag will be activated again when the door closes, so be careful when using this trick.
These doors should not be seen when playing the game. - For this example create a "ceiling door" at the end of the track of Train1B, 2B, 3B, and 4B. - Add an auto-close effect (SE10) to each door. - Set the HiTags of these SEs to 4.
Note: The auto-close delay of the door tricks needs to be long enough to let the door tricks open completely, or else they will close without activating anything.
The train needs to activate the door trick to open it, but the door trick also needs to activate the train when it closes. - Add an Activator with a LoTag of 114 to the door trick for Train1B. - Add another Activator with a LoTag of 115 to the door trick and the train.
For the three other trains do the same thing, except use LoTags 124 and 125 for Train2B, 134 and 135 for Train3B, and 144 and 145 for Train4B.
The elevator needs to be activated after these trains activate their second tags. The second tags could be used to activate the elevator, but if the elevator has already stopped when the door trick resets one of the trains the elevator will be activated again! Thus it would be wiser to use the same tag that the door trick uses to reset the train.
- Change the LoTags of the Activators in the elevator to 115, 125, 135, and 145.
For simple elevators the Stops need to be activated at the same time as the elevator. - Change the LoTags of the Activators on Stop2 to 115 and 145. - Change the LoTags of the Activators on Stop3 to 125 and 145. - Change the LoTags of the Activators on Stop4 to 135 and 145.
3.5.3 Adjusting the Timing of the Doors
Now to adjust the timing. For instance, if the elevator leaves Room3 before the door closes, make Train3B longer. If the elevator delays for a long time after the door closes, make Train3B shorter. Do this for the doors on all for rooms.
You will also have to adjust Train1A, 2A, 3A, and 4A, so that the doors open afer the elevator arrives. If the door opens before the elevator arrives at Room3, make the track for Train3A longer. If the door stays closed for a long time after the elevator arrives at Room3, make the track for Train3A shorter. It's just a mater of trial and error.
There's a lot of stuff going on, so if you're confused by all of this, you can refer to the sample map, EX3S4D, to see how this should look.
3.6 Setting the Starting Position of the Elevator
First, remember that in section 3.3 the Activator in the door for Room1 was set to 111. It now needs to be setup like the rest of the doors. - Set the LoTag of the Activator in the door for Room1 to 112, the second tag for Train1A.
Since we are using the same four-floor elevator from Section 2, read Section 2.3 to see how to setup the elevator.
Now the doors on the floor where the elevator starts needs to be open at the start of the game. To do this, activate the two-way train trick that controls these doors. You could use a TouchPlate in the sector where the player starts, but the only problem is that you would have to move it every time you change the player's starting point. A better way would be to create another door trick.
The door trick does not need to be seen while playing the game. - Add it to the end of the train's track. - Set the height of the ceiling so that the door is open.
Note: If a door trick is open at the start of the game, it will automatically close after the delay set by the auto-close effect. This is very useful for starting just about any effect.
- Add an Activator to the door trick and the train. - Set their LoTags to any unused number.
For example, if you want the elevator to start at Room2, place the Activator in the sector of Train2A.
Tag Reference
Tag Use Activates 1 Door trick for start of game (See Section 3.6 for use)
11 Send elevator from Room4 to Room1 Train1A, Train4A, Train4B 12 Send elevator from Room1 to Room2 Train1A, Train2A, Train1B 13 Send elevator from Room2 to Room3 Train2A, Train3A, Train2B 14 Send elevator from Room3 to Room4 Train3A, Train4A, Train3B
111 First tag for Train1A 112 Second tag for Train1A Door for Room1 113 First tag for Train1B 114 Second tag for Train1B Door trick for Train1B 115 Door trick for Train1B Elevator, Stop2, Train1B
121 First tag for Train2A 122 Second tag for Train2A Doors for Room2 123 First tag for Train2B 124 Second tag for Train2B Door trick for Train2B 125 Door trick for Train2B Elevator, Stop3, Train2B 126 HiTag of door for Room2 127 HiTag of door for Room2
131 First tag for Train3A 132 Second tag for Train3A Doors for Room3 133 First tag for Train3B 134 Second tag for Train3B Door trick for Train3B 135 Door trick for Train3B Elevator, Stop4, Train3B 136 HiTag of door for Room3 137 HiTag of door for Room3
141 First tag for Train4A 142 Second tag for Train4A Doors for Room4 143 First tag for Train4B 144 Second tag for Train4B Door trick for Train4B 145 Door trick for Train4B Elevator, Stop2, Stop3, Stop4, Train4B 146 HiTag of door for Room4 147 HiTag of door for Room4
Note: The following examples assume that you know how to setup the elevator Stops, two-way train tricks, and auto-close door tricks used in Section 3. If you do not thoroughly understand these concepts do not even tempt any of the following examples.
Section 4: Elevator call buttons Difficulty: Expert Map: EX4C4D.MAP
4.1 Introduction
The designs of the elevators in the previous sections were relatively simple to create. However they did not have call buttons to send the elevator directly to any floor like a real elevator, so this section will show you how to make them!
4.2 Complex Switches
The purpose of the multiswitch in the previous examples was to overcome a shortcoming of Build's elevator sector effects; they have no persistent state, i.e. which floor the elevator is on. During the game, when the elevator is sent to another floor you would need to close the doors on the floor where the elevator is first, but you would have no way to know which floor. The multiswich on the other hand does have a persistent state and can activate tags based on that state, which allowed us to keep track of which floor the elevator is on. Unfortunately, the multiswitch only has four states and it can only activate consecutive tags. Thus it cannot control an elevator with more than four floors nor can it be used to send the elevator directly to a specific floor, which excludes the use of real call buttons too.
To get around these short comings we need a more sophisticated switching mechanism that not only has a persistent state, but also can handle as many tags as we want and in any order we chose. Luckily, there is a "feature" of Build that works in our favor. If one switch is directly in front of another, the player can only press the switch in front. Now if the switch in front was moved so that the player cannot press it, then only the other switch can be used. By switching the position of the switches, the access to the switches can be controlled.
4.3 Setup
The elevator from Section 3 has all of the basic components we need, so it can be used for this section as well.
Last time the two-way train tricks were only needed to operate the doors. This time they are needed to control the positions of the switches as well, so even if you do not plan on having any doors for the elevator you will still need the trains.
If you are using the map you created from Section3 - delete all of the multiswitches - delete all of the Activators with the LoTags 11, 12, 13, and 14
These will not be needed anymore.
- Also, set the angles of the SectorEffectors in the Stops to 1536.
4.3.1 Setting up the Switches
Add sectors near the doorways in each of the rooms. These will be used to make call buttons for the elevator, so make these sectors about 1 unit wide at the 4th grid size, 2 units high, and 8 units from the floor of the room.
Note: The switches can be bigger if you want, but it would be best to not make them any smaller. Some times Build would not activate it, even if the player would stand directly in front of it and press on it.
The call button will be used to call the elevator from any floor directly to the floor where the call button is. To do this the call button will require four switches, one for each floor. One of these switches will be used to call the elevator from the floor it is currently on and the switch that is used will depend upon which floor the elevator is on.
To control which switch will be used, the positions of the switches need to be controlled. To move the switches independently, each switch needs its own sector.
- In each of the call button sectors, split it four times to make five sectors.
The buttons needed to moved low enough so that the player cannot press on it. - lower floors of the front four sectors by 3 units.
- Place switch sprites in the middle of the back four sectors of each call button. - Set their angles so that they point out into their respective rooms and set their X and Y repeats to 16.
To switch the position of the switches, - make the middle three sectors of the call buttons "floor rise" sectors (SE31). - Add Activators to each of these sectors. - Raise their SectorEffectors by 3 units.
Note: While testing another map, I found that it is possible to press on a switch while its "floor rise" sector is moving. - To fix this issue, place a GPSpeed sprite with their LoTags set to 1024 in each of these sectors.
The switches in the call button for Room1 need to call the elevator from any floor to this one. - For this example set the LoTag of the switch in the back to 11 - Set the LoTag of the other three switches to 21, 31, 41.
Note: The switch in the back is not required, but I included it anyway. Besides, you might even find a use for it.
The switches in the call button for Room2 need to call the elevator from any floor to this one. - Set the LoTag of the switch in the back to 22. - Set the LoTag of the other three switches to 12, 32, and 42.
The switches in the call button for Room3 need to call the elevator from any floor to this one. - Set the LoTag of the switch in the back to 33. - Set the LoTag of the other three switches to 13, 23, and 43.
The switches in the call button for Room4 need to call the elevator from any floor to this one. - Set the LoTag of the switch in the back to 44 - Set the LoTag of the other three switches to 14, 24, and 34.
Before we can continue the trains have to be modified to be controlled by the call buttons. If you remember from Section3, the trains with the SE HiTags of 111, 121, 131, and 141 were named Train1A, 2A, 3A, and 4A.
First, Train1A needs to move when the elevator is either sent to or from Room1. - Add six Activators to this train. - And set their LoTags to 21, 31, 41, 12, 13, and 14.
Train2A needs to move when the elevator is either sent to or from Room2. - Add six activators to this train. - Set their LoTags to 12, 32, 42, 21, 23, and 24.
Train3A needs to move when the elevator is either sent to or from Room3. - Add six activators to this train. - Set their LoTags to 13, 23, 43, 31, 32, and 34.
Train4A needs to move when the elevator is either sent to or from Room4. - Add six activators to this train. - Set their LoTags to 14, 24, 34, 41, 42, and 43.
The second tags for these trains were used open the elevator doors after the elevator arrived at a floor and close them before it left. The switches for each floor need to be raised up when the elevator arrives at the floor and lowered when it leaves, so that the player can only have access to the switches that will send the elevator from the floor it is currently on to another floor. To do this, use the first tag for these trains.
- Find the switches with the LoTags 12, 13 and 14. - Set the LoTag of the Activators in these sectors to 111, the second tag for Train1A.
- Find the switches with the LoTags 21, 23 and 24. - Set the LoTag of the Activators in these sectors to 121, the second tag for Train2A.
- Find the switches with the LoTags 31, 32 and 34. - Set the LoTag of the Activators in these sectors to 131, the second tag for Train3A.
- Find the switches with the LoTags 41, 42 and 43. - Set the LoTag of the Activators in these sectors to 141, the second tag for Train4A.
To finish the call buttons, - Raise the floor of the front sector of each of the call buttons by 3 units. - Add a 1-way wall to the back of this sector to hide all of the switches.
When you are done the call button for Room3 should look like this.
Figure 4a Call button for Room3 (side and top views) | __ 1-way wall +-------+ | / floor-raise__ | | 33 | +--+--+--+--+--+ \+-|-|---+ | | | |---33| floor-raise__ |SE 43 | +--+SE|SE|SE+--+ \+-|-|---+ |---13-23-43| floor-raise__ |SE 23 | | +--+--+--+ \+-|-|---+ __1-way wall | \ \ \__floor-raise |SE 13 |/ | \ \____floor-raise +---|---+ | \______floor-raise | | | ----+-------+----
4.3.2 Controlling the Stops
Now the Stops have to be setup for the call buttons as well. In Section 3 the Stops could be set in advance because we always knew which floor the elevator would go to next. This time we do not know until the player presses a call button, so the Stops will have to be set before the elevator can be activated.
Previously the trains with the SE HiTags of 113, 123, 133, and 143, which were named Train1B, 2B, 3B, and 4B, were used to delay the activation of the elevator in order to give the doors enough time to close. This time the elevator also needs to be delayed in order to give the Stops enough time to move into place.
These trains need to move before the elevator can go to a floor. - Add three Activators to Train1B. - Set their LoTags to 21, 31, and 41.
- Add three Activators to Train2B. - Set their LoTags to 12, 32, and 42.
- Add three Activators to Train3B - Set their LoTags to 13, 23, and 43.
- Add three Activators to Train4B - Set their LoTags to 14, 24, and 34.
- To control Stop2, add an Activator to its sector. - Set the Activator's Lotag to 123, the first tag for Train2B.
- For Stop3, add an Activator with its Lotag set to 133, the first tag for Train3B.
- For Stop4, add an Activator with its Lotag set to 143, the first tag for Train4B.
4.3.3 Setting the Starting Position of the Elevator
First decide which floor you want the elevator to be on when the game starts. - Set the heights of the sector's floor and ceiling to where they would be if the elevator was at that floor.
Note: The height of the floor of the elevator sector should match the height of the SE of the Stop for this floor.
Now the doors and switches for this floor need to be set. Both are controlled by the same train, so all that is needed is to activate this train when the game starts.
To do this, create another door trick. The door trick does not need to be seen while playing the game so add it to the end of the train's track.
- Set the height of the ceiling so that the door is open.
This will cause the auto-close effect (SE10) in the door trick to kick in at the start of the game.
- Add an Activator to the door trick and the train - Set their LoTags to any unused number.
For example, if you want the elevator to start at Room2, place the Activator in the sector of Train2A.
You can also set the elevator to go from any starting position to a specific floor.
- To do this the set heights of the floor and ceiling of the elevator's sector to where you want. The space between them should be the same as before.
The doors and switches for the floor where the elevator is going to stop need to be set. - Move the Activator used to set the starting floor for the elevator to the train trick for this floor.
Now to move the elevator, the other train trick for this floor needs to be activated. - Add another Activator with the same LoTag to the this train as well.
So if you had set the elevator to start at Room2 like the example in Section4.3.4, but now want it to start at Room2 and move to Room3 at the start of the game, - Move the Activator from Train2A to Train3A - Add another Activator with the same LoTag to Train3B.
4.4 Adding Switches to the Elevator
We have everything we need for a working elevator, except there are no buttons in the elevator! This is not a simple task, so there is a whole section devoted to this issue.
In order for the elevator to have a button for each floor the elevator needs to have a switch for each floor, on every floor. That way, no matter which floor the elevator is on, the player can go directly to any floor. Unfortunately, this elevator would require squeezing four buttons into it! Also, each button would require four switches, for a total of sixteen switches.
Note: There is at least one way to get around the button issue - use fewer buttons. Anyone who has played Dark Forces could remember that it also had multi-floor elevators. Each floor had a call button, but in the elevator itself there were only two buttons, up and down. At least then the elevator would only need two buttons no mater how many floor there are.
In order for the buttons to work, their switches have to be accessible from inside the elevator, but remain stationary. At least this is the simplest way. - First, set the height of the ceiling of the elevator to the height of the ceiling of Room4. - Set the height the floor of the elevator to the height of the floor of Room1.
- Add a sector inside of the elevator. - Remove the sector tag. - Place the sector near one of the walls. - Set the front wall of the sector to block the player.
Note: The last step is required to prevent an unusual bug in the elevator effect. It seems that if the player is ever trapped against the floor of the elevator, all of the Activators in the elevator will be triggered! Since the switches are rotated to face the wall, Build will automatically set them to block the player. If they are far enough away from the wall and the player is close enough to them while the elevator is moving, player can be trapped between one of them and the elevator, triggering the bug. This bug tends to be unpredictable, so it is best to avoid it.
Depending on how you designed your elevator you may need a separate sector for each button.
- Place four switches inside this sector, one for each floor, and make the sector very narrow.
Make sure that none of the buttons are blocking the doorways.
- Set the heights of all of the switches. They should be about 8 units from the height of the floor of the sector of each room. - Set their X and Y repeats to 16.
- Make a copy of these switches for each of the other buttons in the elevator.
If you decided to use four buttons, one button will be used for each floor. The switches for that button will have to be set to send the elevator to that floor.
- For Room1, set the LoTag of the switch for the first button to 11, set the second to 12, set the third to 13, and set the four to 14. - For Room2, set the LoTag of the switch for the first button to 21, set the second to 22, set the third to 23, and set the four to 24.
- For Room3, set the LoTag of the switch for the first button to 31, set the second to 32, set the third to 33, and set the four to 34.
- For Room4, set the LoTag of the switch for the first button to 41, set the second to 42, set the third to 43, and set the four to 44.
In case you did not notice, these are the same tags used for the switches in the call buttons.
If you decided to use two buttons for a "Dark Forces" style elevator, one button will send the elevator up one floor and the other will send it down one floor.
- For Room1, set the LoTag of the switch for the down button to 11 and set the one for the up button to 12.
- For Room2, set the LoTag of the switch for the down button to 21 and set the one for the up button to 23.
- For Room3, set the LoTag of the switch for the down button to 32 and set the one for the up button to 34.
- For Room1, set the LoTag of the switch for the down button to 43 and set the one for the up button to 44.
This is not pretty, but it gets the job done and it is enough to test the elevator.
Finally, set the height of the ceiling and floor of the elevator's sector to where there were before you added the switches.
4.5 Adjusting the Timing of the Doors and Stops
Now that we have everything that is need to get the elevator to work, it would be a good time to test it out before moving on.
There is a lot of things going on, so there is a lot to test. You will need to test every switch in all of the call buttons and the elevator. Also be sure to double check the settings for all of the two-way trains, Stops, and the elevator itself. The only thing that is easy about this example is getting something wrong!
After you get all of the tricks working, adjust the timing of the train tricks.
Note: When adjusting the timing, always make the elevator travel the longest distance to get to the floor you are testing, as this will require the longest delay. For Room1 and 2, always send the elevator to Room4 first. For Room3 and 4, always send the elevator to Room1 first.
To adjust the timing, first adjust the length of the tracks of Train1B, 2B, 3B, and 4B. If the elevator stops before it gets to the height of the floor, the elevator was activated while the Stop was moving. The track of the train trick for that floor needs to be longer. If the elevator waits for a long time after the Stop was set, then the track of the train needs to be shorter. Also, if the elevator moves before the doors close, then the track of the train needs to be longer.
After these timings have been set, adjust the length of the tracks of Train1A, 2A, 3A, and 4A. If the doors open before the elevator arrives at the floor, the track of the train needs to be longer. If the doors stay closed for a long time after the elevator arrives at the floor, the track of the train needs to be shorter.
It would be best to have a friend help you test your level in a multiplayer game, but if that is not possible you can always turn the clipping off (dnclip) and run back and forth between the floors.
It can be tricky to get all of this right. I said that this requires an expert, so do not say that I didn't warn you!
4.6 Adding Buttons to the Elevator
In the quest for a perfect elevator, or as close as one can get in Build, the next step is to add buttons to the elevator. These were mentioned in Section4.4, but the truth is that the buttons themselves have not been added yet. To do this we will create fake buttons that simply add a nice facade to the effect, like we did with the 1-way wall on the call buttons. However, this requires extra sectors that would have to move with the elevator so that they look like part of the elevator. While this sounds impossible, it is actually easy, if you have been following this guide. All that is needed is to make the button's sector an elevator sector effect and give it its own Stops.
If you completed Example 4 up to this point, - connect another sector to the sector with the switches. - Set the sector tag to 19. - Raise the height of the floor of the sector 8 units. - Lower the height of the ceiling of the sector so that the distance between the ceiling and the floor is about the height of the switches.
This sector needs to move at the same time as the elevator. - Add four Activators - Set their LoTags to 115, 125, 135, and 145.
- Now create three Stops for this sector. You can copy the three other stops and connect the new stops to this sector.
- Raise the height of the floors of the new stops and their SEs 8 units.
- Use the 'O' key on each switch to orientate all of them against the wall. - Make them single-sided - Set their angles so that they face the wall and cannot be seen.
Now all that is left to do is to make these new sectors look like buttons. How you do this really depends on how you designed your elevator and your own personal aesthetics.
If you made separate sectors for the switches of each of the buttons, you will need to connect a new sector to each of these sectors to make the remaining buttons.
One way to get the button sectors to move in sync with the elevator is to add Stops to all of these sectors.
There is another way, but there is no easy way to undo it once it is done. After you get the buttons to look how you want, be sure to save.
- Join the sector for the first button you added, the one with the Stops, with the sectors for each of the other buttons.
Once you are done, the floors and ceilings of the button sectors should move at the same time. That is because they are the same sector! However, if this does not work correctly, you will need to reload the map and try again.
Note: Normally, connecting disjointed sectors is a VERY bad idea, as this can seriously damage a map. However, the Build engine technically does not have a problem with this, so when done correctly this can be a very powerful technique. Again, always save before attempting this. There is no easy way to undo it without deleting the entire joined sector.
Note: If you move the starting position of the elevator sector, you have to move the button sectors as well.
4.7 Call Button Lights
For a special touch, you can also make the call buttons light up! In real elevators, the call button has a light that comes on when it is pressed and goes off when the elevator arrives.
At first you may think about using the normal "light switch" effect (SE12), but it will not work correctly in this case. For this we need to use another type of trick, the "lighting sector" trick (thanks Patola). It uses the "up open door lights" effect (SE8) to turn a light on or off when ever a door is opened or closed. Unlike the "light switch" effect, this can be controlled by anything that can trigger an Activator!
The door for the "lighting sector" trick needs to be opened when the button is pressed to turn on the light and needs to be closed when the elevator arrives to turn off the light. The easiest way to do this is to use the first tag of Train1B, 2B, 3B and 4B to control the door. The timing may not be 100% accurate, but it is usually close enough. In order to get more accurate timing, extra train tricks would have to be used.
For this trick, the doors should not be seen. - Create a "ceiling door" at the end of the track of Train1B, 2B, 3B, and 4B. - Add an Activator to each of these doors. - Add make each of these doors an "up open door lights" effect (SE8). - Add a "up open door lights" effect (SE8) to each of the call buttons. - Set the shading of the button to match the shading of the neighboring walls.
Note: The shade should at least be 10, or else the effect might not even be noticed.
For Room1, - Set the HiTag of the SE in the call button and the "lighting sector" to 118. - Set the LoTag of the Activator in the "Lighting Sector" to 113.
For Room2, - Set the HiTag of the SE in the call button and the "lighting sector" to 128. - Set the LoTag of the Activator in the "Lighting Sector" to 123.
For Room3, - Set the HiTag of the SE in the call button and the "lighting sector" to 138. - Set the LoTag of the Activator in the "lighting sector" to 133.
For Room4, - Set the HiTag of the SE in the call button and the "lighting sector" to 148. - Set the LoTag of the Activator in the "lighting sector" to 143.
One problem with this effect is that it will also light up the wall the button is on. To fix this simply set the HiTag of the wall in front of the button to 1. If you used the '2' key on the wall in 3D mode, you need to set the HiTag of the other side of the wall instead. To do this set the HiTag of the section of the wall below the button.
Note: You can also use this effect to light the buttons in the elevator as well. However, this would require each button to have its own sector and its own set of Stops. If you are creative enough, you should be able to get two of the buttons to share the same set of Stops.
Tag Reference
Tag Use Activates 1 Door trick for start of game (See Section 4.3.3 for use)
11 12 Send elevator from Room1 to Room2 Train1A, Train2A, Train2B 13 Send elevator from Room1 to Room3 Train1A, Train3A, Train3B 14 Send elevator from Room1 to Room4 Train1A, Train4A, Train4B
21 Send elevator from Room2 to Room1 Train1A, Train2A, Train1B 22 23 Send elevator from Room2 to Room3 Train2A, Train3A, Train3B 24 Send elevator from Room2 to Room4 Train2A, Train4A, Train4B
31 Send elevator from Room3 to Room1 Train1A, Train3A, Train1B 32 Send elevator from Room3 to Room2 Train2A, Train3A, Train2B 33 34 Send elevator from Room3 to Room4 Train3A, Train4A, Train4B
41 Send elevator from Room4 to Room1 Train1A, Train4A, Train1B 42 Send elevator from Room4 to Room2 Train2A, Train4A, Train2B 43 Send elevator from Room4 to Room3 Train3A, Train4A, Train3B 44
111 First tag for Train1A Switch12, Switch13, Switch14 112 Second tag for Train1A Door for Room1 113 First tag for Train1B Room1 call button light 114 Second tag for Train1B Door trick for Train1B 115 Door trick for Train1B Elevator, Train1B 118 Room1 call button light
121 First tag for Train2A Switch21, Switch23, Switch24 122 Second tag for Train2A Doors for Room2 123 First tag for Train2B Stop2, Room2 call button light 124 Second tag for Train2B Door trick for Train2B 125 Door trick for Train2B Elevator, Train2B 126 HiTag of door for Room2 127 HiTag of door for Room2 128 Room2 call button light
131 First tag for Train3A Switch31, Switch32, Switch34 132 Second tag for Train3A Doors for Room3 133 First tag for Train3B Stop3, Room3 call button light 134 Second tag for Train3B Door trick for Train3B 135 Door trick for Train3B Elevator, Stop4, Train3B 136 HiTag of door for Room3 137 HiTag of door for Room3 138 Room3 call button light
141 First tag for Train4A Switch41, Switch42, Switch43 142 Second tag for Train4A Doors for Room4 143 First tag for Train4B Stop4, Room4 call button light 144 Second tag for Train4B Door trick for Train4B 145 Door trick for Train4B Elevator, Train4B 146 HiTag of door for Room4 147 HiTag of door for Room4 148 Room4 call button light
Note: Call button lights were not used in the sample map, EX4C4D.MAP.
Section 5: Advanced Topics
Well, if you have made it this far then congratulations! You are now a master of the elevator sector effect (and are entitled to all bragging rights).
5.1 Design Issues
Now that you understand the basics of constructing elevator tricks, I am sure you that you already have some cleaver ideas that you are dying to try out. However, there are some other topics and issues that should be considered.
5.1.1 Adding More Floors to the Elevator
I hope that by now you can see that the systematic design of the elevator from Section 4 can be expanded beyond four floors, but each additional floor creates additional complexity.
First, there is the issue of adding more doors to the elevator. Normally Build does not allow doorways to overlap, so each floor that the elevator stops at would require its own door. The design of the elevator sector itself would become more complicated as it is forced to accommodate more doors. Even though I never would have thought that it was possible, I discovered a way to break this limitation! Read Section 5.5 if you are brave enough to tempt this daring feat.
There is also an issue of fitting additional buttons in the elevator. Since their is a limit to the size of the elevator buttons, more buttons require more space. You may feel tempted to space them vertically, but beware that Build does not handle this very well. If switches are far enough apart that the player can only see one of the them, like the in example in Section 4.4, then Build does not have a problem. However, if switches are too close together, Build may not be able to figure out which switch the player is trying to press and guess the wrong one. However, this only happens when pressing a switch. Projectile collisions in Build are more accurate, but requiring the player to shoot at the elevator buttons would be annoying! One solution is to use the two button configuration discussed in Section4.4. There many be solutions as well.
Even if you are creative enough to work around these issues, there are restrictions imposed by Build itself; it has a limit on the number of sectors, walls and sprites that it can handle (1024 sectors, 8192 walls and 4096 sprites to be exact). For example, think about an eight floor elevator with sliding doors and everything. It would require a total of 128 sprites for switches alone, not to mention about another 500 sprites for the doors, the elevator and other related tricks that make the whole thing work. This might not seem like much, but all of this would also require about 260 sectors. That is over a fourth of the total number of sectors allowed!
Then there is the biggest limitation of all, your sanity! Even though the tricks used in this guide are small, manageable units, trying to get them all to work in harmony to create an elevator that can handle eight floors wound be maddening.
That said, the only other limit is your imagination.
5.1.2 Player Starting Points
While testing one of the examples for this guide I noticed a strange bug when the player starting point was in the elevator sector. It seems to be related to the "elevator trap" bug discussed in a note in Section 4.4. The bug might be triggered if the player start point is too close to the floor.
If this happens, - Load the map. - Raise your height in 3D mode. - Set the player start point. - Save the map again.
5.1.3 "Floor Rise" GPSpeed Bug
This bug was mentioned earlier in a note in Section 1.4. The problem is this, if the distance between the floor of a "floor rise" sector effect and its SE is not an exact multiple of the LoTag of the GPSpeed sprite, the height of the "floor rise" effect will rise by a multiple of the LoTag that is closest to this distance.
For example, the distance between the floor of a "floor rise" sector effect and its SE is 8192 (8 units) and the LoTag of the GPSpeed sprite is set to 1792. 8192 divided by 1792 is about 4.556, so the height of the "floor rise" effect will rise by 1792 times 4, which is only 7192.
Normally you would want to avoid this bug by setting the LoTag of the GPSpeed sprite to a multiple of the distance. However, since Build sets the grid size for sector floors to 1024, you could use a "floor rise" effect to set it to a specific height.
5.2 Creating Elevator Platforms Difficulty: Intermediate Map: EX5EP1.MAP
Standard elevators are fine, but what about elevator platforms? Since the "elevator platform" sector effects simply will not work, you will need to make an elevator effect look like an elevator platform effect.
To do this, - Raise the ceiling of the elevator sector above the ceiling of the top floor, so that it can never be seen during the game.
- Create a sector in the middle of the elevator sector that is connected to the all of the elevator's stops.
This will separate the elevator sector from all of the surrounding walls and create a new elevator sector.
- Remove the sector tag from the original elevator sector. - Move the walls of the new elevator sector as close as you can to the walls of the original elevator sector without crossing them.
5.3 Complex Elevators Difficulty: Expert Map: EX5EP1.MAP
Normally, elevator sector effects consist of a single sector. However, more complex elevator designs can be created by using multiple elevator sectors moving in sync so that they appear to be a part of a single elevator.
Actually, this was already accomplished in Section 4.6 when the elevator buttons were added! To extend this concept from the button example, several rules need to be followed.
- Every sector that will be part of the elevator must be setup to stop at the same relative height.
Two sectors of the elevator that are 3 units apart should be set to stop so that they will always be 3 units apart.
- Neighboring elevator sectors with the same floor height can be connected together.
Since they are at the same height and will move that the same time, they will not interfere with each other. Also, for elevators controlled by Stops, two elevator sectors with the same floor heights can share the same set of Stops.
- Neighboring elevator sectors with different floor heights must be separated with a stationary sector. - All stationary sectors that are connected to the elevator, except those that are used to control the height of the elevator, must have their floors at or below the height of the floor for the bottom floor and their ceilings at or above the height of the ceiling of the top floor.
This applies to any elevator, even ordinary two-floor elevators. Any sector that is connected to an elevator effect can control where it stops. This is why in the example from Section 1 Room2 was connected to the elevator sector, but Room3 was not. This is also why the floors of the other sectors connected to the elevator were lowered.
Note: Construction of the elevators in every example in guide has been governed by these rules. They are not arbitrary, nor are meant to stop you from trying anything. They are merely guidelines to help you succeed in your own endeavors.
While all of this may seem easy enough, the problem is that the more sectors there are in the elevator, the harder it becomes to hide the sectors that control them, especially Stops.
There is one solution to this problem, but it is not for the faint of heart. - Disconnect the Stops from an elevator sector. - Create a new sector that is connected to these Stops. - Join the elevator sector with the new sector.
Again, this is not something that should be taken lightly as it can really mess up the sector.
5.3.1 Creating Free Standing Structures in an Elevator
Since sprites are the only objects in Build that are not attached to a sector, they are often used to create free standing structures. Unfortunately, sprites placed in elevator effects have an ugly bug, so they cannot be used. However, there is a way to make structures that appear to be free standing.
To demonstrate this effect, - Create a sector. - Create another sector that is completely inside of the first. - Lower the ceiling and raise the floor of the inter sector. - Create a mask wall on one wall of the inter sector. - Set the parallax effect on the ceilings and floors of these two sectors.
This construct causes Build to not render the floor, ceiling, or walls of the inner sector, revealing anything that is behind it. This makes it appear as if the mask wall is floating in midair. Even though you cannot see the walls of the inner sector, they are still there and can block the player.
Complete the effect by hiding the parallax ceiling and floor. - Raise the ceiling and lower the floor of the outer sector. - Make these sectors as thin as possible.
This effect is somewhat limited, but usefully none the less. It is best to place these sectors near a wall, so that the player does not get confused by the "invisible" inner sector.
5.4 Elevator Transport Effect
The "elevator transport" effect is unlike all of the other elevator effects. It does not have the general usefulness of the ordinary elevator effects, but it worth further study.
Normally, the "elevator transport" effect consist of two separate elevators that are linked by an invisible transporter. The player is transported from one elevator to the other after the elevator travels a distance equal to the distance between the floor and the ceiling of the elevator sector.
Unlike the other elevator effects, you cannot simply connect another sector to it to add another floor. However, it is can travel to more than two floors.
Following the rules for creating the "elevator transport" effect, - Create another elevator identical to the other two. - Set the height of the new elevator to be higher than the one with its sector HiTag of set to 1. - Set the sector HiTag of the new elevator to 2.
Also, the elevator can start at any of the floors by setting the SE of the elevator for that floor to the darkest shade.
Even though it looks like an elevator effect, it moves like the "elevator platform" effects. Each time it is activated it will move to a low floor until it reaches the bottom floor, the one with the sector HiTag set to 0. Then it will only travel between the bottom two floors. However if the player can get to the one of the higher floors and activate the elevator, it can return to that floor.
Unfortunately, there does not seem to be anyway to control the movement of the "elevator transport" effect.
5.5 Single Door Elevator Difficulty: Build Guru Map: EX5ML1.MAP, EX5ML3.MAP
The "elevator transport" effect may be unyielding to any attempts to control it, but it does have one admirable quality, like real elevators it only has one door. While finishing this guide, I began to ponder the inconceivable notion of creating a multi-floor elevator with a single door, the last great hurdle to creating a "real" elevator in Build. After a bit of brainstorming, I figured out a way to accomplish the impossible.
5.5.1 Setup
A real elevator has one door that opens at the doorway on each floor, which are directly above each other. The problem is that Build does not allow the doorway of each floor to be connected to same sector wall of the elevator, the classic sector-over-sector problem. Of course, it is possible to connect multiple sectors to the same sector if each one is connected to a separate wall. This time, instead of creating a separate doorway in the elevator for each floor, connect them to a single doorway with each of them connected to a separate sector wall.
Figure 5a Connecting the floors to a single doorway +-----+ +-----+ +-----+ ++-----------------+-----++ | | | | | | || | || | | | | | | || | || | | | | | | || | || | | | | | | || +-----+| +-----+ +-----+ +-----+ __elevator || || +-----+--+-----+--+-----+/ doorway || +-----+ || ++-----------------------++ || | | || | | | || | | || | | --+--x || | | || | | | || +-----+ || +-------------------------+ y || || |+-----+ || || | || | || | || --+--x || | || | ++-----+-----------------++ z
Now the problem is to get the doorway on each floor directly above each other. The solution is to overlap the sectors for each floor without overlapping their doorways! Since the elevator can only access one floor at any time, the easiest way to do this would be to manipulate the doorway sectors such that only one of the them is open to the elevator and all of the others are closed off.
To accomplish this unusual feat I have created a sector warping effect. It is not pretty, but it is the best you can hope for when pushing the Build engine to such extremes.
- First, split the elevator's doorway sector to create two long sectors.
The sector connected to the other doorways is the "track" along which the manipulation will take place.
- Split the track by creating a sector between the doorways of each of the floors. - Adjust each section of the track so that floors and ceilings are at the same height as the adjacent doorway.
The doorways of each floor need be manipulated by sliding the smaller sectors that split the track.
- Add a "sliding door" effect (ST25,SE15) to each of the smaller sectors on the track. - Set the angle of the SEs to point along the track, towards the highest floor for the elevator.
Figure 5b Adding the track and sliding sectors +-----+ +-----+ +-----+ ++-----+--+-----+--+-----++ | | | | | | || | | | | || | | | | | | || | | | | || | | | | | | || | | | | || | | | | | | || | | | +-----+| +-----+ +-----+ +-----+ __track || | | | | || +-----+--+-----+--+-----+/__elevator || | +-----+ | || +-----+--+-----+--+-----+/ doorway || | | | | || ++-----------------------++ || | | | | || | | | || | | | | || | | --+--x || | +-----+ | || | | | || | | | | || +-------------------------+ y |+-----+ | | | || || | | | | || | || | | | | || --+--x || |SE--- |SE--- || | ++-----+--+-----+--+-----++ z \_____/ | sliding sectors
As the sliding sector moves it will stretch the white wall of the doorway connected to it. The white wall needs to be stretched all of the way pass the other side of the doorway in order to close it off from the elevator. If it only moves up to the edge of the doorway, the "hall of mirrors" bug will still be seen when the floors are overlapped.
- Make a small niche for the track where the doorway for the lowest floor and the doorway for the elevator connect to it.
This will give the sliding sectors a space to move into so that they can pass the other edge of the doorway without crossing through the wall at the end of the track.
- Add GPSpeed sprites to each of the sliding sectors. - Find the length of the doorway and the niche, add them together, and divide by 2. - Set the LoTags of the GPSpeed sprites to this number so that they will slide all the way into the niche when the effect is completed.
To keep the slides the of the doorway square, - Insert a point on the white walls of the doorway sectors that are connected to the sliding sectors. - Move these points as close to the track as you can.
Now the sliding sectors need to be controlled to select which of the doorways will be open. In this example, the sliding sector between the doorways of the first and second floors needs to be activated whenever the elevator is sent to or from the first floor. Also, the sliding door between the doorways of the second and third floors needs to be activated whenever the elevator is sent to or from the third floor. Since the sliding sectors are connected to the two adjacent doorways, the doorway on the second floor will be open whenever the other two are closed. Also note that in order to go directly between the first and third floors both sliding sectors should be activated at the same time. How the sliding sectors are controlled depends on how your elevator is setup. Once they are finished, lower their ceilings to their floors.
Note: After the effect is complete it will be VERY difficult to modify the doorways on each floor. It would be best to complete them and make a backup copy of the map before you continue.
Now to complete the effect, the floors have to be overlapped. - Make the sliding sectors every thin. - Line them up next to each other beside the doorway to the first floor. - Move the sector on the second floor and its doorway over top of the first floor.
The sectors should be as close as possible without overlapping their points. Also, the red walls of the doorways should lie directly on top of each other.
Notice that the tiny white wall that was on the corner of the doorway of the second floor is now stretched across the doorway and completely closes it off. When the sliding sector connected to it moves it will open this doorway and close the off the doorway on the first floor.
Be sure to test the effect to make sure that the you can pass through the doorways when they are open and that "hall of mirrors" bug cannot be seen once the doorways are closed. If this does not work correctly, there is no easy way to fix it. You will have to restore the backup copy and try again. Once you get the effect to work correctly with the first and second floors you can do the same for the third floor as well.
Be patient, this effect is not hard to setup, but it can every difficult to complete.
When all of the floors have been overlapped you can finish the elevator to complete the effect. Also, you can make the track very narrow to minimize the gap between the doorways.
Figure 5c Completed effect +-----+ +-----++ | | | || | | | || | | | || | | __track & +-----++ +-----+ / sliding | || +-----++ sectors +-----++ ++-----++ | || | | | | || | | --+--x | || | | | +-----++ +-------+ y | || ++-----++ || || | || || --+--x || || | ++-----++ z \__sliding sectors
5.5.2 Issues
This effect forces Build to do some things that it was clearly not designed to do. As a result there are several side effects. First, the "hall of mirrors" bug is clearly visible while the effect is manipulating the doorway sectors. Another problem is that the stretching of the white walls of the doorways is also visible. The best way to get around these issues is to place this effect between two doors. Simply close the doors to cover up the effect while it is in action.
There is another bug, but unfortunately I have not been able to fix it. Build seems to be momentarily confused When the player passes through the section where the sectors overlap, causing the view to shutter. This again shows how far the effect pushes the Build engine. Considering how much that has been accomplished, I am willing to live with this minor inconvenience.
Note: While I am certain that this effect can be used for more than three floors, but I have not personally attempted it yet.
Note: The map, EX5ML3.MAP, is the polished version of the original elevator test model that I used while toiling with many of the advanced concepts detailed in this guide. As far as I am aware, it is the most complete model of a "real" elevator created in Build that exist!
5.6 Myst Elevator Difficulty: Build Guru Map: EX5MYST.MAP
For the final example I have included the contraption that I call the Myst elevator. The basis of this trick was the idea of recreating the rotating elevators that are commonly seen in the Myst series. I decided to include it with this guide not only to show off my skills as a master trickster, but to bewilder and inspire others to the kinds of twisted creations that are possible with complex elevator tricks and an open mind.
Considering the insanity of its design, it would be very difficult to explain the construction of this example and impossible to create diagrams of it with plain text. The best that I can tell you is that it is a complex three-floor elevator with disjointed sectors wrapped inside of a "rotate rise bridge" effect!
Closing Thoughts
Well, that was probably more that you EVER wanted to know about Build's elevator effects! When I started this guide I did not even imagine that it would have come this far, so I hope that you enjoyed the experience as much as I have. Considering how comprehensive this guide is, you maybe left wondering what comes next? I guess that is up to you! Everything that I had set out to accomplish while writing this guide has already been finished and documented.
Well, almost everything. In my quest to perfect the "real" elevator effect, there was one detail that I have not been able to work out. When a real elevator remains at a floor for a length of time it will automatically close its doors. If you press the call button on the floor where the elevator is it will open the doors again, but if you press a call button on another floor they will remain closed. This is actually what the unused switches were intended for! I had decided to leave them in my designs in hopes that I would find a satisfactory solution to the problem. Unfortunately, the complexity that it would add to the elevator effect does not seem worth the effort for such a marginal addition, so I did not bother to pursue the issue.
About the Author
After earning a degree in Computer Science Engineering, I have yet to find where I fit into the "real world", so in the meantime I have been pursuing other endeavors. Considering that I am a hard core computer junky (and not afraid to admit it) almost all of them are computer related. Also, being an avid gamer and aspiring to be a software developer in the gaming industry, I have spent a great deal of time studying games. One that has always been of interest is Duke Nukem 3D. I am always trying to find ways to expand the boundaries of the moldy old Build engine!
Any questions and comments can be sent to semi_charm@yahoo.com. While I do appreciate constructive criticism, any trash will be filed appropriately.