Katherine "Kez" Laczin
In the Treasure Raiders genre, I wanted to make the player feel like they were on an adventure through an ancient temple in search of a lost item of value. In this sense, they could use mechanics that are trying to hurt them to accomplish their goal (or at least survive). The mock-up level did function, albeit simply. I wish I could have done more had there been more time.
Level start - knock down the door
The player can't go anywhere besides the glowing area behind the front door. They can shoot the door down in order to proceed. This mechanic of destroying the environment becomes more functional as the level progresses.
The player has choices of where to go, but one way is blocked. The entire temple is incredibly well-lit, which is a feature in almost every tomb raiding / temple exploring movie. Fire reveals all - even if it's a tiny flame, you can basically still see everything.
Level - Trap door
The player comes into a room with a fancy-looking object. However, this is a decoy - the player soon realizes that the stone door behind them has fallen, and they can't get out. The only hint is the wooden door floor - and upon shooting it, the door collapses and the player slides down a corridor into the next level.
Level - Reach the opening
In this next level, the player can't advance because the continuing opening is too high. As the walk around the room, "boulders" fall from the ceiling and almost crush the player. However, the player can shoot the boulders into whatever position they desire, and create a stepping-stone to get to the place they could not previously reach.
If programming allowed it, this room would be filling with water.. complete with alligators! So the player would have to race up the spiraling hallway, back to the entrance of the temple, to live again for another day.
Kismet - It's a rather simple setup. Force actors are triggered by a player's presence to awaken the KActors, and the doors are triggered and realized through a Matinee sequence, giving the illusion that the door is moving according to the player's actions.
Begin Object Class=SeqAct_Interp Name=SeqAct_Interp_0
InputLinks(0)=(DrawY=30)
InputLinks(1)=(DrawY=52)
InputLinks(2)=(DrawY=74)
InputLinks(3)=(DrawY=96)
InputLinks(4)=(DrawY=118)
OutputLinks(0)=(DrawY=46,OverrideDelta=31)
OutputLinks(1)=(DrawY=102,OverrideDelta=87)
VariableLinks(0)=(LinkedVariables=(InterpData'InterpData_0'),DrawX=217,OverrideDelta=34)
VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=(SeqVar_Object'SeqVar_Object_0'),LinkDesc="Door1",MinVars=0,DrawX=268,OverrideDelta=81)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=168
ObjPosY=-8
DrawWidth=154
DrawHeight=157
Name="SeqAct_Interp_0"
ObjectArchetype=SeqAct_Interp'Engine.Default__SeqAct_Interp'
End Object
Begin Object Class=InterpData Name=InterpData_0
Begin Object Class=InterpGroup Name=InterpGroup_0
Begin Object Class=InterpTrackMove Name=InterpTrackMove_0
PosTrack=(Points=((InterpMode=CIM_CurveAutoClamped),(InVal=2.000001,OutVal=(X=0.000006,Y=0.000000,Z=-256.000000),InterpMode=CIM_CurveAutoClamped)))
EulerTrack=(Points=((InterpMode=CIM_CurveAutoClamped),(InVal=2.000001,InterpMode=CIM_CurveAutoClamped)))
LookupTrack=(Points=(,(Time=2.000001)))
MoveFrame=IMF_RelativeToInitial
Name="InterpTrackMove_0"
ObjectArchetype=InterpTrackMove'Engine.Default__InterpTrackMove'
End Object
InterpTracks(0)=InterpTrackMove'InterpTrackMove_0'
GroupName="Door1"
GroupColor=(B=0,G=99,R=216,A=255)
Name="InterpGroup_0"
ObjectArchetype=InterpGroup'Engine.Default__InterpGroup'
End Object
Begin Object Class=InterpCurveEdSetup Name=InterpCurveEdSetup_0
Name="InterpCurveEdSetup_0"
ObjectArchetype=InterpCurveEdSetup'Engine.Default__InterpCurveEdSetup'
End Object
InterpLength=2.000001
InterpGroups(0)=InterpGroup'InterpGroup_0'
CurveEdSetup=InterpCurveEdSetup'InterpCurveEdSetup_0'
SelectedFilter=InterpFilter'Engine.Default__InterpData:FilterAll'
EdSectionStart=0.000000
EdSectionEnd=2.000001
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=168
ObjPosY=176
DrawWidth=32
DrawHeight=32
Name="InterpData_0"
ObjectArchetype=InterpData'Engine.Default__InterpData'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_0
ObjValue=InterpActor'InterpActor_0'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=256
ObjPosY=176
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_0"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqEvent_Touch Name=SeqEvent_Touch_0
Originator=DynamicTriggerVolume'DynamicTriggerVolume_0'
MaxWidth=220
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Interp'SeqAct_Interp_0')),DrawY=53)
OutputLinks(1)=(DrawY=74)
OutputLinks(2)=(DrawY=95)
VariableLinks(0)=(DrawX=38)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=-72
ObjPosY=-16
ObjName="DynamicTriggerVolume_0 Touch"
DrawWidth=155
DrawHeight=176
Name="SeqEvent_Touch_0"
ObjectArchetype=SeqEvent_Touch'Engine.Default__SeqEvent_Touch'
End Object
Begin Object Class=SeqEvent_TakeDamage Name=SeqEvent_TakeDamage_0
Originator=InterpActor'InterpActor_3'
MaxTriggerCount=0
MaxWidth=196
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Interp'SeqAct_Interp_1')),DrawY=50)
VariableLinks(0)=(DrawX=-592)
VariableLinks(1)=(DrawX=-518)
ObjInstanceVersion=3
ParentSequence=Sequence'Main_Sequence'
ObjPosX=-656
ObjPosY=-16
ObjName="InterpActor_3 Take Damage"
DrawWidth=118
DrawHeight=144
Name="SeqEvent_TakeDamage_0"
ObjectArchetype=SeqEvent_TakeDamage'Engine.Default__SeqEvent_TakeDamage'
End Object
Begin Object Class=SeqAct_Interp Name=SeqAct_Interp_1
InputLinks(0)=(DrawY=14)
InputLinks(1)=(DrawY=36)
InputLinks(2)=(DrawY=58)
InputLinks(3)=(DrawY=80)
InputLinks(4)=(DrawY=102)
OutputLinks(0)=(DrawY=30,OverrideDelta=31)
OutputLinks(1)=(DrawY=86,OverrideDelta=87)
VariableLinks(0)=(LinkedVariables=(InterpData'InterpData_1'),DrawX=-358,OverrideDelta=35)
VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=(SeqVar_Object'SeqVar_Object_1'),LinkDesc="door0",MinVars=0,DrawX=-308,OverrideDelta=82)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=-408
ObjPosY=-24
DrawWidth=154
DrawHeight=157
Name="SeqAct_Interp_1"
ObjectArchetype=SeqAct_Interp'Engine.Default__SeqAct_Interp'
End Object
Begin Object Class=InterpData Name=InterpData_1
Begin Object Class=InterpGroup Name=InterpGroup_0
Begin Object Class=InterpTrackMove Name=InterpTrackMove_0
PosTrack=(Points=((InterpMode=CIM_CurveAutoClamped),(InVal=0.497700,OutVal=(X=0.000046,Y=0.000004,Z=0.000410),ArriveTangent=(X=0.000062,Y=0.000109,Z=0.003095),LeaveTangent=(X=0.000062,Y=0.000109,Z=0.003095),InterpMode=CIM_CurveAuto),(InVal=0.977004,OutVal=(X=0.000061,Y=0.000107,Z=0.003024),ArriveTangent=(X=0.000129,Y=0.000000,Z=0.011155),LeaveTangent=(X=0.000129,Y=0.000000,Z=0.011155)),(InVal=1.050000,OutVal=(X=0.000107,Y=0.000107,Z=-0.000028),ArriveTangent=(X=0.000545,Y=0.000000,Z=0.000000),LeaveTangent=(X=0.000545,Y=0.000000,Z=0.000000)),(InVal=1.300000,OutVal=(X=0.000153,Y=0.000107,Z=-0.000028))))
EulerTrack=(Points=((InterpMode=CIM_CurveAutoClamped),(InVal=0.497700,OutVal=(X=-0.258179,Y=0.109863,Z=-8.151855),ArriveTangent=(X=-1.169471,Y=-0.073092,Z=-92.764946),LeaveTangent=(X=-1.169471,Y=-0.073092,Z=-92.764946),InterpMode=CIM_CurveAuto),(InVal=0.977004,OutVal=(X=-1.142578,Y=-0.071411,Z=-90.631714),ArriveTangent=(X=-0.240658,Y=0.000000,Z=0.000000),LeaveTangent=(X=-0.240658,Y=0.000000,Z=0.000000)),(InVal=1.050000,OutVal=(X=-1.164551,Y=-0.027466,Z=-87.846680),ArriveTangent=(X=-0.261777,Y=0.000000,Z=0.000000),LeaveTangent=(X=-0.261777,Y=0.000000,Z=0.000000)),(InVal=1.300000,OutVal=(X=-1.186523,Y=-0.104370,Z=-90.675659))))
LookupTrack=(Points=(,(Time=0.497700),(Time=0.977004),(Time=1.050000),(Time=1.300000)))
MoveFrame=IMF_RelativeToInitial
Name="InterpTrackMove_0"
ObjectArchetype=InterpTrackMove'Engine.Default__InterpTrackMove'
End Object
InterpTracks(0)=InterpTrackMove'InterpTrackMove_0'
GroupName="door0"
GroupColor=(B=115,G=0,R=209,A=255)
Name="InterpGroup_0"
ObjectArchetype=InterpGroup'Engine.Default__InterpGroup'
End Object
Begin Object Class=InterpCurveEdSetup Name=InterpCurveEdSetup_0
Tabs(0)=(Curves=((CurveObject=InterpTrackMove'InterpTrackMove_0',CurveColor=(B=115,G=0,R=209,A=255),CurveName="door0_Movement")),ViewStartInput=0.160975,ViewEndInput=1.460268,ViewStartOutput=-0.002865,ViewEndOutput=0.009351)
Name="InterpCurveEdSetup_0"
ObjectArchetype=InterpCurveEdSetup'Engine.Default__InterpCurveEdSetup'
End Object
InterpLength=1.301593
InterpGroups(0)=InterpGroup'InterpGroup_0'
CurveEdSetup=InterpCurveEdSetup'InterpCurveEdSetup_0'
SelectedFilter=InterpFilter'Engine.Default__InterpData:FilterAll'
EdSectionStart=0.000000
EdSectionEnd=1.301593
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=-408
ObjPosY=168
DrawWidth=32
DrawHeight=32
Name="InterpData_1"
ObjectArchetype=InterpData'Engine.Default__InterpData'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_1
ObjValue=InterpActor'InterpActor_3'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=-320
ObjPosY=160
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_1"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqAct_Interp Name=SeqAct_Interp_2
InputLinks(0)=(DrawY=30)
InputLinks(1)=(DrawY=52)
InputLinks(2)=(DrawY=74)
InputLinks(3)=(DrawY=96)
InputLinks(4)=(DrawY=118)
OutputLinks(0)=(DrawY=46,OverrideDelta=31)
OutputLinks(1)=(DrawY=102,OverrideDelta=87)
VariableLinks(0)=(LinkedVariables=(InterpData'InterpData_2'),DrawX=689,OverrideDelta=34)
VariableLinks(1)=(ExpectedType=Class'Engine.SeqVar_Object',LinkedVariables=(SeqVar_Object'SeqVar_Object_3'),LinkDesc="Door1",MinVars=0,DrawX=740,OverrideDelta=81)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=640
ObjPosY=-8
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=InterpGroup Name=InterpGroup_2
Begin Object Class=InterpTrackMove Name=InterpTrackMove_1
PosTrack=(Points=(,(InVal=1.584074,OutVal=(X=0.000002,Y=0.000000,Z=0.000000))))
EulerTrack=(Points=(,(InVal=1.584074,OutVal=(X=0.000000,Y=-59.062500,Z=0.000000))))
LookupTrack=(Points=(,(Time=1.584074)))
MoveFrame=IMF_RelativeToInitial
Name="InterpTrackMove_1"
ObjectArchetype=InterpTrackMove'Engine.Default__InterpTrackMove'
End Object
InterpTracks(0)=InterpTrackMove'InterpTrackMove_1'
GroupName="Door1"
GroupColor=(B=221,G=0,R=88,A=255)
Name="InterpGroup_2"
ObjectArchetype=InterpGroup'Engine.Default__InterpGroup'
End Object
Begin Object Class=InterpCurveEdSetup Name=InterpCurveEdSetup_1
Tabs(0)=(Curves=((CurveObject=InterpTrackMove'InterpTrackMove_1',CurveColor=(B=221,G=0,R=88,A=255),CurveName="Door1_Movement")))
Name="InterpCurveEdSetup_1"
ObjectArchetype=InterpCurveEdSetup'Engine.Default__InterpCurveEdSetup'
End Object
InterpLength=1.584074
InterpGroups(0)=InterpGroup'InterpGroup_2'
CurveEdSetup=InterpCurveEdSetup'InterpCurveEdSetup_1'
SelectedFilter=InterpFilter'Engine.Default__InterpData:FilterAll'
EdSectionStart=0.000000
EdSectionEnd=1.584074
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=640
ObjPosY=176
DrawWidth=32
DrawHeight=32
Name="InterpData_2"
ObjectArchetype=InterpData'Engine.Default__InterpData'
End Object
Begin Object Class=SeqEvent_TakeDamage Name=SeqEvent_TakeDamage_2
DamageThreshold=150.000000
Originator=InterpActor'InterpActor_2'
MaxTriggerCount=0
MaxWidth=196
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Interp'SeqAct_Interp_2')),DrawY=66)
VariableLinks(0)=(DrawX=480)
VariableLinks(1)=(DrawX=554)
ObjInstanceVersion=3
ParentSequence=Sequence'Main_Sequence'
ObjPosX=416
ObjName="InterpActor_2 Take Damage"
DrawWidth=118
DrawHeight=144
Name="SeqEvent_TakeDamage_2"
ObjectArchetype=SeqEvent_TakeDamage'Engine.Default__SeqEvent_TakeDamage'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_3
ObjValue=InterpActor'InterpActor_2'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=728
ObjPosY=160
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_3"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqAct_Toggle Name=SeqAct_Toggle_0
InputLinks(0)=(DrawY=405)
InputLinks(1)=(DrawY=426)
InputLinks(2)=(DrawY=447)
OutputLinks(0)=(DrawY=426)
VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_2'),DrawX=318)
VariableLinks(1)=(DrawX=369)
EventLinks(0)=(DrawX=418)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=280
ObjPosY=368
DrawWidth=173
DrawHeight=109
Name="SeqAct_Toggle_0"
ObjectArchetype=SeqAct_Toggle'Engine.Default__SeqAct_Toggle'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_2
ObjValue=RB_RadialForceActor'RB_RadialForceActor_0'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=304
ObjPosY=512
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_2"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqEvent_Touch Name=SeqEvent_Touch_2
Originator=TriggerVolume'TriggerVolume_2'
MaxTriggerCount=0
MaxWidth=165
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Toggle'SeqAct_Toggle_0')),DrawY=421)
OutputLinks(1)=(DrawY=442)
OutputLinks(2)=(DrawY=463)
VariableLinks(0)=(DrawX=170)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=88
ObjPosY=352
ObjName="TriggerVolume_2 Touch"
DrawWidth=127
DrawHeight=176
Name="SeqEvent_Touch_2"
ObjectArchetype=SeqEvent_Touch'Engine.Default__SeqEvent_Touch'
End Object
Begin Object Class=SeqEvent_Touch Name=SeqEvent_Touch_3
Originator=TriggerVolume'TriggerVolume_4'
MaxTriggerCount=0
MaxWidth=165
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Toggle'SeqAct_Toggle_1')),DrawY=381)
OutputLinks(1)=(DrawY=402)
OutputLinks(2)=(DrawY=423)
VariableLinks(0)=(DrawX=714)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=632
ObjPosY=312
ObjName="TriggerVolume_4 Touch"
DrawWidth=127
DrawHeight=176
Name="SeqEvent_Touch_3"
ObjectArchetype=SeqEvent_Touch'Engine.Default__SeqEvent_Touch'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_4
ObjValue=KActor'KActor_1'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=816
ObjPosY=472
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_4"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object
Begin Object Class=SeqAct_Toggle Name=SeqAct_Toggle_1
InputLinks(0)=(DrawY=365)
InputLinks(1)=(DrawY=386)
InputLinks(2)=(DrawY=407)
OutputLinks(0)=(DrawY=386)
VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_4'),DrawX=862)
VariableLinks(1)=(DrawX=913)
EventLinks(0)=(DrawX=962)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=824
ObjPosY=328
DrawWidth=173
DrawHeight=109
Name="SeqAct_Toggle_1"
ObjectArchetype=SeqAct_Toggle'Engine.Default__SeqAct_Toggle'
End Object
Begin Object Class=SeqEvent_Touch Name=SeqEvent_Touch_4
Originator=TriggerVolume'TriggerVolume_3'
MaxWidth=165
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Toggle'SeqAct_Toggle_2')),DrawY=677)
OutputLinks(1)=(DrawY=698)
OutputLinks(2)=(DrawY=719)
VariableLinks(0)=(DrawX=186)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=104
ObjPosY=608
ObjName="TriggerVolume_3 Touch"
DrawWidth=127
DrawHeight=176
Name="SeqEvent_Touch_4"
ObjectArchetype=SeqEvent_Touch'Engine.Default__SeqEvent_Touch'
End Object
Begin Object Class=SeqAct_Toggle Name=SeqAct_Toggle_2
InputLinks(0)=(DrawY=669)
InputLinks(1)=(DrawY=690)
InputLinks(2)=(DrawY=711)
OutputLinks(0)=(DrawY=690)
VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_5'),DrawX=342)
VariableLinks(1)=(DrawX=393)
EventLinks(0)=(DrawX=442)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=304
ObjPosY=632
DrawWidth=173
DrawHeight=109
Name="SeqAct_Toggle_2"
ObjectArchetype=SeqAct_Toggle'Engine.Default__SeqAct_Toggle'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_5
ObjValue=KActor'KActor_2'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=304
ObjPosY=776
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_5
Originator=TriggerVolume'TriggerVolume_5'
MaxTriggerCount=0
MaxWidth=165
OutputLinks(0)=(Links=((LinkedOp=SeqAct_Toggle'SeqAct_Toggle_3')),DrawY=677)
OutputLinks(1)=(DrawY=698)
OutputLinks(2)=(DrawY=719)
VariableLinks(0)=(DrawX=658)
ObjInstanceVersion=2
ParentSequence=Sequence'Main_Sequence'
ObjPosX=576
ObjPosY=608
ObjName="TriggerVolume_5 Touch"
DrawWidth=127
DrawHeight=176
Name="SeqEvent_Touch_5"
ObjectArchetype=SeqEvent_Touch'Engine.Default__SeqEvent_Touch'
End Object
Begin Object Class=SeqAct_Toggle Name=SeqAct_Toggle_3
InputLinks(0)=(DrawY=645)
InputLinks(1)=(DrawY=666)
InputLinks(2)=(DrawY=687)
OutputLinks(0)=(DrawY=666)
VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_6'),DrawX=814)
VariableLinks(1)=(DrawX=865)
EventLinks(0)=(DrawX=914)
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=776
ObjPosY=608
DrawWidth=173
DrawHeight=109
Name="SeqAct_Toggle_3"
ObjectArchetype=SeqAct_Toggle'Engine.Default__SeqAct_Toggle'
End Object
Begin Object Class=SeqVar_Object Name=SeqVar_Object_6
ObjValue=RB_RadialForceActor'RB_RadialForceActor_1'
ObjInstanceVersion=1
ParentSequence=Sequence'Main_Sequence'
ObjPosX=752
ObjPosY=768
DrawWidth=32
DrawHeight=32
Name="SeqVar_Object_6"
ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
End Object