94

Ropossum: A Game That Generates Itself

Embed Size (px)

DESCRIPTION

Ropossum is a framework that lets you play the beloved Cut The Rope game as much as you want and the levels will keep coming. You can design your own levels, check your designed levels for playability at real time, ask it to complete your unfinished designs according to your own preferences, or even suggest endless playable design variations according to your initial level design.

Citation preview

Page 1: Ropossum: A Game That Generates Itself
Page 2: Ropossum: A Game That Generates Itself
Page 3: Ropossum: A Game That Generates Itself
Page 4: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability

– Authoring tool

• Results and analysis

• Future Perspectives

Page 5: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability

– Authoring tool

• Results and analysis

• Future Perspectives

Page 6: Ropossum: A Game That Generates Itself

$93 B i l l i o n i n 2 0 1 3

G a m i n g I n d u s t r y

Page 7: Ropossum: A Game That Generates Itself

Battlefield 4

Page 8: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Designer Level design Players

Page 9: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Designer Level design Gender?

Page 10: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Designer Level design Personalities?

Page 11: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Designer Level design

NEEDS

Page 12: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Designer Level design

What if I want

to play More?

Page 13: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Designer Level design

What if I want

to play More?

Page 14: Ropossum: A Game That Generates Itself

W h at i s w r o n g w i t h g a m e s n o w ?

Generator Level design

What if I want

to play More?

Page 15: Ropossum: A Game That Generates Itself

P r o c e d u r a l

C o n t e n t

G e n e r at i o n

( P C G )

Page 16: Ropossum: A Game That Generates Itself

241,920,000 logins per month

4000 logins per second after 1.0 launch

2,000,000,000 files download by the launcher

11,000 skin downloads (in game) per second

Page 17: Ropossum: A Game That Generates Itself

No Man's Sky

Page 18: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability

– Authoring tool

• Results and analysis

• Future Perspectives

Page 19: Ropossum: A Game That Generates Itself

- Popular physics based game- Can generate endless levels- All levels should be playable- Opens the imagination of all players to design, test, modify their own levels and help them achieve that.

?

Page 20: Ropossum: A Game That Generates Itself
Page 21: Ropossum: A Game That Generates Itself

Cut the Rope

Sequels 2010, 2011, 2012 and 2013

WWDC 2011, won an Apple

Design Award for the iOS platform

100 million times

1.6 million users/daily

Page 22: Ropossum: A Game That Generates Itself

The Game, Demo

Page 23: Ropossum: A Game That Generates Itself

This Work Publications, So Far..

Page 24: Ropossum: A Game That Generates Itself

“Automatic Generation and Analysis of Physics-Based Puzzle Games”IEEE Conference on Computational Intelligence and Games, CIG 2013. Nominated for best paper award.

CIG

13

“Evolving Playable Content for Cut the Rope through a Simulation-Based Approach”AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013

AII

DE

13

“Ropossum: An Authoring Tool for Designing, optimizing and Solving Cut the Rope Levels”AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013

AII

DE

13

Page 25: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability

– Authoring tool

• Results and analysis

• Future Perspectives

Page 26: Ropossum: A Game That Generates Itself

www.mohammadshaker.com/crust.html

Page 27: Ropossum: A Game That Generates Itself

Game Components

Page 28: Ropossum: A Game That Generates Itself
Page 29: Ropossum: A Game That Generates Itself

GE Context Free Grammars<level>::=<candy><Om_Nom><components>

<candy>::=candy(<x>,<y>)<Om_Nom>::=Om_Nom(<x>,<y>)<components>::=<rope><air_cush><bumper><rocket><bubble><more_components><more_components>::=<component>|<component><more_components><component>::=<rope>|<air_cush>|<rocket>|<bumper>|<bubble>

<rope>::=rope(<x>,<y>,<rope_length>)<rocket>::=rocket(<x>,<y>,<rocket_dir>)<air_cush>::=air_cush(<x>,<y>,<air_cush_dir>)<bumper>::=bumper(<x>,<y>,<bumper_dir>)<bubble>::=bubble(<x>,<y>)

<x>::=[0, 260] <y>::=[0, 420]<rope_length>::=[0, 170]<air_cush_dir>::= 0 | 1<bumper_dir>::=[0, 7]<rocket_dir>::=[0, 7]

