Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Narrative Worlds 5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

from Reddit /r/Minecraft 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Shared structure: plots & puzzles create resource dependencies 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

Simple Example: Blocks World a b c 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Local state change * * * -o { } 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Committed Choice a b c a b c 20 a b c

Slide 21

Slide 21 text

Committed Choice a b c 21 a b c

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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)

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

Checked Metatheory 48

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Generative Properties a way of stating and checking programmer intent 51

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

Narrative Worlds, Revisited 59

Slide 60

Slide 60 text

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.

Slide 61

Slide 61 text

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}.

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

Sokoban 66

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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''}.

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

Evaluation 73

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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.

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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.

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

extra slides 82

Slide 83

Slide 83 text

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:

Slide 84

Slide 84 text

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}. }