Post by Hook on Apr 2, 2018 14:48:28 GMT -6
Basic Lift Movers for UT Maps:
By "Hook" - 7/10/02
Lifts are Movers and are made by adding a brush to the world you want to use for a mover, surrounding the brush with the red brush and intersecting it. Use the new red brush to add your mover. It is critical that the scaling and resizing of the red brush be reset before intersecting. If you don't, the mover will not work right. I usually use RESET ALL under the brush menu at the top, but you can also right click the red brush and select reset all. It is also crucial to have your textures aligned and applied correctly on the model object you built for the mover, because once you intersect the brush, the mover will be identical to it and cannot be changed.
First off it is best to make a building or work room to the side of the main map area you are working on. Build this workroom big enough to fit any movers you may want to build or other complex shapes you may want to build in it. Pick a light texture for all six sides of the room. It doesn't matter what texture you use. This is just the room you should use to build your movers and other shapes in. You will of course want to delete this room when you are finished with the map. I will refer to this room as your builder room from now on.
Making the Lift Mover:
To build the Lift Mover, first build a shape you want the Lift to look like. (It can be more than one object put together as in the lifts in FragginsteinCastle) Make sure it is in the center of your builder room, not touching any of the walls. Pick an appropriate texture(s) and apply it to the newly built Lift Object. (Remember that this Lift Object is NOT a mover at this point, but merely a model of what you want your Lift to look like)
Once you have the Object textured and looking the way you want it, reset the red brush and resize large enough to completely surround the object, but not touch anything else. Position the red brush around the object and then intersect it (hit the Intersect button) and the red brush should wrap itself around the object exactly copying it.
Now take the newly formed red brush and move it to the place you want to place it. This place should be where the Lift is to start from, also called keyframe 0.
Right Click the Mover button and select which mover type you want to add the Lift Mover as. I like to use the ElevatorMover type for Lifts.
Now click the ADD MOVER button and you should get a purple brush in the place you have the red builder brush or at keyframe 0. This purple brush will be the mover, and though it is invisible (except for the purple outline) in the editor, it will look exactly like the brush we intersected over in the builder room.
Setting the Keyframes:
Which brings us to Key Frames! Key frames are "points" where the mover will move to. Obviously you need these to tell the mover where to go. You can have up to 8 key frames (numbered 0 to 7). If you right click the mover brush you will see on the pop up menu under Mover Keyframes all the key frames numbered. We want to make the Lift glide straight up and down. One might think that when you move a mover to a certain position you would then select that key frame number.
This is OPPOSITE of how it works. We add the mover in it's 0 (or base) keyframe position. While it is still at keyframe 0, right click and select mover keyframes and keyframe 1. Now move the mover to its first key frame, keyframe 1. When you move the mover to where key frame 1 will be, then select keyframe 0 and it will automatically go back to its base position. Remember, When the mover is in the BASE or STARTING POSITION select KEY FRAME 1 and move it to KEY FRAME 1, then select KEY FRAME 0 and it will return to base. Think of it like "recording" where the mover will go. You pick keyframe 1, then move it to keyframe 1 and it remembers this path.
So while the mover is in it's base position where we added it, select key frame 1, then move the mover straight up to where we want it to go or open to and then select key frame 0 and the mover will snap back home.
Properties:
Now we need to set some of the Lift's properties. You'll need to move the red brush out of the way. Once the red brush is out of your way, then right click the purple mover brush to open up the Mover Properties window. There are only a few properties we need concern ourselves with. First go to Object and InitialState. This tells the engine how we intend to activate the Lift Mover. The default is BumpOpenTimed. Like it sounds, when touched, the Lift will move to its keyframe(s) for a specified amount of time and then return to keyframe 0. You will want to change this to StandOpenTimed. If the initial state of the lift mover is left at BumpOpenTimed, the lift will take off as soon as it is touched, without the player (or bot) before it gets a chance to get on the lift!
Another way to put it.
Under Object InitialState, change it to StandOpenTimed. It works like BumpOpenTimed, but if we use that the lift will go up as soon as you touch the edge of it, leaving you behind. StandOpenTimed waits until you're on the lift before it moves. Now open the Mover section of ElevatorMover properties.
The first one to check is MoverEncroachType. This tells the editor what to do if someone is in the way of the Lift Mover. The default is ME_ReturnWhenEncroached. With this setting, if you are standing in the way of the Lift, it will go back up until you are out of the way, then it will come back down to keyframe 0.
You Must set NumKeys (for how many key frames it will have). You can set more keyframes if you want, but under Mover Properties, Mover, set the NumKey to however many total keyframes (floor stops), you have set in you Lift Mover. They have to match! Remember key frames start numbering at 0 so if you have just set key frame 3 then you have 4 key frames, numbered 0, 1, 2 & 3.
Lighting Effect (Optional):
Set the lighting for the lift if you wish. Open up the mover properties and then click on bDynamicLightMover. This is set to false by default. If you leave it set to false, your lift, or any mover, will show light as the original, fixed light setting when the lift was built.
If you set bDynamicLightMover to True, your lift or mover will respond to light as it moves. It will receive the light at wherever you have set the swivel point.
Setting bDynamicLightMover to True, is the best most realistic setting, I believe.
Sounds (Optional):
Set the sounds for the lift if you wish. Open up the mover properties and then click on MoverSounds. For normal doors and lifts we need to add a sound to each field, except MoveAmbientSound. The names of the different sounds should be self-explanatory. In the browser, change from Textures to SoundFX. Load an appropriate sound pack. As you can see the sound file names tell you where to put them. Sounds with "end" in the name would go to ClosedSound and OpenedSound, and ones with "start" would go in OpeningSound and ClosingSound. Do not put a Looping sound in any of the fields, except if you are using MoveAmbientSound. MoveAmbientSound can have a looping sound. If you put a looping sound in one of the first 4 fields, it while go on forever!
Adding Support for Lifts (Important)
There are two special NavigationPoint classes used to help bots understand how to use lifts, LiftCenters and LiftExits. Give the lift a unique tag (name). Place a LiftCenter on the lift (in the center of the lift mover as the name implies, at keyframe 0, the starting point), and set its LiftTag attribute to be the tag of the lift.
Now, at each exit from the lift, far enough away so that bots standing at that spot won't interfere with the lift, add a LiftExit. Each LiftExit should have its LiftTag set to the tag of the lift.
If the tag (name) of the lift is Elevator1, then the LiftExit's and LiftCenter's LiftTag will be Elevator1 also.
The default state for movers is BumpOpenTimed. Do not use this state for lifts! Bots misinterpret movers that are BumpOpenTimed as being doors. Instead, use the StandOpenTimed state for most lifts.
If the initial state of the lift mover is left at BumpOpenTimed, the lift will take off as soon as it is touched, without the player (or bot) before it gets a chance to get on the lift! FYI - LiftCenters & LiftExits (and other NavigationPoints also), look like Eagle heads in the editor.
You can check to see if the LiftCenters & the LiftExits are correctly done by selecting Show Paths by right clicking on the blank toolbar area at the top of any of the 4 windows in the editor. LiftCenters & LiftExits should connect to all of the same tag names with blue lines between them, even from floor to floor!
I do NOT recommend the following trigger type lifts! (I left it in just in case you want to know)
Bots will also understand triggered lifts (TriggerOpenTimed, TriggerToggle, etc.). In many cases, they will use triggered lifts without any further help. However, for certain complex situations, such as when a delayed dispatcher is used to control the lift, bots may need a hint. In these cases, set the LiftCenter's LiftTrigger attribute to the tag of the trigger the bot should use to control this lift.
There are two other configurable LiftCenter attributes of interest. These should be modified only if absolutely necessary. MaxZDiffAdd, which defaults to 0, specifies an additional allowable difference in height between the bot and the LiftCenter for the bot to consider that LiftCenter reachable. This is useful if the bot must stand below the lift (down stairs or a ramp) while waiting for it. MaxDist2D is the maximum distance between the bot and the LiftCenter. It defaults to 400 world units.
Summary
You should have a pretty good idea of how to make a basic Lift Mover now. There are other settings you can experiment with and adjust to your liking, especially with the timing settings. You will want to set things like MoverTime, (how fast it opens/closes), etc.
Notes TO SELF:
Add section on RayTraced Lighting! -?
By "Hook" - 7/10/02
Lifts are Movers and are made by adding a brush to the world you want to use for a mover, surrounding the brush with the red brush and intersecting it. Use the new red brush to add your mover. It is critical that the scaling and resizing of the red brush be reset before intersecting. If you don't, the mover will not work right. I usually use RESET ALL under the brush menu at the top, but you can also right click the red brush and select reset all. It is also crucial to have your textures aligned and applied correctly on the model object you built for the mover, because once you intersect the brush, the mover will be identical to it and cannot be changed.
First off it is best to make a building or work room to the side of the main map area you are working on. Build this workroom big enough to fit any movers you may want to build or other complex shapes you may want to build in it. Pick a light texture for all six sides of the room. It doesn't matter what texture you use. This is just the room you should use to build your movers and other shapes in. You will of course want to delete this room when you are finished with the map. I will refer to this room as your builder room from now on.
Making the Lift Mover:
To build the Lift Mover, first build a shape you want the Lift to look like. (It can be more than one object put together as in the lifts in FragginsteinCastle) Make sure it is in the center of your builder room, not touching any of the walls. Pick an appropriate texture(s) and apply it to the newly built Lift Object. (Remember that this Lift Object is NOT a mover at this point, but merely a model of what you want your Lift to look like)
Once you have the Object textured and looking the way you want it, reset the red brush and resize large enough to completely surround the object, but not touch anything else. Position the red brush around the object and then intersect it (hit the Intersect button) and the red brush should wrap itself around the object exactly copying it.
Now take the newly formed red brush and move it to the place you want to place it. This place should be where the Lift is to start from, also called keyframe 0.
Right Click the Mover button and select which mover type you want to add the Lift Mover as. I like to use the ElevatorMover type for Lifts.
Now click the ADD MOVER button and you should get a purple brush in the place you have the red builder brush or at keyframe 0. This purple brush will be the mover, and though it is invisible (except for the purple outline) in the editor, it will look exactly like the brush we intersected over in the builder room.
Setting the Keyframes:
Which brings us to Key Frames! Key frames are "points" where the mover will move to. Obviously you need these to tell the mover where to go. You can have up to 8 key frames (numbered 0 to 7). If you right click the mover brush you will see on the pop up menu under Mover Keyframes all the key frames numbered. We want to make the Lift glide straight up and down. One might think that when you move a mover to a certain position you would then select that key frame number.
This is OPPOSITE of how it works. We add the mover in it's 0 (or base) keyframe position. While it is still at keyframe 0, right click and select mover keyframes and keyframe 1. Now move the mover to its first key frame, keyframe 1. When you move the mover to where key frame 1 will be, then select keyframe 0 and it will automatically go back to its base position. Remember, When the mover is in the BASE or STARTING POSITION select KEY FRAME 1 and move it to KEY FRAME 1, then select KEY FRAME 0 and it will return to base. Think of it like "recording" where the mover will go. You pick keyframe 1, then move it to keyframe 1 and it remembers this path.
So while the mover is in it's base position where we added it, select key frame 1, then move the mover straight up to where we want it to go or open to and then select key frame 0 and the mover will snap back home.
Properties:
Now we need to set some of the Lift's properties. You'll need to move the red brush out of the way. Once the red brush is out of your way, then right click the purple mover brush to open up the Mover Properties window. There are only a few properties we need concern ourselves with. First go to Object and InitialState. This tells the engine how we intend to activate the Lift Mover. The default is BumpOpenTimed. Like it sounds, when touched, the Lift will move to its keyframe(s) for a specified amount of time and then return to keyframe 0. You will want to change this to StandOpenTimed. If the initial state of the lift mover is left at BumpOpenTimed, the lift will take off as soon as it is touched, without the player (or bot) before it gets a chance to get on the lift!
Another way to put it.
Under Object InitialState, change it to StandOpenTimed. It works like BumpOpenTimed, but if we use that the lift will go up as soon as you touch the edge of it, leaving you behind. StandOpenTimed waits until you're on the lift before it moves. Now open the Mover section of ElevatorMover properties.
The first one to check is MoverEncroachType. This tells the editor what to do if someone is in the way of the Lift Mover. The default is ME_ReturnWhenEncroached. With this setting, if you are standing in the way of the Lift, it will go back up until you are out of the way, then it will come back down to keyframe 0.
You Must set NumKeys (for how many key frames it will have). You can set more keyframes if you want, but under Mover Properties, Mover, set the NumKey to however many total keyframes (floor stops), you have set in you Lift Mover. They have to match! Remember key frames start numbering at 0 so if you have just set key frame 3 then you have 4 key frames, numbered 0, 1, 2 & 3.
Lighting Effect (Optional):
Set the lighting for the lift if you wish. Open up the mover properties and then click on bDynamicLightMover. This is set to false by default. If you leave it set to false, your lift, or any mover, will show light as the original, fixed light setting when the lift was built.
If you set bDynamicLightMover to True, your lift or mover will respond to light as it moves. It will receive the light at wherever you have set the swivel point.
Setting bDynamicLightMover to True, is the best most realistic setting, I believe.
Sounds (Optional):
Set the sounds for the lift if you wish. Open up the mover properties and then click on MoverSounds. For normal doors and lifts we need to add a sound to each field, except MoveAmbientSound. The names of the different sounds should be self-explanatory. In the browser, change from Textures to SoundFX. Load an appropriate sound pack. As you can see the sound file names tell you where to put them. Sounds with "end" in the name would go to ClosedSound and OpenedSound, and ones with "start" would go in OpeningSound and ClosingSound. Do not put a Looping sound in any of the fields, except if you are using MoveAmbientSound. MoveAmbientSound can have a looping sound. If you put a looping sound in one of the first 4 fields, it while go on forever!
Adding Support for Lifts (Important)
There are two special NavigationPoint classes used to help bots understand how to use lifts, LiftCenters and LiftExits. Give the lift a unique tag (name). Place a LiftCenter on the lift (in the center of the lift mover as the name implies, at keyframe 0, the starting point), and set its LiftTag attribute to be the tag of the lift.
Now, at each exit from the lift, far enough away so that bots standing at that spot won't interfere with the lift, add a LiftExit. Each LiftExit should have its LiftTag set to the tag of the lift.
If the tag (name) of the lift is Elevator1, then the LiftExit's and LiftCenter's LiftTag will be Elevator1 also.
The default state for movers is BumpOpenTimed. Do not use this state for lifts! Bots misinterpret movers that are BumpOpenTimed as being doors. Instead, use the StandOpenTimed state for most lifts.
If the initial state of the lift mover is left at BumpOpenTimed, the lift will take off as soon as it is touched, without the player (or bot) before it gets a chance to get on the lift! FYI - LiftCenters & LiftExits (and other NavigationPoints also), look like Eagle heads in the editor.
You can check to see if the LiftCenters & the LiftExits are correctly done by selecting Show Paths by right clicking on the blank toolbar area at the top of any of the 4 windows in the editor. LiftCenters & LiftExits should connect to all of the same tag names with blue lines between them, even from floor to floor!
I do NOT recommend the following trigger type lifts! (I left it in just in case you want to know)
Bots will also understand triggered lifts (TriggerOpenTimed, TriggerToggle, etc.). In many cases, they will use triggered lifts without any further help. However, for certain complex situations, such as when a delayed dispatcher is used to control the lift, bots may need a hint. In these cases, set the LiftCenter's LiftTrigger attribute to the tag of the trigger the bot should use to control this lift.
There are two other configurable LiftCenter attributes of interest. These should be modified only if absolutely necessary. MaxZDiffAdd, which defaults to 0, specifies an additional allowable difference in height between the bot and the LiftCenter for the bot to consider that LiftCenter reachable. This is useful if the bot must stand below the lift (down stairs or a ramp) while waiting for it. MaxDist2D is the maximum distance between the bot and the LiftCenter. It defaults to 400 world units.
Summary
You should have a pretty good idea of how to make a basic Lift Mover now. There are other settings you can experiment with and adjust to your liking, especially with the timing settings. You will want to set things like MoverTime, (how fast it opens/closes), etc.
Notes TO SELF:
Add section on RayTraced Lighting! -?