Page 30: Ropossum: A Game That Generates Itself

GE Context Free Grammars<level>::=<candy><Om_Nom><components>

<candy>::=candy(<x>,<y>)<Om_Nom>::=Om_Nom(<x>,<y>)<components>::=<rope><air_cush><bumper><rocket><bubble><more_components><more_components>::=<component>|<component><more_components><component>::=<rope>|<air_cush>|<rocket>|<bumper>|<bubble>

<rope>::=rope(<x>,<y>,<rope_length>)<rocket>::=rocket(<x>,<y>,<rocket_dir>)<air_cush>::=air_cush(<x>,<y>,<air_cush_dir>)<bumper>::=bumper(<x>,<y>,<bumper_dir>)<bubble>::=bubble(<x>,<y>)

<x>::=[0, 260] <y>::=[0, 420]<rope_length>::=[0, 170]<air_cush_dir>::= 0 | 1<bumper_dir>::=[0, 7]<rocket_dir>::=[0, 7]

Page 31: Ropossum: A Game That Generates Itself

should be placed higher than Om Nom when the level contains no component to elevate the candy, such as bubbles or water.C

andy

should be placed under the closest rope when there is no water,bubbles or rockets.

Om

Nom

should be placed close to the end of a rope, inside a predefined circle surrounding the end of it.Bl

ower

Should be placed in a position where it does intersect with at least one of the ropes.Bu

bble

rockets should aim at Om Nom

Rock

et

Components shouldn’t intersect, 3 block size apart

Com

ps

25%

10%

10%

10%

20%

25%

Page 32: Ropossum: A Game That Generates Itself

= 25 ∗ 𝑃𝑐𝑎𝑛𝑑𝑦 + 10 ∗ 𝑃𝑂𝑚𝑁𝑜𝑚 + 10 ∗ 𝑁𝑏𝑙𝑜𝑤𝑒𝑟 ∗ 𝑃𝑏𝑙𝑜𝑤𝑒𝑟+ 20 ∗ 𝑁𝑟𝑜𝑐𝑘𝑒𝑡 ∗ 𝑂𝑟𝑜𝑐𝑘𝑒𝑡 + 10 ∗ 𝑁𝑏𝑢𝑏𝑏𝑙𝑒 ∗ 𝑃𝑏𝑢𝑏𝑏𝑙𝑒 + 25 ∗ 𝐶_𝑜𝑣𝑒𝑟𝑙𝑎𝑝

Fitness

Page 33: Ropossum: A Game That Generates Itself

candy(481, 143) OmNom(287, 384) rope(445, 69, 90) rope(596, 100, 150) bubble(294, 76) rocket(471, 342, 5)

Page 34: Ropossum: A Game That Generates Itself

PCG Engine

Generate Level (Grammatical Evolution)

PCG with CRUST Generator Model

Page 35: Ropossum: A Game That Generates Itself

PCG Engine

Generate Level (Grammatical Evolution)

Fitness Evaluators

PCG with CRUST Generator Model

Page 36: Ropossum: A Game That Generates Itself

PCG Engine CRUST Engine

Generate Level (Grammatical Evolution)

Fitness Evaluators

Level Generator

Resting Phase

Visualize Level and Update

PCG with CRUST Generator Model

Page 37: Ropossum: A Game That Generates Itself

Generated Samples

Page 38: Ropossum: A Game That Generates Itself

“Automatic Generation and Analysis of Physics-Based Puzzle Games”IEEE Conference on Computational Intelligence and Games, CIG 2013

Page 39: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability: The Model

– Authoring tool

• Results and analysis

• Future Perspectives

Page 40: Ropossum: A Game That Generates Itself

Playability

Page 41: Ropossum: A Game That Generates Itself

PlayerActions

CRUST works on fixed time step 60 times per second

Rope cutBlower pressBubble burstRocket pressVoid

Page 42: Ropossum: A Game That Generates Itself

If the game is 5 sec long,then we have 5*60 = 300 time step

Given we have 5 actions,then we need to evaluate

Page 43: Ropossum: A Game That Generates Itself

S h r i n k t h e S E A R C H s pa c e

w i t h c o n s t r a i n e d S e a r c h

w i t h A R u l e - b a s e d A g e n t

Page 44: Ropossum: A Game That Generates Itself

candy(497, 153).

velocity(0, 0).

