|
|
|
|
All use of my digital work is covered by this
Creative Commons Deed.
Please do not use any of my work for commercial purposes, thank you. |
|
|
|
Example Puzzle 1 (Page 3 of 7)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Taken from the map - Edge of Forever |
|
The room contains two electric generators next to the windows.
The generators are connected via cables to the ceiling coils and
linked to the battery in the middle.
The puzzle starts when the player switches on the battery and the
two ceiling coils start alternating on and off together.
The player has to switch on the correct generator linked to the
ceiling coil that is active. This will fill up three
bars on the battery and complete the puzzle.
|
|
|
Click on the above image for a larger version |
|
|
|
|
|
|
|
All entities used for the puzzle logic |
|
What the entities look like |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The core of the puzzle is the three lights (cells) around the outside of
the battery. This is a visual indicator of how far the player has
progressed through the puzzle and what is left to do. The puzzle
never resets, which allows the player to concentrate
on the switch mechanics instead.
The window generator switches are linked to a pair of
func_button entities which trigger target_relay entities.
The main loop of the
puzzle is three func_button entities arranged
in a row like an AND
logic gate.
|
|
|
|
|
Both ceiling coils alternate between an on and off state, but only
one coil is on at once. This requires a timer loop to cycle
between the two coils and highlight which one is active.
The timer loop consists of a target_shooter triggering
the first func_button entity which in turn triggers a target_delay to
make sure the loop keeps going. The first func_button has a high wait
key value so that the target_shooter has time to hit the
second func_button before the first button resets. |
|
|
|
|
With the timer loop alternating between both ceiling coils, this
function could also block which generator switch should be
working as well.
A func_door entity is placed between the target_shooter and the
func_button trigger of each generator switch and connected
to the timer loop. There are no special reason for using
a func_door instead of a func_button entity, both
types work equal well in this situation. The difference was created
for the understanding of function, func_door = no damage.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
With the puzzle logic broken down into smaller functions it is easier
to see how all the entities fit together. By using a modular
approach the pieces can be reused for other puzzles and this helps
with the testing of different designs.
The final layout had all the info_notnull entities removed
because of problems with Q3 limits. The angle key was used
instead which unfortunately makes the editor layout of the puzzle
harder to understand.
|
|
|
|
|
The flow of the puzzle is controlled by blocking entities which
stop the target_shooter entities. The Start Blocker prevents
the generators from being used until the battery
is active. The Finish Blocker prevents the timer and main
loops from running once the puzzle is complete.
There are three switches to interact with and only one
starts the puzzle. If the player uses any of the other switches
before the battery, a message is displayed. Once the
Start Blocker is activated the player hint is disabled. |
|
|
|
|
|
|
|
|
|