This tutorial will cover all of the aspects of making your own cinematic sequence such as the intro movie for UT2004. This tutorial assumes you have a basic knowledge of the editor, if not you should read my Basic Tutorial before continuing.
For your map file to work as a cinematic sequence when someone double clicks it, you need to change the default GameType in the level properties. Hit F6 or View >> Level Properties to bring it up, and change the DefaultGameType under LevelInfo to Unrealgame.CinematicGame.
Now to set up for our first scene. Subtract a large cube and add a light and a playerstart, and rebuild. To begin making our matinee, press the Matinee button in the left toolbar.
Hit the New button (single piece of paper) and a SceneManager actor should appear in the map and be displayed in the Matinee menu.
WARNING - You should never try to edit the SceneManager directly by adding Actions through its property box, doing so will crash the editor. Always change SceneManager properties in the Matinee menu.
Now let's look at the SceneManager properties. The most important one is its Tag. For the first scene in your matinee, you will need to name it StartGame so that the game automatically starts with this scene.
Now let's take a look at the properties under the SceneManager list.
Actions - This lists the actions that this scene will take. DO NOT edit the actions through this property field, use the Actions tab instead (covered below).
Affect - For normal matinees you will want to leave this at AFFECT_ViewportCamera. If you want a specific actor to follow the matinee path, set this to AFFECT_Actor.
AffectedActor - When Affect is set to AFFECT_Actor, select the actor you want to be affected and hit Use here to have that actor follow the matinee path.
bCinematicView - False = Full screen, True gives it a more widescreen look.
bHideHUD - Wether or not to hide the HUD while this scene is playing.
bLooping - If set to true, this scene will repeat once it reaches the end of its Actions.
EventEnd - Event to trigger once this scene ends.
EventStart - Event to trigger when this scene starts.
NextSceneTag - When this scene ends, the camera will move on to the scene with this Tag.
PlayerScriptTag - For cutscenes, the script with this Tag takes control of the player for this scene.
The Tools Tab
Before we start adding actions for this SceneManager, we need to place cameras and looktargets, which can be found under the Tools tab of the Matinee menu.
Add Interpolation Point - This adds a camera to the current location of the 3d viewport camera, rotated the same direction so you can have precise control where it points.
Add Look Target - Adds a look target, which can be used by both the camera and AI scripts for characters in your matinee.
Add Interpolation Point & Action - Adds a camera and automatically generates a MoveCamera action with this camera set as the destination.
Once we have a few cameras set in our level, we can start making some Actions.
The Actions Tab
The Actions tab is pretty bare to start with, but can easily become crowded and hard to manage. It's best to plan your matinee out and break it up into more easily manageable scenes by using the Scenes tab and the NextSceneTag property.
Let's create our first action. Hit the New button, and choose ActionPause.
The properties of an ActionPause are pretty simple.
Comment - Typing stuff in here can be a helpful way of reminding yourself of things and keeping track of your matinee. This comment will appear next to the action's symbol in the viewport.
IntPoint - This is the Interpolation Point that the camera will use for this Action. Select a camera in the editor and hit Use here to assign it.
Duration - How long the camera will stay here. If left at 0, the matinee will immediately continue to the next Action. For our example, let's set it to 3.
Now before we take a look at our progress, let's add another camera and an ActionMoveCamera. If you add it in the wrong order, the up and down arrow buttons let you change the position of the selected Action. When the matinee plays, it starts with the Action at the top and works its way down, so it's important to have them in the right order.
The properties of an ActionMoveCamera are a little more complex, so let's take a look.
bConstantPathVelocity - If left at False, the camera accelerates as it leaves the start point and slows as it approaches its destination. If set to True, the velocity will be the same for the entire trip.
bSmoothCorner - If the PathStyle is Bezier, adjusting one control point will cause the other to shift to keep the tangent the same. The effects of this are very subtle, and in most cases leaving it at True is fine.
EndControlPoint - For Bezier paths, the end control point's location relative to the Interpolation Point. In most cases you'll just adjust the control points in the viewports, but for precise control you can use these properties.
PathStyle - PATHSTYLE_Linear makes the camera follow a straight line from its start location to its destination. PATHSTYLE_Bezier produces two white circles called Control Points that you can use for curved paths.
PathVelocity - When bConstantPathVelocity is set to True, the camera uses this speed. Note that it will automatically calculate the Duration when using this method.
StartControlPoint - Same property as the EndControlPoint, but adjusts the control point from the starting Interpolation Point.
Comment - Same as ActionPause described above.
IntPoint - The destination Interpolation Point of this camera movement.
Duration - How long it takes the camera to get to the destination point. 0 is instantaneous.
For our example, I'm going to make a curved Bezier path similar to the example pic and set the Duration to 3, as well as set the IntPoint to our second camera. If the RealTime Preview is activated in the 3D viewport, you should see the path line show up when you set the destination.
IMPORTANT - Each ActionPause and ActionMoveCamera MUST have an IntPoint assigned, otherwise the camera will behave strangely.
Now let's take a look at what we have so far. Our first action is an ActionPause assigned to our first IntPoint for 3 seconds, and the second is an ActionMoveCamera assigned to our second IntPoint with a Duration of 3 seconds. If we press the Open A Preview Window button, we can watch our matinee.
In our Preview Window we have several options. We can toggle the Cinematic View, turn off the matinee path lines and rotation indicators, refresh the matinee information if we change something in the editor without closing this window, and play, stop, and rewind the matinee. There is also a slider bar underneath the buttons that you can use to go to a precise time in the matinee.
CAUTION - Using the slider bar while the matinee is playing may cause the camera rotation to mess up, in this case you will have to restart the editor to reset it.
Press play, and watch your matinee!
Ok, that was pretty dull. If we made our entire matinee this way, it would just be like watching a rollercoaster ride. Also, you may have noticed that the camera kind of floated toward the first IntPoint. It's always best to start a scene with an ActionMoveCamera with a Duration set to 0 so that it immediately starts at an Interpolation Point. Next up we're going to take a look at Sub Actions where we can do a lot more with the camera.
Sub Actions are actions that occur while the main Action is playing. For instance, during an ActionPause, we can have the camera be doing other things while it's sitting at that Interpolation Point. Let's click over to the Sub Action tab and take a look at what we can do.
All Sub Actions have the same Time properties. Duration is used for Sub Actions that take place over a period of time such as camera shakes, and the Delay is how long it will wait after starting the main Action before doing this Sub Action.
SubActionSubTitle - This subaction is used in conjunction with a SceneSubtitles actor (found under Info) to make it move to the next line in the subtitle list.
SubActionSceneSpeed - Using the GameSpeed property here lets you slow down or speed up the scene. Note that this does not affect the game speed. 1 is normal speed. The scene speed will continue with this value until changed by another SubActionSceneSpeed.
SubActionGameSpeed - This one is the same as the SubActionSceneSpeed, but changes the actual game speed so everything moves in slow motion or much faster.
SubActionOrientation - This changes the orientation of the camera.
CamOrientation - Controls how the camera is oriented.
CAMORIENT_None - Uses whatever orientation the camera had when it moved to that point and keeps that rotation.
CAMORIENT_LookAtActor - The camera will keep its focus on the actor specified in the LookAt property until another SubActionOrientation is used.
CAMORIENT_FacePath - The camera will face the direction it is moving. This is the default, but you'll want to use other ones in most cases since this one gives a rollercoaster looking matinee.
CAMORIENT_Interpolate - The camera uses the Interpolation Point's rotation (shown as a white projection when selected) and smoothly transitions to the destination IntPoint's rotation. If the Duration of the move is 0, the camera will immediately use the destination's rotation.
CAMORIENT_Dolly - The camera will remain a fixed distance away from the DollyWith actor.
DollyWith - Used with the CAMORIENT_Dolly orientation, the camera will remain a fixed distance from this actor. Select any actor in the level and hit Use here. It helps if the actor actually moves, otherwise there's no need to use this orientation.
EaseInTime - The amount of time it will take the camera to rotate to its new orientation. If left at 0 the camera will immediately snap to its new rotation.
LookAt - Used with the CAMORIENT_LookAtActor orientation, put the Object >> Name of the actor you want it to look at here.
SubActionCameraShake - This causes the camera to shake. There are X,Y and Z properties to mess around with, all determine the magnitude of shaking that occurs on each axis. The Duration for this Sub Action determines how long it will last.
SubActionFOV - Changes the FOV of the camera. This one will not show in the Matinee Preview window, you will have to go in-game to see it. Default FOV = 90.
SubActionTrigger - Triggers every actor with this Tag. Useful for coordinating effects and character movement with the camera.
SubActionFade - Fades the camera in or out.
bFadeOut - If left at True, the camera will fade out. If set to False, the camera will fade in.
FadeColor - This is the color that the camera will fade to.
Duration - Determines how long the fade takes.
Keep in mind that if you fade the camera out, it will stay faded out until you use another SubActionFade to fade it back in. It's generally a good idea to use the same color for both parts of a fade.
SubActionCameraEffect - The motion blur portion of this doesn't seem to be supported, but the CameraOverlay effect works. You can set a texture in the OverlayMaterial property to have a texture rendered over the viewport, or just a color with the OverlayColor property.
That's it for the camera. By now you should be able to manipulate the camera to do practically anything you want. For some general guidelines, always start a scene with an ActionMoveCamera to set its initial location. By dividing up your matinee into several shorter scenes, you can temporarily set later scenes to StartGame so that you can try them out without having to watch your whole matinee.