After analyzing many of Shyamalans movies, I took note of particular camera moves that he implimented in order to heighten the tension. One of these was the backwards camera move, where the camera would be in front of the character so the audience could not see where he/she was walking or what he/she was looking at.
To add to this mechanic, I used color to lead the character thoughout the level. The brighter/more collective the color was, the closer the player was to their end goal.
In the level, I set up a few hallways, giving the player choices when they approached an intersection. The color red was used to guide the player in the right direction.
Once the player gets to a long hallway, the camera turns into to face the player and begins to move down the hallway, forcing the player to keep up by running forward. As the player runs down the hallway, the lights flicker off as he passes them.
I had difficulties with this camera move. One, it was hard to time the camera correctly as to not irritate the player or move too fast that they can't keep up. Also, I had many struggles with getting the first frame of the camera move to focus on the location I wanted to.
The Matinee sequence above. The key frame needed to be set in World Frame in order for the camera to focus on what I was telling it to. Why, Matinee...why must you be so picky? I had to go back and redo the camera move afterward to get the timing right after the fix.
Once the player reaches the end of the hallway, the camera returns to its third-person position and the player is now facing a mysterious door, which would, in theory, lead on to the rest of the game.
Camera moves in UDK are extremely tedious and picky. I have learned my lesson.
Kismet Code:
Begin Object Class=SeqEvent_LevelLoaded Name=SeqEvent_LevelLoaded_0
MaxWidth=136
OutputLinks(0)=(Links=((LinkedOp=SeqAct_ConsoleCommand'SeqAct_ConsoleCommand_0'),(LinkedOp=SeqAct_ToggleHUD'SeqAct_ToggleHUD_0',InputLinkIdx=1)),DrawY=149)
OutputLinks(1)=(DrawY=170)
OutputLinks(2)=(DrawY=191)
ObjInstanceVersion=3
ParentSequence=Sequence'Main_Sequence'
ObjPosX=104
ObjPosY=80
DrawWidth=137
Name="SeqEvent_LevelLoaded_0"
ObjectArchetype=SeqEvent_LevelLoaded'Engine.Default__SeqEvent_LevelLoaded'
End Object
Begin Object Class=SeqAct_ConsoleCommand Name=SeqAct_ConsoleCommand_0
Commands(0)="behindview"
InputLinks(0)=(DrawY=34)
OutputLinks(0)=(DrawY=34)
VariableLinks(0)=(LinkedVariables=(SeqVar_Player'SeqVar_Player_0'),DrawX=448)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=384
DrawWidth=129
DrawHeight=61
Name="SeqAct_ConsoleCommand_0"
ObjectArchetype=SeqAct_ConsoleCommand'Engine.Default__SeqAct_ConsoleCommand'
End Object
Begin Object Class=SeqVar_Player Name=SeqVar_Player_0
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=424
ObjPosY=104
DrawWidth=32
DrawHeight=32
Name="SeqVar_Player_0"
ObjectArchetype=SeqVar_Player'Engine.Default__SeqVar_Player'
End Object
Begin Object Class=SeqAct_ToggleHUD Name=SeqAct_ToggleHUD_0
InputLinks(0)=(DrawY=269)
InputLinks(1)=(DrawY=290)
InputLinks(2)=(DrawY=311)
OutputLinks(0)=(DrawY=290)
VariableLinks(0)=(LinkedVariables=(SeqVar_Player'SeqVar_Player_0'),DrawX=419)
ObjInstanceVersion=3
ParentSequence=Sequence'Main_Sequence'
ObjPosX=376
ObjPosY=232
DrawWidth=86
DrawHeight=109
Name="SeqAct_ToggleHUD_0"
ObjectArchetype=SeqAct_ToggleHUD'Engine.Default__SeqAct_ToggleHUD'
End Object
Begin Object Class=SeqAct_Interp Name=SeqAct_Interp_2
Begin Object Class=InterpGroupInst Name=InterpGroupInst_21
Begin Object Class=InterpTrackInstFloatProp Name=InterpTrackInstFloatProp_5
FloatProp=
ResetFloat=90.000000
Name="InterpTrackInstFloatProp_5"
ObjectArchetype=InterpTrackInstFloatProp'Engine.Default__InterpTrackInstFloatProp'
End Object
Begin Object Class=InterpTrackInstMove Name=InterpTrackInstMove_2
InitialTM=(XPlane=(W=0.000000,X=0.368467,Y=0.929641,Z=0.000000),YPlane=(W=0.000000,X=-0.929641,Y=0.368467,Z=0.000000),ZPlane=(W=0.000000,X=0.000000,Y=0.000000,Z=1.000000),WPlane=(W=1.000000,X=-338.686584,Y=149.510193,Z=0.000000))
InitialQuat=(X=0.000000,Y=0.000000,Z=0.561931,W=0.827184)
Name="InterpTrackInstMove_2"
ObjectArchetype=InterpTrackInstMove'Engine.Default__InterpTrackInstMove'
End Object
Group=InterpGroup'InterpGroup_5'
GroupActor=CameraActor'CameraActor_1'
Name="InterpGroupInst_21"
ObjectArchetype=InterpGroupInst'Engine.Default__InterpGroupInst'
End Object
Begin Object Class=InterpGroupInstDirector Name=InterpGroupInstDirector_2
Begin Object Class=InterpTrackInstDirector Name=InterpTrackInstDirector_2
Name="InterpTrackInstDirector_2"
ObjectArchetype=InterpTrackInstDirector'Engine.Default__InterpTrackInstDirector'
End Object
Group=InterpGroupDirector'InterpGroupDirector_2'
Name="InterpGroupInstDirector_2"
ObjectArchetype=InterpGroupInstDirector'Engine.Default__InterpGroupInstDirector'
End Object
InputLinks(0)=(DrawY=-682)
InputLinks(1)=(DrawY=-660)
InputLinks(2)=(DrawY=-638)
InputLinks(3)=(DrawY=-616)
InputLinks(4)=(DrawY=-594)
OutputLinks(0)=(DrawY=-666,OverrideDelta=31)
OutputLinks(1)=(DrawY=-610,OverrideDelta=87)
VariableLinks(0)=(LinkedVariables=(InterpData'InterpData_2'),DrawX=156,OverrideDelta=21)
VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=(SeqVar_Object'SeqVar_Object_5'),LinkDesc="Camera_1",MinVars=0,DrawX=220,OverrideDelta=68)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=120
ObjPosY=-720
DrawWidth=154
DrawHeight=157
Name="SeqAct_Interp_2"
ObjectArchetype=SeqAct_Interp'Engine.Default__SeqAct_Interp'
End Object
Begin Object Class=InterpData Name=InterpData_2
Begin Object Class=InterpCurveEdSetup Name=InterpCurveEdSetup_2
Tabs(0)=(ViewStartInput=1.099362,ViewEndInput=13.099358,ViewStartOutput=-1177.567871,ViewEndOutput=128.869949)
Name="InterpCurveEdSetup_2"
ObjectArchetype=InterpCurveEdSetup'Engine.Default__InterpCurveEdSetup'
End Object
Begin Object Class=InterpGroup Name=InterpGroup_5
Begin Object Class=InterpTrackFloatProp Name=InterpTrackFloatProp_5
PropertyName="FOVAngle"
TrackTitle="FOVAngle"
Name="InterpTrackFloatProp_5"
ObjectArchetype=InterpTrackFloatProp'Engine.Default__InterpTrackFloatProp'
End Object
Begin Object Class=InterpTrackMove Name=InterpTrackMove_5
PosTrack=(Points=((InVal=0.011755,OutVal=(X=-14.196016,Y=-369.946442,Z=0.000000)),(InVal=2.000000,OutVal=(X=-10.115090,Y=-479.269104,Z=1.046059),ArriveTangent=(X=-2.612707,Y=-111.111115,Z=0.000000),LeaveTangent=(X=-2.612707,Y=-111.111115,Z=0.000000)),(InVal=3.500000,OutVal=(X=11.355391,Y=-601.038940,Z=0.000000),ArriveTangent=(X=0.000000,Y=-92.614456,Z=0.000000),LeaveTangent=(X=47.614956,Y=-150.863449,Z=0.000000)),(InVal=5.000000,OutVal=(X=134.159729,Y=-673.492798,Z=1.000000),InterpMode=CIM_CurveAutoClamped),(InVal=5.000000,OutVal=(X=91.217644,Y=-662.596130,Z=1.000000),ArriveTangent=(X=157.167542,Y=-67.402100,Z=1.188188),LeaveTangent=(X=157.167542,Y=-67.402100,Z=1.188188)),(InVal=12.000000,OutVal=(X=3597.413086,Y=-686.411804,Z=14.000000),InterpMode=CIM_CurveAutoClamped),(InVal=13.000000,OutVal=(X=3678.989502,Y=-685.233887,Z=14.000000),InterpMode=CIM_CurveAutoClamped)))
EulerTrack=(Points=((InVal=0.011755,OutVal=(X=0.000000,Y=0.000000,Z=-68.378906)),(InVal=2.000000,OutVal=(X=0.000000,Y=0.000000,Z=-61.193848),ArriveTangent=(X=0.000000,Y=0.000000,Z=-9.637148),LeaveTangent=(X=0.000000,Y=0.000000,Z=-9.637148)),(InVal=3.500000,OutVal=(X=0.000000,Y=0.000000,Z=-66.533203),ArriveTangent=(X=0.000000,Y=0.000000,Z=-19.510475),LeaveTangent=(X=0.000000,Y=0.000000,Z=-19.510475)),(InVal=5.000000,OutVal=(X=0.000000,Y=0.000000,Z=165.761719),InterpMode=CIM_CurveAutoClamped),(InVal=5.000000,OutVal=(X=0.000000,Y=0.000000,Z=165.761719)),(InVal=12.000000,OutVal=(X=0.000000,Y=0.000000,Z=171.035156),InterpMode=CIM_CurveAutoClamped),(InVal=13.000000,OutVal=(X=0.000000,Y=0.000000,Z=-5.449219),InterpMode=CIM_CurveAutoClamped)))
LookupTrack=(Points=((Time=0.011755),(Time=2.000000),(Time=3.500000),(Time=5.000000),(Time=5.000000),(Time=12.000000),(Time=13.000000)))
Name="InterpTrackMove_5"
ObjectArchetype=InterpTrackMove'Engine.Default__InterpTrackMove'
End Object
InterpTracks(0)=InterpTrackMove'InterpTrackMove_5'
InterpTracks(1)=InterpTrackFloatProp'InterpTrackFloatProp_5'
GroupName="Camera_1"
GroupColor=(B=151,G=186,R=0,A=255)
Name="InterpGroup_5"
ObjectArchetype=InterpGroup'Engine.Default__InterpGroup'
End Object
Begin Object Class=InterpGroupDirector Name=InterpGroupDirector_2
Begin Object Class=InterpTrackDirector Name=InterpTrackDirector_2
CutTrack(0)=(TargetCamGroup="Camera_1")
Name="InterpTrackDirector_2"
ObjectArchetype=InterpTrackDirector'Engine.Default__InterpTrackDirector'
End Object
InterpTracks(0)=InterpTrackDirector'InterpTrackDirector_2'
GroupColor=(B=92,G=218,R=0,A=255)
Name="InterpGroupDirector_2"
ObjectArchetype=InterpGroupDirector'Engine.Default__InterpGroupDirector'
End Object
InterpLength=14.000000
InterpGroups(0)=InterpGroupDirector'InterpGroupDirector_2'
InterpGroups(1)=InterpGroup'InterpGroup_5'
CurveEdSetup=InterpCurveEdSetup'InterpCurveEdSetup_2'
SelectedFilter=InterpFilter'Engine.Default__InterpData:FilterAll'
EdSectionStart=0.000000
EdSectionEnd=14.000000
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=120
ObjPosY=-520
DrawWidth=32
DrawHeight=32
Name="InterpData_2"
ObjectArchetype=InterpData'Engine.Default__InterpData'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_5
ObjValue=CameraActor'CameraActor_1'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=208
ObjPosY=-520
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_5"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqEvent_Touch Name=SeqEvent_Touch_0
Originator=TriggerVolume'TriggerVolume_0'
MaxWidth=165
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Delay'SeqAct_Delay_0'),(LinkedOp=SeqAct_Interp'SeqAct_Interp_2')),DrawY=-195)
OutputLinks(1)=(DrawY=-174)
OutputLinks(2)=(DrawY=-153)
VariableLinks(0)=(LinkedVariables=(SeqVar_Player'SeqVar_Player_0'),DrawX=282)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=200
ObjPosY=-264
ObjName="TriggerVolume_0 Touch"
DrawWidth=127
DrawHeight=176
Name="SeqEvent_Touch_0"
ObjectArchetype=SeqEvent_Touch'Engine.Default__SeqEvent_Touch'
End Object
Begin Object Class=SeqAct_Toggle Name=SeqAct_Toggle_0
InputLinks(0)=(DrawY=-419)
InputLinks(1)=(DrawY=-398)
InputLinks(2)=(DrawY=-377)
OutputLinks(0)=(DrawY=-398)
VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_1'),DrawX=662)
VariableLinks(1)=(DrawX=713)
EventLinks(0)=(DrawX=762)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=624
ObjPosY=-456
DrawWidth=173
DrawHeight=109
Name="SeqAct_Toggle_0"
ObjectArchetype=SeqAct_Toggle'Engine.Default__SeqAct_Toggle'
End Object
Begin Object Class=SeqAct_Delay Name=SeqAct_Delay_0
InputLinks(0)=(DrawY=-291)
InputLinks(1)=(DrawY=-270)
InputLinks(2)=(DrawY=-249)
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Toggle'SeqAct_Toggle_0',InputLinkIdx=1),(LinkedOp=SeqAct_SetMaterial'SeqAct_SetMaterial_0')),DrawY=-286)
OutputLinks(1)=(DrawY=-254)
VariableLinks(0)=(DrawX=500)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=448
ObjPosY=-328
DrawWidth=106
DrawHeight=109
Name="SeqAct_Delay_0"
ObjectArchetype=SeqAct_Delay'Engine.Default__SeqAct_Delay'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_1
ObjValue=PointLightToggleable'PointLightToggleable_12'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=632
ObjPosY=-336
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_1"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqAct_SetMaterial Name=SeqAct_SetMaterial_0
NewMaterial=Material'eberman_mechanic.SM.Materials.Off'
InputLinks(0)=(DrawY=-190)
OutputLinks(0)=(DrawY=-190)
VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_2'),DrawX=669)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=624
ObjPosY=-224
DrawWidth=90
DrawHeight=61
Name="SeqAct_SetMaterial_0"
ObjectArchetype=SeqAct_SetMaterial'Engine.Default__SeqAct_SetMaterial'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_2
ObjValue=StaticMeshActor'StaticMeshActor_0'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=632
ObjPosY=-144
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_2"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object