Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Thesis Proposal: Logical Interactive Programming for Narrative Worlds

Chris
December 06, 2013

Thesis Proposal: Logical Interactive Programming for Narrative Worlds

CMU Computer Science Department thesis proposal of Chris Martens.

Chris

December 06, 2013
Tweet

More Decks by Chris

Other Decks in Research

Transcript

  1. Thesis Proposal:
    Logical Interactive Programming
    for
    Narrative Worlds
    Chris Martens
    December 6, 2013
    1

    View full-size slide

  2. My interest:
    supporting the design & analysis
    of game mechanics at a linguistic
    level.
    2

    View full-size slide

  3. Talk Outline
    Section Purpose
    Narrative Worlds define my target domain
    Example: Blocks
    World
    describe how CLF
    specification works
    Supporting
    Interactivity and
    Analysis
    describe my language
    extensions (phases,
    generative properties)
    Narrative Worlds,
    revisited
    give more examples to
    show breadth of scope
    Proposed Work &
    Evaluation Strategy
    establish a plan to justify
    my thesis statement
    thesis
    statement
    3

    View full-size slide

  4. Talk Outline
    Section Purpose
    Narrative Worlds define my target domain
    Example: Blocks
    World
    describe how CLF
    specification works
    Supporting
    Interactivity and
    Analysis
    describe my language
    extensions (phases,
    generative properties)
    Narrative Worlds,
    revisited
    give more examples to
    show breadth of scope
    Proposed Work &
    Evaluation Strategy
    establish a plan to justify
    my thesis statement
    4

    View full-size slide

  5. Narrative Worlds
    5

    View full-size slide

  6. emphasis on narrative
    “vs.”
    emphasis on (open) worlds
    “ludonarrative” = ludo (game/play) + narrative (story)
    7

    View full-size slide

  7. http://garethrees.org/2004/12/01/ocarina-of-time/
    8
    Puzzle Structure of
    Legend of Zelda: Ocarina of Time

    View full-size slide

  8. from Reddit
    /r/Minecraft
    9

    View full-size slide

  9. Narrative Structures
    (Madame Bovary)
    (Martens, Bosser, Ferreira, Cavazza ’13)
    Emma spends her young years in a Covent
    Emma reads romantic novels
    Emma maries Charles
    Emma is invited to an aristocrats ball
    Leon falls in love with Emma
    Rodolphe decides to seduce Emma
    Emma and Leon meet again
    The Bovary go to the ball
    OR
    Bored, Emma contracts debts
    Emma realises Leon's love
    OR
    OR
    Emma pushes Leon away
    Bored, Emma contracts important debts Emma accept Rodolphe advances
    Emma and Rodolphe relationship falters
    Rodolphe breaks up
    Homais and Emma persuade Charles to operate Hypolyte
    Hypolyte is amputated
    Emma purchases a prosthetic leg
    Emma purchases a gift for Rodolphe
    Emma accepts Leon's advances
    Emma reimburses some of the debt
    Emma swallows the arsenic and dies
    Emma offers a gift to Rodolphe
    Emma gets sick
    Mr Homais informs Emma about Mr Bovary's death
    Emma's love for Leon falters
    The tribunal pronounces the Bovary's ruin
    10

    View full-size slide

  10. Emma maries Charles
    Leon falls in love with Emma
    Rodolphe decides to seduce Emma
    The Bovary go to the ball
    OR
    Bored, Emma contracts debts
    Emma realises Leon's love
    OR
    Emma pushes Leon away
    Bored, Emma contracts important debts Emma accept Rodolphe advances
    Emma and Rodolphe relationship falters
    Rodolphe breaks up
    Homais and Emma persuade Charles to operate Hypolyte
    Hypolyte is amputated
    Emma purchases a prosthetic leg
    Emma purchases a gift for Rodolphe
    Emma offers a gift to Rodolphe
    Emma gets sick
    Emma Purchases Gift :
    Emma and Lheureux are present,
    Rodolphe & Emma are Together

    debt, gift
    11

    View full-size slide

  11. Shared structure:
    plots & puzzles create
    resource dependencies
    12

    View full-size slide

  12. Talk Outline
    Section Purpose
    Narrative Worlds define my target domain
    Example: Blocks
    World
    describe how CLF
    specification works
    Supporting
    Interactivity and
    Analysis
    describe my language
    extensions (phases,
    generative properties)
    Narrative Worlds,
    revisited
    give more examples to
    show breadth of scope
    Proposed Work &
    Evaluation Strategy
    establish a plan to justify
    my thesis statement
    13

    View full-size slide

  13. Simple Example:
    Blocks World
    a
    b c
    14

    View full-size slide

  14. Representation of
    Individual States
    { arm_free,
    on_table b,
    on_table c,
    clear c,
    on a b,
    clear a }
    a
    b c
    15

    View full-size slide

  15. Representation of
    Action Rules
    pickup_from_table :
    on_table X * clear X * arm_free
    -o {arm_holding X}.
    a
    b c
    a
    b
    c
    16

    View full-size slide

  16. Blocks world cont’d
    pickup_from_block :
    on X Y * clear X * arm_free
    -o {clear Y * arm_holding X}.
    put_on_table :
    arm_holding X -o
    {on_table X * clear X * arm_free}.
    put_on_block :
    arm_holding X * clear Y
    -o {on X Y * clear X * arm_free}.
    17

    View full-size slide

  17. Local state change
    *
    *
    * -o { }
    18

    View full-size slide

  18. Celf Specification
    Framework
    based on CLF (Watkins, Cervesato, Pfenning, Walker ’02)
    implements linear logic as a logic programming language
    (execution as proof search)
    still many open questions about operational semantics
    19

    View full-size slide

  19. Committed Choice
    a
    b c
    a
    b
    c
    20
    a
    b c

    View full-size slide

  20. Committed Choice
    a
    b
    c
    21
    a
    b c

    View full-size slide

  21. Celf
    #query 10 (init -o {end_condition})
    22

    View full-size slide

  22. Celf
    #query 10 (init -o {end_condition})
    23
    a
    b c

    View full-size slide

  23. Celf
    #query 10 (init -o {end_condition})
    24
    a
    b c
    a
    b
    c
    ?

    View full-size slide

  24. Celf
    #query 10 (init -o {end_condition})
    25
    a
    b c
    state at
    quiescence

    View full-size slide

  25. Celf
    26
    a
    b
    c
    on a b * on b c * on_table c * arm_free
    -o {end_condition}

    View full-size slide

  26. Celf
    #query 10 (init -o {end_condition})
    ...
    let {X13} = pickup_from_table [X10, [X11, X12]] in
    let {[X14, [X15, X16]]} = put_on_table X13 in
    let {X17} = pickup_from_table [X3, [X6, X16]] in
    let {[X18, [X19, X20]]} = put_on_block [X17, X8] in
    ...
    27

    View full-size slide

  27. Celf
    let {X13} = pickup_from_table [X10, [X11, X12]] in
    28
    a
    b c

    View full-size slide

  28. Celf
    let {X13} = pickup_from_table [X10, [X11, X12]] in
    29
    a
    b c
    a
    b
    c

    View full-size slide

  29. Celf
    30
    Proofs-as-traces:
    structural artifacts that we can analyze, e.g. for
    causal dependency.
    ...
    let {X13} = pickup_from_table [X10, [X11, X12]] in
    let {[X14, [X15, X16]]} = put_on_table X13 in
    let {X17} = pickup_from_table [X3, [X6, X16]] in
    let {[X18, [X19, X20]]} = put_on_block [X17, X8] in
    ...
    Emma spends her young years in a Covent
    Emma reads romantic novels
    Emma maries Charles
    Emma is invited to an aristocrats ball
    Leon falls in love with Emma
    Rodolphe decides to seduce Emma
    Emma and Leon meet again
    The Bovary go to the ball
    OR
    Bored, Emma contracts debts
    Emma realises Leon's love
    OR
    OR
    Emma pushes Leon away
    Bored, Emma contracts important debts Emma accept Rodolphe advances
    Emma and Rodolphe relationship falters
    Rodolphe breaks up
    Homais and Emma persuade Charles to operate Hypolyte
    Hypolyte is amputated
    Emma purchases a prosthetic leg
    Emma purchases a gift for Rodolphe
    Emma accepts Leon's advances
    Emma reimburses some of the debt
    Emma swallows the arsenic and dies
    Emma offers a gift to Rodolphe
    Emma gets sick
    Mr Homais informs Emma about Mr Bovary's death
    Emma's love for Leon falters
    The tribunal pronounces the Bovary's ruin

    View full-size slide

  30. Celf
    31
    Proofs-as-traces:
    structural artifacts that we can analyze, e.g. for
    causal dependency.
    c.f: PlotEx
    http://eblong.com/zarf/plotex/
    GraphPlan
    http://www.cs.cmu.edu/~avrim/graphplan.html

    View full-size slide

  31. Proto-Thesis Statement
    [Linear logic programming]+ can form the
    basis of a framework for [specifying]+
    [simulation]+ mechanics.
    32

    View full-size slide

  32. Proto-Thesis Statement
    [Linear logic programming]+ can form the
    basis of a framework for [specifying]+
    [simulation]+ mechanics.
    33

    View full-size slide

  33. Proto-Thesis Statement
    [Linear logic programming]+ can form the
    basis of a framework for [specifying]+
    [simulation]+ mechanics.
    34

    View full-size slide

  34. Talk Outline
    Section Purpose
    Narrative Worlds define my target domain
    Example: Blocks
    World
    describe how CLF
    specification works
    Supporting
    Interactivity and
    Analysis
    describe my language
    extensions (phases,
    generative properties)
    Narrative Worlds,
    revisited
    give more examples to
    show breadth of scope
    Proposed Work &
    Evaluation Strategy
    establish a plan to justify
    my thesis statement
    35

    View full-size slide

  35. Adding interactivity to
    blocks world
    action : type.
    pickup : block → action.
    putdown_on : block → action.
    putdown_table : action.
    stop : action.
    36

    View full-size slide

  36. Interactivity cont’d
    pickup_from_block :
    current (pickup X)
    * on X Y * clear X * arm_free
    -o {clear Y * arm_holding X}.
    37

    View full-size slide

  37. current (pickup X) * … -o {… * player_turn}
    current (putdown_table X) * … -o {… * player_turn}

    player_turn -o {ForAny a:action. current a}
    38
    Where does “current” come from?
    The engine & player should “take turns.”
    Interactivity cont’d

    View full-size slide

  38. Phases
    Block-delimited subsignatures
    phase world = {
    rule1 : current Action * … -o {…}.
    rule2 : current Action * … -o {…}.
    }
    phase player = {
    rule : player_turn -o {…}
    }
    39

    View full-size slide

  39. Phases
    phase world = {...}
    phase player = {...}
    quiesced world -o
    {player_turn * phase player}.
    quiesced player -o {phase world}.
    Connected by specification of quiescence behavior
    40

    View full-size slide

  40. Phases
    phase world = {...}
    phase player = {...}
    quiesced world -o
    {player_turn * phase player}.
    quiesced player -o {phase world}.
    Connected by specification of quiescence behavior
    41
    Related: “sensing” and “action”
    atoms in Meld (Claytronics)

    View full-size slide

  41. Phases
    …are block-delimited subsignatures connected by
    specifications of quiescence behavior.
    42
    quiesced P * State -o {phase P’ * State’}.
    arbitrarily many phases
    looping + branching

    View full-size slide

  42. Compiling Phases
    43
    We can interpret phase-structured programs as programs
    with higher-order, mixed-chaining rules in Celf.

    View full-size slide

  43. Compiling Phases
    44
    We can interpret phase-structured programs as programs
    with higher-order, mixed-chaining rules in Celf.

    View full-size slide

  44. Compiling Phases
    45
    We can interpret phase-structured programs as programs
    with higher-order, mixed-chaining rules in Celf.
    (see proposal document for details)

    View full-size slide

  45. Compiling Phases
    We can interpret phase-structured programs as programs
    with higher-order, mixed-chaining rules in Celf.
    Ongoing work: Check that the source-level semantics
    corresponds to compiled semantics.
    46

    View full-size slide

  46. Thesis Statement
    Phase-structured linear logic programming
    can form the basis of a framework for
    specifying, testing, and inventing
    ludonarrative mechanics.
    47

    View full-size slide

  47. Checked Metatheory
    48

    View full-size slide

  48. http://garethrees.org/2004/12/01/ocarina-of-time/
    49

    View full-size slide

  49. http://www.cs.cf.ac.uk/Dave/AI2/node116.html
    If the arm is holding a block, it is
    not empty.
    If block A is on the table it is not
    on any other block.
    If block A is on block B, block B is
    not clear.
    Blocks World
    50

    View full-size slide

  50. Generative Properties
    a way of stating and checking programmer intent
    51

    View full-size slide

  51. Generative Properties
    based on Generative Invariants (Simmons ’12)
    52

    View full-size slide

  52. Generative Invariants
    To prove an invariant of a signature Σ:
    Describe a signature Σgen with a distinguished
    start state (usually an atom “gen”)
    and prove that
    - initial states of Σ are in (could be generated
    by) Σgen
    - every rule in Σ preserves membership in Σgen
    53

    View full-size slide

  53. gen -o {genArm * !genBlocks}.
    genArm -o {arm_free}.
    genArm -o {arm_holding X}.
    genBlocks -o {on_table X * genTop X}.
    genBlocks * genTop Y
    -o {on X Y * genTop X}.
    genTop X -o {clear X}.
    54
    Generative Invariants

    View full-size slide

  54. Quiescence & Activity
    Quiescence: no rules can fire
    Activity: at least one rule can fire
    55

    View full-size slide

  55. Activity Generator for
    Blocks World
    act -o {arm_holding X * !actBlocks}.
    act -o {arm_free * clear Y * !actBlocks}.
    actBlocks -o {on_table X}.
    actBlocks -o {on X Y}.
    actBlocks -o {clear X}.
    56

    View full-size slide

  56. Ongoing Work:
    Work out how to mechanically check these
    properties.
    Show applicability to invariant properties of game
    worlds.
    57

    View full-size slide

  57. Talk Outline
    Section Purpose
    Narrative Worlds define my target domain
    Example: Blocks
    World
    describe how CLF
    specification works
    Supporting
    Interactivity and
    Analysis
    describe my language
    extensions (phases,
    generative properties)
    Narrative Worlds,
    revisited
    give more examples to
    show breadth of scope
    Proposed Work &
    Evaluation Strategy
    establish a plan to justify
    my thesis statement
    58

    View full-size slide

  58. Narrative Worlds,
    Revisited
    59

    View full-size slide

  59. Generalized Narrative Structures
    60
    As a player, you get to select a character, guide their
    choices, watch other characters react to what you've
    chosen, and accomplish (or fail at) your chosen goals.

    View full-size slide

  60. Generalized Narrative Structures
    61
    do/murder :
    anger C C' * anger C C' * anger C C' * anger C C'
    * at C L * at C' L * has C weapon -o
    {at C L * has C weapon * !dead C' * !murdered C C'}.
    do/thinkVengefully :
    loves C C’ * !murdered K C’
    -o {loves C C’ * anger C K * anger C K}.

    View full-size slide

  61. do/murder : do C (murder C’) *
    anger C C' * anger C C' * anger C C' * anger C C'
    * at C L * at C' L * has C weapon -o
    {at C L * has C weapon * !dead C' * !murdered C C'}.
    do/thinkVengefully : do C (thinkVenge K) *
    loves C C’ * !murdered K C’
    -o {loves C C’ * anger C K * anger C K}.
    62
    Generalized Narrative Structures

    View full-size slide

  62. Ongoing work: figure out how to specify failure
    conditions when preconditions for an action are not
    met.
    63
    Generalized Narrative Structures

    View full-size slide

  63. 64
    Generalized Narrative Structures
    Inform 7 action
    processing:
    Implementable as
    phases!

    View full-size slide

  64. Puzzle games
    65
    http://www.puzzlescript.net
    Scope: PuzzleScript

    View full-size slide

  65. [ > Player | Crate ] -> [ > Player | > Crate ]
    67
    In PuzzleScript:

    View full-size slide

  66. move :
    loc pusher L * in_dir L Dir L' * empty L'
    -o {empty L * loc pusher L'}.
    Sokoban Rules
    @ @
    @ @
    68
    push :
    loc pusher L * in_dir L Dir L' * loc block L'
    * in_dir L' Dir L'' * empty L''
    -o {empty L * loc pusher L' * loc block L''}.

    View full-size slide

  67. push :
    action (arrow Dir) *
    loc pusher L * in_dir L Dir L' * loc block L'
    * in_dir L' Dir L'' * empty L''
    -o {empty L * loc pusher L' * loc block L''}.
    move :
    action (arrow Dir) *
    loc pusher L * in_dir L Dir L' * empty L'
    -o {empty L * loc pusher L'}.
    69

    View full-size slide

  68. Many more examples
    (some in progress):
    https://github.com/chrisamaphone/interactive-lp/tree/
    master/examples
    70

    View full-size slide

  69. Talk Outline
    Section Purpose
    Narrative Worlds define my target domain
    Example: Blocks
    World
    step through all the
    pieces of my proposal
    Narrative Worlds,
    revisited
    show the intended
    scope of those ideas
    Proposed Work &
    Evaluation Strategy
    establish a plan to justify
    my thesis statement
    71

    View full-size slide

  70. Proposed Work
    Shortcoming of Existing
    Framework
    Proposed Solution
    Sometimes we want to impose partial
    orderings among rules.
    Language proposal with phases.
    Programming with state is hard to
    reason about!
    Machine-checked invariants and
    other characterizations of states;
    analysis tools such as causality and
    dependency graphs.
    Non-interactive, low-feedback
    programming workflow.
    Visual state editor and trace
    rendering.
    Lack of access to common game
    programming libraries for e.g. graphical
    rendering, text parsing, etc.
    Implement compatibility
    between the language and
    existing game frameworks (e.g.
    Twine)
    72

    View full-size slide

  71. Evaluation
    73

    View full-size slide

  72. How will I determine
    success?
    Phase-structured linear logic programming
    can form the basis of a framework for
    specifying, testing, and inventing
    ludonarrative mechanics.
    74

    View full-size slide

  73. Develop several examples
    in the framework.
    75
    Phase-structured linear logic programming
    can form the basis of a framework for
    specifying, testing, and inventing
    ludonarrative mechanics.

    View full-size slide

  74. Phase-structured linear logic programming
    can form the basis of a framework for
    specifying, testing, and inventing
    ludonarrative mechanics.
    Prove correspondence
    and build prototype.
    76

    View full-size slide

  75. Design UI & tooling,
    including visual rendering.
    77
    Phase-structured linear logic programming
    can form the basis of a framework for
    specifying, testing, and inventing
    ludonarrative mechanics.

    View full-size slide

  76. Phase-structured linear logic programming
    can form the basis of a framework for
    specifying, testing, and inventing
    ludonarrative mechanics.
    Generative properties and
    graphical analysis tools
    78

    View full-size slide

  77. To game design:
    - simple, uniform logical formalism
    - executable specs (“sketching” systems)
    - reasoning and intent-checking tools as

    an integrated part of design process
    79
    Key Contributions

    View full-size slide

  78. To logical frameworks:
    - exploration of a new domain as evidence

    for its generality
    - new or alternative answers to open

    questions about semantics
    - establishment of metatheoretic tools
    80
    Key Contributions

    View full-size slide

  79. Timeline
    • Spring 2014: Finish working out theoretical concerns
    (language semantics, proofs, and sketch of generative
    property checking)
    • Summer-Fall 2014: Implementation of prototype and
    development of examples
    • Spring 2015: Write dissertation
    • Summer 2015: Defend dissertation
    Thank You!
    81

    View full-size slide

  80. extra slides
    82

    View full-size slide

  81. 83
    qui read -o {phase parse}.
    qui parse * outcome none
    -o {message defaultParseError * phase report}.
    qui parse * outcome failure -o {phase report}.
    qui parse * outcome success -o {phase check1}.
    qui check1 -o {phase check2}.
    qui check2 * outcome success
    -o {phase carryout}.
    qui check2 * outcome failure -o {phase report}.
    qui check2 * outcome none
    -o {message default * phase report}.
    qui carryout -o {phase report}.
    Phase links for Inform7 action processing graph:

    View full-size slide

  82. 84
    Phases Inform7 action processing:
    phase check1 = {
    - : init * outcome X -o {outcome none}.
    - : $action (take Obj) * inventory Obj
    -o {outcome failure
    * message "You already have it."}.
    - : $action look -o {outcome success}.
    }
    phase check2 = {
    - : $action (take Obj) * outcome none
    * visible Obj -o {outcome success}.
    }
    phase carryout = {
    - : action (take Obj) * in Obj C
    -o {inventory Obj * message "taken"}.
    - : action look * $in player R * $description R D
    -o {message D}.
    }

    View full-size slide