Building an Interactive Drama Architecture

 !""
###
$" %% # %&%'
% "" ( # # " %% %% ) % *% %&" % #" *% ( # # % # " % #
# " ) # %
% ( + % ' " "( ( "" &
# % % " " %% # " % % % "
! "#$#% ! &
'( %"#$) *!( +,+, . ) / 0 1 0 (
$&&2 *!( 1
0 ( 2 #
1 2 3) ,(4 0 / 2 ) &
, "#$#% +,+, 5 " ' %"#$) *! 60)0, 7! ( 02 . 5 5 ) 1 ( 02 1 1 3
4 ( ) 81 0 1
0 1 8 - # / 0
1 ) / 1 ( 0 9 (
9 0 0 ( 8 0 # 0 ( : 3+ ;4( 3+ 0 1 ;4( 3+ (
0 ;4
) < +%= ( ( 5 1 # 1 9#) ( 9
( 9> ( 96 ( 9
9? ) ( #
+% 1 # ( 9#)
9>
# 5 34 02 / " ( 0 ( ( 0 ( 0 ( / 1 0( # 0 / 1 1(
1 / 3-
4 ) 02 1 ) 02
1 + ( 0
( 8 # , ! ( ( ( ( 2 + ( 5 + ( 1 ( @
5 : # ( 0
1 (
8 + 0 5
3
4 3(4 , +,+,
A! & @' B! &
0 ) 8-
( 0 &
(
% 0 1( + % #( +%# "
( 0
( +%# ( % ( -
) %2 02 ( Human player
AI
Actor
io ns
user a ct
d ir ec
tio n
t p lot
ab strac
Human
AI Director
Writer
Built in
Unreal Tournament
) " )
!
1( 9 ++ A!( 0
) 7-% ) / 0 5- ( ) ( 0 5
( ) : 1( 1
" ( 0
+%# ( ( , : ( # (
( ( +%
# ! #
+%#2 % 0
+ 1 ( % + 5 ) -
5
( ( # % ( ' # / ( Æ( ( ) % 0 # ( 0 1 & 0 . ( ( 0 1 ( % ) / 0 ( ( + 02 ( &
+ 0 (
%2 ' & C 9 % , *
) % 0 5 D 34 02 5 ) % 5
5
' -
( "#$#%( +,+,( - )#+-,@+> E! 0>+F6, G!( + -
( / 2 0 1 < 0 =
02 < 0 = ( " E 6 ( - ! *! ) 5 ( ' + 1 ( # ( 8 ( 8 ) ( ( 9( 51
( ( &
' !
dAB
A
B
…..
G
State B
At (User, x)
At(Hitchhiker, y), y != x
At(Scientist, y)
Adjacent(x, y)
Have(User, q)
IsKey(q)
...
$ , + % %& % ) C
( 0 # D 5
" 7 ( % ) 1 0 / , 9 ( ' ) 0 ' 5 ( &
( C 5 F ( 5 # - 1 5
( # ) 34 " 1( 0 1
:
( ; # " 7 ) D : 3 4 + 0 1 ( < , ( % 02 ) # ( " 7 ) dA
Depth-limited
search for a
valid path of
User
behavior
….
Goal
state found
Goal: Explore
Predicted
User
behavior
between
states
Goto(1)
dA
Goto(2)
depth limit
dA
reached
dA
Plot as
state
transitions
d BC
AT (Hiker, x)
AT(User, x)
A: INITIAL
STATE
Actor
actions
during state
transition
Goto(3)
B: MEET
d CD
d DE
Has(User, a)
a e {Apple,
Orange}
C: FIND FOOD
d EF
AT(Hiker, w)
AT(User, w)
DROP(User
, a)
E: OFFER
FOOD
D: FIND HIKER
HAS(Hiker, a)
F: FRIENDS
Hiker.goal =
Wander
Hiker.goal =
Wander
Delay()
Get(Hiker, a)
Hiker.Happy++
Run(Hiker, x, y)
Hiker.Fright ++
Hiker.Fright--
*% + - ' ( 0 " (
0 (
( 1 0 ( : 0 5
) "#$#%( ' ! " #
# ( %2 0 > 5 0 34 5 1 " ( 5 0 ,2 ( : 02 ) ( /
) -
$
( ( H!
$
%#
& 0 / ( : ) 5 -
:
3+ 1 ( ( ; ;4 : -
-5 ( %",(
# ( -5
# ) &
( 1 1 5 0 ( "(
:
1 0 5
: ,
( :
# 5
+ 0 # : ) 5 ( : 1
$
" &!
> 1 ( 0 ) : ( 5
( 0 + 0 1 8
/ 0 ) :
0 . ( ( ( : : ) " 7 1 5 ) 0 & 1D ( 1 + 1 ( = 0 1
= 0 1( ) 0 + 0 ( 1 ( 0 ) 0 1 ( + 1 5 +% ( ( / 1 / @
E! 5
' +%# # ! : 0 -
-0 % <0%2= $
) : 0 1 (
1 ) ' 0 2 I J!( I ) I ( 3 + + 0;4
# 0( ' , !( : -
1
$
&
) & 0 02
+ ( 5
+ 0 ( 0 , 1
$
%&
+%# 9 )
,( #+ 7! ) %
( 5 9
)( % -
, + ( 5
( 5
1 1 / 0 ( 5 0 ( 9
) 0 ( 9
) " 7 % ( < ( 0( ( ( =
, ) 5
( #)<0(1= #)<9(1=
" 7 ) ( 9 # - / 5 2 5 2 ( , ) 5 ( 0 9( ( 5 ) ( 9 9 1( ( ( %
( +% ) 02 % 0
) @ & (
1( % F-)-6<1(= - % ( 1 , -
1 0 5 +
K@6( L)-+)( L)-6 0 5 ,
( + C %( 1 , J! ) %2 ) ( 1 9 ) % 2 )
: ( 1 ( -5 0
2 1 $ " 7 % , 02 1( 2 ) % 02 ( 2 (
( ' 2 ( $( %
( 0 + & 0
1 L 0
1( 9 ( 0 ) % 1 # 1 / "
( 2 1 5
% " ( 9
0 ( ) 1 % 02
( ( 1 &
+ ( 1
% 0 % '
@ 1 0 ) 5
) +%# & / ) (
( E!( # : ( % 02 1 # ( #
( ( & 0 ( 02 1 ) +,+, ( 02 8 D - & % " ( /
0 @ 02 ( '5 0 ( ( +%# ) ." / 0 " # % % 1234152 5
6 7 8 ) 9 7 " $ 7
66 $
1 , : ) ;" # /" $" 6
7<< ; 7 , ,* + %% $ 7 66 $
3 = > = 8 > 9 - - "&
! 5
2 8 0 ? , / 8 =
7 " 8 , ) , , 9 % $ 7
66 $
5 8 / # # "( + % @" " % 13416 7 6
#< ,& % 3
8 # " & &
" #
$ % & ' A ; 66
<& # &
>% 7 &7,&5&32 7 5
, " & $ 7 66 $
6 8 > &% % # !
% 4 55
1 0# ( - $ 7
" 0 ," ) " % 3 $ 9" $
) $) 7 5
2 > B" # "+ * " $ 7 6 $