OmNom(317, 414).

rope(0, 445, 69, 105).

rope(1, 596, 100, 165).

bubble_void(319, 101).

rocket_void(501, 357, 5).

Page 45: Ropossum: A Game That Generates Itself

Constraint search rule sets

[1] rope_cut :- rope(_,_), Om_Nom(Xo,Yo),((candy(Xc,Yc), distance(Xo,Yo,Xc,Yc,50))| (active_bubble(_,Yb),(Yf<Yb)))

[2] air-cush_press :- air_cush(X,Y,Dir), candy(Xc, Yc), distance(X, Y, Xc, Yc, 80), candy_in_direction_of_air_cush(X,Y)

[3] bubble_burst :- active_bubble(X,Y), OmNom(Xo, Yo), (Yo > Y), distance(X, Y, 50), ((velocity_to_right, OmNom_to_right(X, Y)) |(velocity_to_left, OmNom_to_left(X, Y)))

[4] rocket_press :- active_rocket(X,Y,_), Yo < Y, OmNom(Xo, Yo), distance(Xo,Yo,X,Y,100)

[6] candy_in_direction_of_air_cush(X,Y) :-candy(Xc,Yc), air_cushion(X,Y,Dir),((Xc < X , dir_to_left(Dir))

[5] void_action

Page 46: Ropossum: A Game That Generates Itself

[1] rope_cut :- rope(_,_), reachable(_)[2] air-cush_press :- air-cush(X,Y,Dir), candy_in_direction_of_air-cush(X,Y), distance(X, Y, 80)[3] bubble_pinch :- active_bubble(_,_), reachable(_)[4] rocket_press :- active_rocket(X,Y,Dir), reachable(_)[5] void_action :- rope_cut| bubble_pinch| air-cush_press| rocket_press| reachable(_)

Constraint search rule sets

[1] rope_cut :- rope(_,_), Om_Nom(Xo,Yo),((candy(Xc,Yc), distance(Xo,Yo,Xc,Yc,50))| (active_bubble(_,Yb),(Yf<Yb)))

[2] air-cush_press :- air_cush(X,Y,Dir), candy(Xc, Yc), distance(X, Y, Xc, Yc, 80), candy_in_direction_of_air_cush(X,Y)

[3] bubble_burst :- active_bubble(X,Y), OmNom(Xo, Yo), (Yo > Y), distance(X, Y, 50), ((velocity_to_right, OmNom_to_right(X, Y)) |(velocity_to_left, OmNom_to_left(X, Y)))

[4] rocket_press :- active_rocket(X,Y,_), Yo < Y, OmNom(Xo, Yo), distance(Xo,Yo,X,Y,100)

[6] candy_in_direction_of_air_cush(X,Y) :-candy(Xc,Yc), air_cushion(X,Y,Dir),((Xc < X , dir_to_left(Dir))

[5] void_action

Page 47: Ropossum: A Game That Generates Itself

Explore each action sub

tree

CRUST Engine 2.0 Prolog Engine

Engine State as Facts

Set of ordered potential actions

Actions tree branch

New Engine State

Inference Engine

Playability Model Closed Loop

Page 48: Ropossum: A Game That Generates Itself

Demo

Page 49: Ropossum: A Game That Generates Itself

rope_cut(0)

rope_cut(1)

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

rocket_press

void_action

Page 50: Ropossum: A Game That Generates Itself

rope_cut(0)

rope_cut(1)

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

rocket_press

void_action

Page 51: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability: The Performance

– Authoring tool

• Results and analysis

• Future Perspectives

Page 52: Ropossum: A Game That Generates Itself

Performance Enhancement Techniques

• Adaptive Time Step:

– blower_Press 15

– rope_cut 10

– void_action 12

– bubble_burst 15

– rocket_press 17

Page 53: Ropossum: A Game That Generates Itself

rope_cut(0)

rope_cut(1)

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

rocket_press

void_action

9

10

11

12

13

14

15

16

17

18

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Page 54: Ropossum: A Game That Generates Itself

Performance Enhancement Techniques

• Adaptive Time Step:

– blower_Press 15

– rope_cut 10

– void_action 12

– bubble_burst 15

– rocket_press 17

• Branch Cut:

– Tree branch cut when trajectory doesn’t make sense

Page 55: Ropossum: A Game That Generates Itself

rope_cut(0)

rope_cut(1)

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

void_action

rocket_press

void_action

Page 56: Ropossum: A Game That Generates Itself

Demo. Only 215 explored nodes

Page 57: Ropossum: A Game That Generates Itself

Solution Tree Only 205 nodes

Page 58: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• Ropossum; the game and the research

• Ropossum; the framework– Content Generation

– Playability

• The playability model

• Performance enhancement

• Content generation with playability check

• Other playability models

– Authoring tool

• Results and analysis

• Future Perspectives

Page 59: Ropossum: A Game That Generates Itself

PCG Engine CRUST Engine

Generate Level (Grammatical Evolution)

fitness = 0.25 ∗ design + 0.75 ∗ playability_agent

Level Generator

Resting Phase

Visualize Level and Update

Content generation with playability check

Page 60: Ropossum: A Game That Generates Itself

“Evolving Playable Content for Cut the Rope through a Simulation-Based Approach”AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013

Page 61: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability: Other Models?

– Authoring tool

• Results and analysis

• Future Perspectives

Page 62: Ropossum: A Game That Generates Itself

Output

InputPrevious State

State\ Hidden

Weights V

Weights U

Weights W

SRN

Output

InputPrevious State

State/ Hidden

Weights V

Weights U

Copy(Delayed)

Weights W

Elman

Output

Input

Previous State

State/ Hidden

Weights V

Weights UWeights W

Copy(Delayed)

Jordan

Recurrent

Neural

Networks

Page 63: Ropossum: A Game That Generates Itself

Output

Input Previous State

Hidden

Weights V Weights U

State

Weights W

Standard Recurrent Network (SRN)

Page 64: Ropossum: A Game That Generates Itself

Output

Input Previous State

State/ Hidden

Weights V Weights U

Weights W

Elman RNN

Page 65: Ropossum: A Game That Generates Itself

Output

Input Previous State

State/ Hidden

Weights V Weights U

Copy(Delayed)

Weights W

Elman RNN

Page 66: Ropossum: A Game That Generates Itself

Output

Input Previous State

State/ Hidden

Weights V Weights U

Copy(Delayed)

Weights W

Jordan RNN

Page 67: Ropossum: A Game That Generates Itself

Output

Input

Previous StateState/ Hidden

Weights V

Weights U

Copy(Delayed)Weights W

Jordan RNN

Page 68: Ropossum: A Game That Generates Itself

Experimental setup

<rope> <rope> <air_cushion> <bumper> <bubble> <rocket> <candy> <Om_Nom>

GridXY Candy distance Om Nom distance

Input Representation

Page 69: Ropossum: A Game That Generates Itself

0

400

200

300

100

RopeCuts(1)

RopeCuts(2)

RocketPresses

Air-CushionPresses

BubbleBursts

VoidActions

Presented actions in the 100 playable levels test set altogether

Problem, Un-balanced Data

Page 70: Ropossum: A Game That Generates Itself

BalancingCOIData Representation

Training levels #

Network Type

SetupHidden

Neurons #Test Id

Balanced NAll100Elman10 networks50 training levels

0.0001 error10 runs

37Test 1

BalancedYAll100Elman

N YXY10, 50, 100Elman6 networks50 training levels

0.0001 error6 runs

37Test 2

4YXY10, 50, 100Elman

NYXY150Jordan

8 networks50 training levels

0.01 error8 runs

5, 10, 15, 20, 25, 30, 35, 40

Test 3 4YXY50Jordan

4YXY50Elman

NYXY10, 50, 100Jordan8 networks50 training levels

0.02 error8 runs

5, 10, 15, 20, 25, 30, 35, 40

Test 4

2YXY10, 50, 100Jordan

NNCookie distance

10, 50, 100Elman8 networks50 training levels

0.02 error5 runs

5Test 5

NNXY10, 50, 100Elman

Page 71: Ropossum: A Game That Generates Itself
Page 72: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability: Other Models?

– Authoring tool

• Results and analysis

• Future Perspectives

Page 73: Ropossum: A Game That Generates Itself

Ropossum: Realtime Authoring Tool

Page 74: Ropossum: A Game That Generates Itself

Ropossum: Realtime Authoring Tool

Page 75: Ropossum: A Game That Generates Itself

Ropossum: Realtime Authoring Tool

Page 76: Ropossum: A Game That Generates Itself

GE Context Free Grammars

<level>::=<candy><Om_Nom><components>

<candy>::=candy(<x>,<y>)<Om_Nom>::=Om_Nom(<x>,<y>)<components>::=<rope><air_cush><bumper><rocket><bubble><more_components><more_components>::=<component>|<component><more_components><component>::=<rope>|<air_cush>|<rocket>|<bumper>|<bubble>

<rope>::=rope(<x>,<y>,<rope_length>)<rocket>::=rocket(<x>,<y>,<rocket_dir>)<air_cush>::=air_cush(<x>,<y>,<air_cush_dir>)<bumper>::=bumper(<x>,<y>,<bumper_dir>)<bubble>::=bubble(<x>,<y>)

<x>::=[0, 260] <y>::=[0, 420]<rope_length>::=[0, 170]<air_cush_dir>::= 0 | 1<bumper_dir>::=[0, 7]<rocket_dir>::=[0, 7]

Page 77: Ropossum: A Game That Generates Itself

Ropossum Demo

Page 78: Ropossum: A Game That Generates Itself

“Ropossum: An Authoring Tool for Designing, optimizing and Solving Cut the Rope Levels”AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013

Page 79: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• The game and the research

• Ropossum: the framework

– Content generation

– Playability: Other Models?

– Authoring tool

• Results and analysis

• Future Perspectives

Page 80: Ropossum: A Game That Generates Itself

Selected Interesting Results

• 35% of the playable levels haven’t been branch cut [direct

solution]

• 72.3% is the percentage of void action in the generated

levels [relatively short levels?]

• 29.8 ∓ 58.3 sec for checking a playable level.

• 210% ∓ 167.6 for checking a non-playable level

– 115 and 638 nodes is the average number of explored nodes for

generated playable and non-playable levels [more explored nodes]

• 10 min is the average time for generating a playable level

Page 81: Ropossum: A Game That Generates Itself

Average and standard deviation values of the four componentsextracted from 500 generated levels

Frequency Analysis

Page 82: Ropossum: A Game That Generates Itself

Axiality of 0.1X, 0.9Y

Axiality of 1X, 0.4Y

Axiality Measure

Page 83: Ropossum: A Game That Generates Itself

Axiality histogram over 500 generated levels

Axiality Measure

Page 84: Ropossum: A Game That Generates Itself

Density of 0.036

Density of 1

Density Measure𝜎 = 𝑖=1

𝑛 (𝑥𝑖− 𝑥)

𝑛

Page 85: Ropossum: A Game That Generates Itself

The histogram of the density measure for the 500 generated levels

Density

Num

ber

of

level

sDensity Measure

Page 86: Ropossum: A Game That Generates Itself

Density-Axiality histogram over 500 generated levels

Axiality-Density Histogram

Page 87: Ropossum: A Game That Generates Itself

Used vs. Presented components by the playability agent over 100 generated playable levels

0

2

1

1.5

0.5

Ropes Rockets Air-Cushions

Bubbles Bumpers

# activated components

Page 88: Ropossum: A Game That Generates Itself

Presentation Timeline

• The problem, the solution and what others are doing

• Ropossum; the game and the research

• Ropossum; the framework

– Content generation

– Playability

– Authoring tool

• Results and analysis

• Future Perspectives

Page 89: Ropossum: A Game That Generates Itself

Marry someone and break your addiction

Employed

o r N O T

Employed people are 2X more likely to feel anxiety and 2.25X likely to experience anger

Singlevs. Married

You are X2 likely to be addicted on angry birds if you are single than if you are married

Page 90: Ropossum: A Game That Generates Itself

6%

Very anxious

17%

Somewhat anxious

22%

Neither

32%

Somewhat relaxed

23%

Veryrelaxed

Player Emotion

Page 91: Ropossum: A Game That Generates Itself

Simple

Easy

Just right

Tough

3%

6%

60%

31%

Difficulty

Page 92: Ropossum: A Game That Generates Itself

Live Demo

www.mohammadshaker.com/ropossum.html

Page 93: Ropossum: A Game That Generates Itself

Fas t e n yo u r s e at b e lt

A n e w G A M E e r a i s

e m e r g i n g . . .

Page 94: Ropossum: A Game That Generates Itself

T h a n k yo u