Cut the Rope Play Forever: A Game That Does Not End
Upcoming SlideShare
Loading in...5
×
 

Cut the Rope Play Forever: A Game That Does Not End

on

  • 1,307 views

Cut The Rope Play Forever is a game with endless levels. Its designed framework let you play the beloved Cut The Rope game as much as you want and the levels will keep coming. You can also design your ...

Cut The Rope Play Forever is a game with endless levels. Its designed framework let you play the beloved Cut The Rope game as much as you want and the levels will keep coming. You can also design your own levels with Ropossum; the first ever evolutionary framework for evolving playable content for physics-based games. With Ropossum you can check your designed levels for playability on 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.

Statistics

Views

Total Views
1,307
Views on SlideShare
1,075
Embed Views
232

Actions

Likes
1
Downloads
3
Comments
0

4 Embeds 232

http://mohammadshakergtr.wordpress.com 227
http://www.podidoo.com 2
https://www.linkedin.com 2
http://www.linkedin.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cut the Rope Play Forever: A Game That Does Not End Cut the Rope Play Forever: A Game That Does Not End Presentation Transcript

    • PCG with Preference Learning for FPS Games
    • Mohammad Shaker, Mehdi Zonjy, Ismaeel Abuabdallah, Mhd Hasan Sarhan and Noor Shaker ITE Damascus and ITU Copenhagen
    • ames The Perfect Game gamesgamesgames games games games games games games games games games games games games games
    • 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
    • Game Research Lab at ITU Copenhagen
    • Mohammad Shaker, Mehdi Zonjy, Ismaeel Abuabdallah, Mhd Hasan Sarhan and Noor Shaker ITE Damascus and ITU Copenhagen
    • Rawan Al-Omari, Fawzia Shams Al-Deen, Walaa Baghdadi, Zeina Al-Helwani. 2013 ITE Damascus
    • An Idea..
    • - 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. ?
    • Sequels 2010, 2011, 2012 and 2013 WWDC 2011, won an Apple Design Award for the iOS platform 150 million downloads 1.6 million users/daily
    • 75% Mobiles/Tablets 25% PC Fast-paced Games
    • Modelling physics bodies, interactions, constraints Procedurally generating levels How to check a content if it’s playable or not? Try to suggests modification, design levels from scratch, complete un-finished designs, enhace complete designs
    • Brain Storming Reading, Reading, and then Reading..
    • CIG 2013 AIIDE 2013 AIIDE 2013
    • “Automatic Generation and Analysis of Physics-Based Puzzle Games” IEEE Conference on Computational Intelligence and Games, CIG 2013 CIG13 “Evolving Playable Content for Cut the Rope through a Simulation-Based Approach” AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013 AIIDE13 “Ropossum: An Authoring Tool for Designing, optimizing and Solving Cut the Rope Levels” AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013 AIIDE13
    • Content Generation Playability Designer The Plan
    • Demo
    • CRUST ENGINE
    • 8K lines of code vs 12K for the original game Engine Manager (Physics and Graphics Engines) Modes Manager Graphics Engine Shots Manager Time-machine Manager Notification System Built-in Authoring Tool Database Connection Music Manager UI Textures Manager Particles Engine State Manager SaveRetrieve to any state Collision Engine Rigid bodies Manager CAS Constraints as Services PCAS Physics- Constraints as Services Hard Constraints (Ragdoll, linked bodies, etc.) Springs (Ropes, Tiles, etc.) Water
    • RigidBody Apply on + ApplyService(RigidBody) SpringService + ApplyService(RigidBody) TileSpringService + ApplyService(RigidBody) HardConstraintService + AddNewService(Service) + RemoveService(Service) ServiceManager - List<HardConstraintService> HardConstraintsManager - List<TileSpringService> TileSpringsManager - List<SpringService> SpringsManager + Update(GameTime) + Draw(GameTime) IUpdatableComponent - WaterHeight LiquidService inherits implements CRUST Architecture managesmanagesmanages
    • Website Twitter Facebook Announcement at Feb 14, 2013
    • Official website in Feb 14, 2013
    • Feb 15, 2013 PCG Trailer April 13, 2013 Playability Trailer Now, July, 2013
    • Content Generation Playability Designer The Plan
    • Game Components
    • Game Components
    • 260 420
    • 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]
    • 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. Candy Should be placed under the closest rope when there is no water, bubbles or rockets. OmNom Should be placed close to the end of a rope, inside a predefined circle surrounding the end of it. Blower Should be placed in a position where it does intersect with at least one of the ropes. Bubble Should aim at Om Nom Rocket Shouldn’t intersect, 3 block size apart Comps 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 CRUST Engine PCG with CRUST Generator Model
    • 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 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
    • Frequency Analysis Axiality Measure Density Measure Axiality-Density Histogram Color Map Pseudo-Random Playability Check
    • Frequency Analysis
    • Average and standard deviation values of the four components extracted from 500 generated levels
    • Frequency AnalysisAxiality MeasureAxiality Measure The Projection over X and Y axis
    • Axiality of 0.1X, 0.9Y Axiality of 1X, 0.4Y
    • Axiality Histogram over 500 GL
    • Density Measure 𝜎 = 𝑖=1 𝑛 (𝑥𝑖 − 𝑥) 𝑛
    • Density of 0.036
    • Density of 0.036 Density of 1
    • The histogram of the density measure for the 500 levels generated Density Numberoflevels
    • Frequency AnalysisAxiality Measure Density Measure Axiality-Density Histogram
    • Density-Axiality Histogram over 500 GL
    • Frequency AnalysisAxiality Measure Density Measure Axiality-Density HistogramColor Map
    • Color Map
    • Color Map
    • Color Map
    • All Components Color Map over 500 GL
    • All Components Modified Color Map over 500 GL
    • Rockets Color Map over 500 GL
    • Om Nom Color Map over 500 Generated Levels
    • “Automatic Generation and Analysis of Physics-Based Puzzle Games” IEEE Conference on Computational Intelligence and Games, CIG 2013
    • Content Generation Playability Designer The Plan
    • Playability
    • Playability
    • Rope cut Blower press Bubble burst Rocket press Void
    • CRUST works on fixed time step
    • 60 times per second
    • 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
    • ProPosGeva RYSEPsuedo Random
    • ProPos RYSE
    • CRUST Engine 2.0 Prolog Engine ProPos RYSE Playability Model Closed Loop
    • CRUST Engine 2.0 Prolog Engine ProPos RYSE Playability Model Closed Loop
    • ProPos RYSE Agent in Action
    • Explore each action sub tree CRUST Engine 2.0 Prolog Engine Engine State as Facts Set of ordered potential actions Actions tree branch ProPos RYSE Playability Model Closed Loop New Engine State Inference Engine
    • Explore each action sub tree CRUST Engine 2.0 Prolog Engine Engine State as Facts Set of ordered potential actions Actions tree branch ProPos RYSE Playability Model Closed Loop New Engine State Inference Engine
    • 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).
    • Explore each action sub tree CRUST Engine 2.0 Prolog Engine Engine State as Facts Set of ordered potential actions Actions tree branch ProPos RYSE Playability Model Closed Loop New Engine State Inference Engine candy(497, 153). velocity(0, 0). OmNom(317, 414). rope(0, 445, 69, 105). rope(1, 596, 100, 165). bubble(0, 319, 101). rocket(501, 357, 5).
    • Explore each action sub tree CRUST Engine 2.0 Prolog Engine Engine State as Facts Set of ordered potential actions Actions tree branch ProPos RYSE Playability Model Closed Loop New Engine State Inference Engine rope_cut(0) rope_cut(1) 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 ProPos RYSE Playability Model Closed Loop New Engine State Inference Engine rope_cut (0) rope_cut (1) void action rope_cut(0) rope_cut(1) 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 ProPos RYSE Playability Model Closed Loop New Engine State Inference Engine
    • ProPos 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
    • ProPos 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(_) ProPos RYSE 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(_) ProPos RYSE 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(_) ProPos RYSE 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 2 3
    • reachable(bumper(1)). reachable(bumper(3)). reachable(bubble(1)). 1 2 3
    • reachable(bumper(3)). reachable(bubble(1)). 1 2 3
    • reachable(bumper(3)). reachable(bubble(1)). 1 2 3
    • reachable(bumper(1)). reachable(bumper(3)). 1 2 3
    • reachable(bumper(1)). reachable(bumper(3)). reachable(OmNom). 1 2 3
    • blower_Press 15 rope_cut 10 void_action 12 bubble_burst 15 rocket_press 17
    • Adaptive Time Step for a level
    • 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 rope_cut(0) void_action void_action void_action void_action void_action void_action void_action void_action void_action void_action void_action void_action void_action void_action void_action 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 void_action void_action void_action void_action void_action void_action void_action blower_press blower_press bubble_pinch(0) void_action void_action void_action void_action void_action void_action void_action void_action
    • Prolog.Net swi-prolog tuProlog jTrolog YieldProlog Communication Channel
    • Tree branch cut when trajectory doesn’t make sense
    • Tree branch cut when trajectory doesn’t make sense
    • RYSE
    • Demo - 215 explored nodes only
    • Demo
    • Solution Tree 205 explored nodes
    • RYSE
    • PCG Engine CRUST Engine Generate Level (Grammatical Evolution) Fitness Evaluators Level Generator Resting Phase Visualize Level and Update PCG with CRUST Generator Model
    • PCG Engine CRUST Engine Generate Level (Grammatical Evolution) Fitness Evaluators with Playability Fitness Level Generator Resting Phase Visualize Level and Update PCG with CRUST Generator Model
    • PCG Engine CRUST Engine Generate Level (Grammatical Evolution) fitness = 0.25 ∗ design + 0.75 ∗ RYSE_playability Level Generator Resting Phase Visualize Level and Update PCG with CRUST Generator Model
    • 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
    • Average, Min and Max branch cut tree depth for 100 playable levels while checking for playability
    • is what RYSE average needed time to check for the playability faster than ProPos is what RYSE faster than ProPos in checking a level for the playability
    • 210% ∓ 167.6 sec is the average time, STD for checking a non-playable level is the average time, STD for checking a playable level 29.8% ∓ 58.3 sec
    • 35%of the playable levels haven’t been branch cut is the percentage of void action in the generated levels72.3% is the average number of explored nodes for generated playable and non-playable levels 115 and 638 nodes
    • min is the average time for generating a playable level using RYSE.
    • “Evolving Playable Content for Cut the Rope through a Simulation-Based Approach” AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment, AIIDE 2013
    • ProPosGeva RYSEPsuedo Random
    • Action (Sequence) Engine State (Sequence)
    • Output Input Previous State State Hidden Weights V Weights U Weights W SRN Output Input Previous 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
    • 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
    • Output Input Previous StateState/ Hidden Weights V Weights UWeights W Copy (Delayed) Jordan RNN
    • Experimental setup <rope> <rope> <air_cushion> <bumper> <bubble> <rocket> <candy> <Om_Nom>
    • GridXY Candy distance Om Nom distance Input Representation
    • Data Balancing N, 2, 3, 4 0 40 0 20 0 30 0 10 0 Rope Cuts( 1) Rop e Cut s(2) Rocket Presses Air- Cushio n Presses Bubble Bursts Void Action s Components of Interest (COI) Input Representation
    • 0 400 200 300 100 Rope Cuts(1) Rope Cuts(2) Rocket Presses Air- Cushion Presses Bubble Bursts Void Actions Presented actions in the 100 playable levels test set altogether
    • BalancingCOI Data Representation Training levels # Network Type Setup Hidden Neurons # Test Id BalancedNAll100Elman10 networks 50 training levels 0.0001 error 10 runs 37 Test 1 BalancedYAll100Elman NYXY10, 50, 100Elman6 networks 50 training levels 0.0001 error 6 runs 37 Test 2 4YXY10, 50, 100Elman NYXY150Jordan 8 networks 50 training levels 0.01 error 8 runs 5, 10, 15, 20, 25, 30, 35, 40 Test 3 4YXY50Jordan 4YXY50Elman NYXY10, 50, 100Jordan8 networks 50 training levels 0.02 error 8 runs 5, 10, 15, 20, 25, 30, 35, 40 Test 4 2YXY10, 50, 100Jordan NN Cookie distance 10, 50, 100Elman8 networks 50 training levels 0.02 error 5 runs 5Test 5 NNXY10, 50, 100Elman
    • BalancingCOI Data Representation Training levels # Network Type Setup Hidden Neurons # Test Id BalancedNAll100Elman10 networks 50 training levels 0.0001 error 10 runs 37 Test 1 BalancedYAll100Elman NYXY10, 50, 100Elman6 networks 50 training levels 0.0001 error 6 runs 37 Test 2 4YXY10, 50, 100Elman NYXY150Jordan 8 networks 50 training levels 0.01 error 8 runs 5, 10, 15, 20, 25, 30, 35, 40 Test 3 4YXY50Jordan 4YXY50Elman NYXY10, 50, 100Jordan8 networks 50 training levels 0.02 error 8 runs 5, 10, 15, 20, 25, 30, 35, 40 Test 4 2YXY10, 50, 100Jordan NN Cookie distance 10, 50, 100Elman8 networks 50 training levels 0.02 error 5 runs 5Test 5 NNXY10, 50, 100Elman
    • BalancingCOI Data Representation Training levels # Network Type Setup Hidden Neurons # Test Id BalancedNAll100Elman10 networks 50 training levels 0.0001 error 10 runs 37 Test 1 BalancedYAll100Elman NYXY10, 50, 100Elman6 networks 50 training levels 0.0001 error 6 runs 37 Test 2 4YXY10, 50, 100Elman NYXY150Jordan 8 networks 50 training levels 0.01 error 8 runs 5, 10, 15, 20, 25, 30, 35, 40 Test 3 4YXY50Jordan 4YXY50Elman NYXY10, 50, 100Jordan8 networks 50 training levels 0.02 error 8 runs 5, 10, 15, 20, 25, 30, 35, 40 Test 4 2YXY10, 50, 100Jordan NN Cookie distance 10, 50, 100Elman8 networks 50 training levels 0.02 error 5 runs 5Test 5 NNXY10, 50, 100Elman
    • “Assessing the applicability of Recurrent Neural Networks in Evolving Playable Content for Cut the Rope”
    • Content Generation Playability Designer The Plan
    • 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]
    • 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
    • for players to share their designed levels and play others’ levels.
    • 5% Worsened 37% Unchanged 58% Improved
    • 6% Very anxious 17% Somewhat anxious 22% Neither 32% Somewhat relaxed 23% Very relaxed
    • Simple Easy Just right Tough 3% 6% 60% 31%
    • 0 60% Just Right 40% Not Right!
    • Components usage Candy changes of directions Candy trajectory (arcs, straight lines, etc.) Actions’ frequency
    • Modelling Player Preferences Game Player Player Experience Model Adaptation Model
    • Modelling Player Preferences Phase-1: Preference Modelling Phase-2: Adaptive Modeler Controllable features Gameplay features Prediction of player’s emotion Enforced Controllable features Gameplay features Prediction of player’s emotion Exhaustive search
    • Employed people are 2Xmore likely to feel anxiety and 2.25Xlikely to experience anger
    • You are X2likely to be addicted on angry birds if you are single than if you are married Employed people are 2Xmore likely to feel anxiety and 2.25Xlikely to experience anger
    • single players are 7Xand 2.5Xmore likely than married players to feel sadness and feel anger Employed people are 2Xmore likely to feel anxiety and 2.25Xlikely to experience anger
    • CRUST Engine 2D V2.0 PCG for Physics-Based Games Evolving Playable Content Ropossum: The Authoring Tool Promising Futuristic Ecosystem
    • Thank You!