The DSA (Designer Specified Actuator) provides a mechanism that allows
the designer to create custom effects. He can write a program to
respond to player actions, make decisions based on the state of the
game, and manipulate the dungeon and the heroes that populate it.
The DSA is based on a 'State Machine'. To a large extent you are
a 'State Machine'. What you do and how you respond to events in
the world depends on your 'State'. For example, when you get up
on a sunny morning your state might be 'Happy'. When you discover
that the orange juice has gone sour you may enter the 'Unhappy'
state. And when your lawyer calls to say that you owe the
government seven-thousand dollars you might enter the 'Depressed'
state. Here is how you might respond to events in the world:
|
Friend Says "Hi"
|
orange juice sour
|
Lawyer calls
|
Win Lottery
|
Happy |
Say "Hi" Stay Happy.
|
Say "Darn".
Become Unhappy.
|
Say "What can we do?"
Become Unhappy.
|
Remain Happy.
|
Unhappy
|
Say "yeh". Stay Unhappy.
|
Say "Damn".
Stay Unhappy.
|
Slam down the receiver.
Become Depressed.
|
Become Happy.
|
Depressed
|
Say nothing. Stay
Depressed.
|
Throw juice out the
window. Stay Depressed
|
Shoot self. Become Dead.
|
Become Happy.
|
Dead
|
Do nothing. Stay Dead.
|
Do nothing. Stay Dead. |
Do nothing. Stay Dead. |
Do nothing. Stay Dead. |
In the DSA the states are numbered (0, 1, 2, ...) instead of named
(Happy, Unhappy, ...) and the events are messages received from other
actuators such a Pressure-Pads or other DSAs. But the idea is the
same. Events occur in the dungeon and the DSA, in general, does
something and changes its state.
A simple DSA has up to 16 states (expandable by experts) and can
receive up to 12 different kinds of messages (expandable by
experts). The messages represent events that take place in the
dungeon such as a switch being pressed. There are 3 message
types (Set, Clear, Toggle) combined with the four directions
(North, East, South, and West) and therefore 12 different
combinations. Our example used four messages ("Hi", "sour",
"calls", and "Lottery"). The 12 DSA messages are named "S0",
"C0", "T0", "S1", "C1", "T1", "S2", "C2", "T2", "S3", "C3", "T3",
where S=Set, C=Clear, T=Toggle, 0=North, 1=East, 2=South, 3=West.
Each of the boxes in the example above contains English text that says
two things:
- What to do when a message is received
- What state to enter next
The bulk of this documentation will describe the language we use to
accomplish these two things. But let us do a very simple example
right now. Say that we want to open a pit when a Pressure-Pad has
been activated five times. We arrange for the Pressure-Pad to
send a "S0" (Set-North) message to our DSA and we insert the following
DSA into the dungeon:
|
S0
|
0
|
1N
|
1
|
2N
|
2
|
3N
|
3
|
4N
|
4
|
5M
|
5
|
5N
|
This example could be accomplished with a normal "Counter" actuator but
we are studying DSAs so we will do it this way. In the boxs you
see a digit and a letter. The letter tells what to do and the
digit tells what state to go to next. The 'N' means "do
nothing". The 'M' means "send a set message to the Pit".
Here is how it works: The first time the pad is actuated we are
in state 0 and do nothing and enter state 1. The second gime the
pad is actuated we are in state 1 and we do nothing and go to state
2. Etc. The fifth time the pad is actuated we are in state
4 and we send a message to open the Pit and go to state 5. Each
time the pad is actuated after that we do nothing and stay in state 5.
All quite simple. We only receive one message type and the state
sequence is easy to understand. More complicated DSAs will
probably require us to draw a couple of diagrams in order to be sure we
understand its workings. But how does that 'M' know what Pit is
to be opened? How would we close a Pit? We'll talk about
these things in the details.