Ropossum: A Game That Generates Itself

  • View
    1.910

  • Download
    0

  • Category

    Software

Preview:

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

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

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

$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

Battlefield 4

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

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?

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?

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

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?

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?

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?

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 )

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

No Man's Sky

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

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

?

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

The Game, Demo

This Work Publications, So Far..

“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

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

www.mohammadshaker.com/crust.html

Game Components

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]

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]

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%

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

Fitness

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

PCG Engine

Generate Level (Grammatical Evolution)

PCG with CRUST Generator Model

PCG Engine

Generate Level (Grammatical Evolution)

Fitness Evaluators

PCG with CRUST Generator Model

PCG Engine CRUST Engine

Generate Level (Grammatical Evolution)

Fitness Evaluators

Level Generator

Resting Phase

Visualize Level and Update

PCG with CRUST Generator Model

Generated Samples

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

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

Playability

PlayerActions

CRUST works on fixed time step 60 times per second

Rope cutBlower pressBubble burstRocket pressVoid

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

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

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

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

[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

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

Demo

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

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

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

Performance Enhancement Techniques

• Adaptive Time Step:

– blower_Press 15

– rope_cut 10

– void_action 12

– bubble_burst 15

– rocket_press 17

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

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

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

Demo. Only 215 explored nodes

Solution Tree Only 205 nodes

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

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

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

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

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

Output

Input Previous State

Hidden

Weights V Weights U

State

Weights W

Standard Recurrent Network (SRN)

Output

Input Previous State

State/ Hidden

Weights V Weights U

Weights W

Elman RNN

Output

Input Previous State

State/ Hidden

Weights V Weights U

Copy(Delayed)

Weights W

Elman RNN

Output

Input Previous State

State/ Hidden

Weights V Weights U

Copy(Delayed)

Weights W

Jordan RNN

Output

Input

Previous StateState/ Hidden

Weights V

Weights U

Copy(Delayed)Weights W

Jordan RNN

Experimental setup

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

GridXY Candy distance Om Nom distance

Input Representation

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

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

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

Ropossum: Realtime Authoring Tool

Ropossum: Realtime Authoring Tool

Ropossum: Realtime Authoring Tool

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]

Ropossum Demo

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

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

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

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

Frequency Analysis

Axiality of 0.1X, 0.9Y

Axiality of 1X, 0.4Y

Axiality Measure

Axiality histogram over 500 generated levels

Axiality Measure

Density of 0.036

Density of 1

Density Measure𝜎 = 𝑖=1

𝑛 (𝑥𝑖− 𝑥)

𝑛

The histogram of the density measure for the 500 generated levels

Density

Num

ber

of

level

sDensity Measure

Density-Axiality histogram over 500 generated levels

Axiality-Density Histogram

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

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

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

6%

Very anxious

17%

Somewhat anxious

22%

Neither

32%

Somewhat relaxed

23%

Veryrelaxed

Player Emotion

Simple

Easy

Just right

Tough

3%

6%

60%

31%

Difficulty

Live Demo

www.mohammadshaker.com/ropossum.html

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

T h a n k yo u

Recommended