Narrative Control
|
The narrative
control program of the KidsRoom queries the
sensor programs for information about what is
happening in the room at a given time and then
changes how the room responds so that
participants are guided through the narrative. |
|
Event loop
Vision processes, such as
the object tracker, are continuously running
and generating data. There are many
situations that require an immediate response
from the control program. For example, when
someone enters the room the system must start
tracking the person and the control program
must immediately learn of the persons
presence. Similarly, if everyone leaves the
room, the story must be frozen at its current
point instead of continuing on as if there
were still participants. Consequently, the
control program can never stop and wait for
some event at the expense of checking other
perceptual input. The main control program is
an event loop that continuously monitors the
state of the room, checking all inputs as
fast as possible all the time.
Timers
The control program keeps
track of events using timers. Each event has
a timer associated with it. When the event is
activated, the timer is reset. The event
timer can then be queried each pass through
the event loop to see if the event has timed
out. The most general event timer is simply
used to time story events. For example, a
timer is initiated for each short segment of
the story. If the timer runs out, the
narrative control program may then take some
action like playing a narration or moving on
to another part of the story. Timers are also
used to control sound effects and narrations
so that sounds dont play on top of one
another. For instance, one background sound
effect is a looping jungle noise. Each time a
sound is played, a timer is set to the time
it will take the sound to play. Each loop
through the control program where there is a
command to play the jungle sound, the timer
is queried. If time is up, the sound is
played again and the timer is reset. If the
time is not expired, the sound is still
playing and the control loop does not send
the play command again. Since the control
program is looping quickly, as soon as the
sound stops playing it will play again,
creating a continuous loop of forest ambient
sound. Narrations are handled in a similar
way, to prevent narrations from playing on
top of one another or from playing too
quickly. Aside from setting the correct time
values for each sound, the timer control is
relatively transparent to the programmer.
Sensitivity to timing
Although the timer controls
are fairly straightforward to program, it was
time-consuming to tune the narrative control
system so that the room responded naturally
throughout each stage of the story. For
example, in a given segment of the story, it
is possible to program timers so that the
interaction feels "right" when one
person is in the room following the
rooms instructions. However, when three
people are in the room and they are not
cooperating, additional narrations may be
required since room participants may perform
actions differently in longer or shorter
amounts of time. Consequently, the timing can
be thrown off and the room can start to feel
unresponsive. Further, the more people that
are in the room, the more situations the
control program must handle. Handling such
problems while maintaining a feel of quick
responsiveness without sounding generating
repetitive narration required a large amount
of effort and experimentation. One area of
future research might be to design algorithms
that help to automate this process and
identify tricky timing situations.
Manual intervention
Although the KidsRoom is
fully automatic, every once and a while the
computer could become confused about the
state of the room. For example, if people
enter the room too quickly it is possible for
the object tracker to ignore one person and
think there are fewer people in the room than
there actually are. To handle these cases,
the control program was designed so that it
could be reset at any time or so that the
story could be manually advanced to the next
short segment at any time. Adding such
flexibility creates additional timing
complexities.
|