A CamVator sequence can be used as an alternative to using an .avi file at the beginning or the end of a mission. File sizes can be kept down, and it’s much easier to let the engine handle all of the ‘animation’ (e.g. AIs moving around).
The principle of the CamVator sequence is that the player is attached to an invisible, silent elevator, which can then move around the level. Various events can be triggered along the way. This tutorial will tell you how to create a CamVator, how to attach the Player to it, and how to get it moving.
Most of the elevator objects make a noise when activated. It is easy enough to silence them, but it’s easier just to create a Raft (Physical → TerrainLike → Lift → Raft). To turn it into a suitable CamVator, you need to add the property Renderer → Render Type: Not Rendered. This will make it invisible. Next, you should resize the object. Edit the Physics → Model → Dimensions property so that the X Y and Z values of size are all equal to 1. This only resizes the physics model. To resize the bounding box of the object, change the D W and H values (in the bottom-left of the Dromed window) to 1. Resizing it may not always be necessary, but it helps to minimise the risk of it interfering with other things.
If an elevator is not properly linked, Dromed will not allow you to compute the pathfinding database. Therefore you should do the following, just to be on the safe side: Create a TerrPt where the CamVator is to start, and create a TPathInit link to from the CamVator to this TerrPt. You should then create another TerrPt and create a TPath link from the first TerrPt to the second one. It doesn’t matter whether or not the second one is in the right place, you can sort that out later.
To attach one object to another, a PhysAttach link is needed, but when the player is involved things aren’t quite that simple. The player is represented by an object called Player, which is created automatically when the game starts. In other words, you cannot link to/from it directly. You can however use a conversation to add the link.
Adding the PhysAttach link should not be the first step of the conversation however, because the player would actually be dragged towards the CamVator at high speed. Instead, the first step of the conversation should be to frob a button that is linked to a TeleportTrap, which should be very close to the CamVator. Alternatively, you can add the TrapTeleporter script to the starting TerrPt and link it to your Starting Point, then trigger something that will send a TurnOn message to the first TerrPt, such as a button. The second step of the conversation should then be to add a PhyAttach link from the Player to the CamVator.
If you used a button to teleport the player, you can use this same button to make the CamVator move. If you link it (ControlDevice) to the CamVator, it will then move along the route defined by the TPath links, and will only stop if it receives a TurnOff message (e.g. from a button linked to an Inverter).
If instead the button is linked to TerrPt, the CamVator will head directly to it (in a straight line), assuming the TerrPt can be reached via the Tpath links to/from the initial TerrPt.
Clearly the conversation needs to be activated as soon as the game starts. One way to do this is to create a Lever and edit the Tweq → JointState property so that On is selected for AnimS, then you can link the lever to the conversation (ControlDevice).
To make the starting of the CamVator appear smooth, it is the convention to have the player start in a room with a plain black texture, and then have the black gradually fade, making the level gradually become visible. The most reliable method of creating the fade-in effect is to use Telliamed’s TrapRenderFlash script. To do this, find the Renderflash archetype (SFX → FlashFX) and add a child archetype called BlackFlash. Add to this the property SFX > FlashBombInfo and set the R, G and B values to 0.
Then add to some object the script TrapRenderFlash, and create a RenderFlash link to BlackFlash. The button that is used to teleport the player and to start the CamVator can also be linked (ControlDevice) to the object with the TrapRenderFlash script.
It is probably possible to use custom scripts to do everything mentioned above, but it has not yet been done. For example, one of Nameless Voice’s scripts, NVLinkBuilder could be used.
Anyone who wishes to try using custom scripts should be mindful that for some things, timing is essential. For example, the player must be teleported before the PhysAttach link is created, and the flash must start before the teleport is triggered. You can force traps to activate sequentially by linking multiple RelayTraps in series. The first relay triggers the render flash and the second relay, which triggers the teleport and the third relay, etc. Whether to use relay traps or a conversation is a choice you make for comfort and convenience.