SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-games amsmith@soe.ucsc.edu CIG 2010 – Copenhagen, Denmark Adam M. Smith (presenter),and Michael Mateas
Project goal:Generate a rich space of game rulesets.
Offline ruleset generation example Offline ruleset generation is part of automating the game design process. Ludi(Browe/Maire, 2010) Evolved board games Simulated play for evaluation commercially published game outputs (ex: Yavalath)
Online ruleset generation example New game design idea: Explore a large space of game designs as an integrated, in-game activity! ROM CHECK FAIL Captain Forever Variations Forever?
Inspiring work from CIG 2008 “An experiment in automatic game design” (Togelius/Schmidhuber at CIG 2008) Design variables: time/score limits numbers of “things” movement logics collision/score effects Evolutionary optimization of “fun” metric A sample game
VF’s design space Design elements: Agent types Collision effects Movement models Procedural obstacle placement  Explicit victory conditions Camera control … Variable number of agent types (each with own details and interactions)
Mini-game demo
Representing rulesets as logical terms Rich rulesets require representing both data structures and code structures. Symbolic terms from logic programming provide a unified representation.
Representing rulesets (1) Boolean flags: permadeath. debug_mode. disable_teleportation.
Representing rulesets (2) Key-value mappings: initial_health(100). radar_range(long). weather_model(springtime).
Representing rulesets (3) Properties of / relations between objects: damage(sword_of_might,11). xp_for_kill(cave_rat,100). allies(humans,elves).
Representing rulesets (4) Nested expressions: scripted_event(	spawn(boss,temple),120). achieved_when(quest_complete,	and(dead(boss),holding(amulet)).
Representing rulesets (5) Sets: move(rock).move(paper).move(scissors).move(lizard).move(spock). ,[object Object]
phase(1,movement). phase(2,combat).phase(3,diplomacy).,[object Object]
Representing other stuff RTS level design terrain_type(3,8,grass).terrain_type(3,9,rocks).…terrain_height(3,8,22).terrain_height(3,9,25).…resource_tile(5,20,energy(10)).…initial_base(10,22,player1). 4X tech tree structure tech_name(22,level(5,upgrade(infantry,attack))).tech_requires(22,16).tech_requires(22,4).tech_unit_modifier(22,infantry,defense,plus(5)).
Example ruleset in VF prototype space_resolution(32,24). space_topology(spherical). background(grids; stars). active_agent(red;yellow;white;cyan). agent_movement(red,asteroids;white,asteroids;yellow,roguelike;cyan,pacman). agent_population(red,many;white,singleton;yellow,singleton;cyan,many). agent_collide_effect(red,white,kill;cyan,yellow,kill). player_agent(white).  obstacle_distribution(enclosure;random_walls;random_blocks). obstacle_collide_effect(red,kill;white,kill). goal(kill_all(red)). player_agent(white). goal(kill_all(red)). agent_collide_effect(red,white,kill). agent_movement(white,asteroids).
We need a generative space of logical terms.
Generating logical terms Answer Set Programming  Prolog-style logic programming (facts and rules) … with choice rules and integrity constraints Usage: Answer Sets Logic Program Answer Set Solver
Simple choice rules Design task: Select an active subset of three or more agent colors. Design space specification color(red). color(blue). color(green). color(white). color(magenta). color(yellow). 3 { agent(C) :color(C) }.  Background facts  Choice rule agent(red).agent(white).agent(yellow). agent(green).agent(white).agent(magenta).  Example answer sets
Complex choice rules Design task: Assign every active agent type an optional obstacle collision effect if obstacles are actually enabled. Design space specification collide_effect(kill). collide_effect(bounce). 0 { obstacle_collide_effect(C,Effect) 		:collide_effect(Effect) } 1 :-	agent(C),obstacles_enabled. obstacle_collide_effect(red, kill). obstacle_collide_effect(white, bounce). Example answer set
Integrity constraints Design task: Disallow roguelike-moving agents from bouncing. Integrity constraint :-	agent(A),agent_movement(A,roguelike),	agent(B),agent_collide_effect(A,B,bounce).  agent(red). agent_movement(red,roguelike). agent_collide_effect(red,white,bounce). Undesirable answer set slice
Expressive constraints via integrated analysis Design task: Detect when a game requires indirect pushing to win, and then require all games have this property. winnable_via(indirect_push(C1,C2)) :- … . :-	player_agent(A),	goal(kill_all(B)), notwinnable_via(indirect_push(A,B)).
Evaluation Was the ruleset space rich? revealed engine design issues contained unexpected twists! Were the constraints expressive? easily eliminate undesired design subspaces creating a specialized indirect-push game generator Can it be used in practice? integrated it into a Flash game Shippable PCG requires a trustable space with interesting variety. Pathological failure cases???
Summary of approach Logic Program Design space specification Enumerated options Term structure grammars Conditional dependence Pattern detectors Requirements Exceptions Optimizable metrics … Answer Sets Game content artifacts Boolean flags Sets Sequences Tables Graphs … Scripts Triggers FSMs Behavior trees? … Answer Set Solver
Bonus round: Variations on anything Goal: Procedurally generate some rulesets. Result: Procedurally generate arbitrary logically-described content.
Case in point: Warzone 2100 map generation Diorama (Warzone Map Tools)http://warzone2100.org.uk/ “Looks to make as good or better maps than 90% of mappers efforts over the last 10 years.” – player comment on public gaming forum
Thank you Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-Games Presenter: Adam M. Smith amsmith@soe.ucsc.edu

Weitere ähnliche Inhalte

Ähnlich wie Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-games

Ludocore: A Logical Game Engine for Modeling Videogames
Ludocore: A Logical Game Engine for Modeling VideogamesLudocore: A Logical Game Engine for Modeling Videogames
Ludocore: A Logical Game Engine for Modeling Videogamesrndmcnlly
 
Factorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender SystemsFactorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender SystemsEvgeniy Marinov
 
Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]Saajid Akram
 
Matching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a PurposeMatching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a PurposeCUbRIK Project
 
Matching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a PurposeMatching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a PurposeLuca Galli
 
The Ring programming language version 1.5.3 book - Part 58 of 184
The Ring programming language version 1.5.3 book - Part 58 of 184The Ring programming language version 1.5.3 book - Part 58 of 184
The Ring programming language version 1.5.3 book - Part 58 of 184Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 48 of 184
The Ring programming language version 1.5.3 book - Part 48 of 184The Ring programming language version 1.5.3 book - Part 48 of 184
The Ring programming language version 1.5.3 book - Part 48 of 184Mahmoud Samir Fayed
 
Functional Programming in the Wild
Functional Programming in the WildFunctional Programming in the Wild
Functional Programming in the WildWojciech Gawroński
 
Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminologyJordanianmc
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentanistar sung
 
Presentation 20110918 after effect
Presentation 20110918   after effectPresentation 20110918   after effect
Presentation 20110918 after effectKuanhung Chen
 
Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminologyLuke Summers
 
Engine Terminology
Engine TerminologyEngine Terminology
Engine Terminologykamkill
 
The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)Pierre Schaus
 
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...FarhanAhmade
 
Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.Ankita Tiwari
 
Useful Tools for Making Video Games - Ogre (2008)
Useful Tools for Making Video Games - Ogre (2008)Useful Tools for Making Video Games - Ogre (2008)
Useful Tools for Making Video Games - Ogre (2008)Korhan Bircan
 
Y1 gd engine_terminology (1) (4)
Y1 gd engine_terminology (1) (4) Y1 gd engine_terminology (1) (4)
Y1 gd engine_terminology (1) (4) TomCrook
 

Ähnlich wie Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-games (20)

Ludocore: A Logical Game Engine for Modeling Videogames
Ludocore: A Logical Game Engine for Modeling VideogamesLudocore: A Logical Game Engine for Modeling Videogames
Ludocore: A Logical Game Engine for Modeling Videogames
 
Factorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender SystemsFactorization Machines and Applications in Recommender Systems
Factorization Machines and Applications in Recommender Systems
 
Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]Class[6][5th aug] [three js-loaders]
Class[6][5th aug] [three js-loaders]
 
Matching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a PurposeMatching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a Purpose
 
Matching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a PurposeMatching Game Mechanics and Human Computation Tasks in Games with a Purpose
Matching Game Mechanics and Human Computation Tasks in Games with a Purpose
 
The Ring programming language version 1.5.3 book - Part 58 of 184
The Ring programming language version 1.5.3 book - Part 58 of 184The Ring programming language version 1.5.3 book - Part 58 of 184
The Ring programming language version 1.5.3 book - Part 58 of 184
 
The Ring programming language version 1.5.3 book - Part 48 of 184
The Ring programming language version 1.5.3 book - Part 48 of 184The Ring programming language version 1.5.3 book - Part 48 of 184
The Ring programming language version 1.5.3 book - Part 48 of 184
 
Functional Programming in the Wild
Functional Programming in the WildFunctional Programming in the Wild
Functional Programming in the Wild
 
Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminology
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
 
Presentation 20110918 after effect
Presentation 20110918   after effectPresentation 20110918   after effect
Presentation 20110918 after effect
 
MSR Asia Summit
MSR Asia SummitMSR Asia Summit
MSR Asia Summit
 
Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminology
 
Engine Terminology
Engine TerminologyEngine Terminology
Engine Terminology
 
The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)The Concurrent Constraint Programming Research Programmes -- Redux (part2)
The Concurrent Constraint Programming Research Programmes -- Redux (part2)
 
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
 
Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.Design the implementation of Robotic Simulator: Goalkeeper.
Design the implementation of Robotic Simulator: Goalkeeper.
 
MVC meets Monad
MVC meets MonadMVC meets Monad
MVC meets Monad
 
Useful Tools for Making Video Games - Ogre (2008)
Useful Tools for Making Video Games - Ogre (2008)Useful Tools for Making Video Games - Ogre (2008)
Useful Tools for Making Video Games - Ogre (2008)
 
Y1 gd engine_terminology (1) (4)
Y1 gd engine_terminology (1) (4) Y1 gd engine_terminology (1) (4)
Y1 gd engine_terminology (1) (4)
 

Kürzlich hochgeladen

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Kürzlich hochgeladen (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-games

  • 1. Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-games amsmith@soe.ucsc.edu CIG 2010 – Copenhagen, Denmark Adam M. Smith (presenter),and Michael Mateas
  • 2. Project goal:Generate a rich space of game rulesets.
  • 3. Offline ruleset generation example Offline ruleset generation is part of automating the game design process. Ludi(Browe/Maire, 2010) Evolved board games Simulated play for evaluation commercially published game outputs (ex: Yavalath)
  • 4. Online ruleset generation example New game design idea: Explore a large space of game designs as an integrated, in-game activity! ROM CHECK FAIL Captain Forever Variations Forever?
  • 5. Inspiring work from CIG 2008 “An experiment in automatic game design” (Togelius/Schmidhuber at CIG 2008) Design variables: time/score limits numbers of “things” movement logics collision/score effects Evolutionary optimization of “fun” metric A sample game
  • 6. VF’s design space Design elements: Agent types Collision effects Movement models Procedural obstacle placement Explicit victory conditions Camera control … Variable number of agent types (each with own details and interactions)
  • 8. Representing rulesets as logical terms Rich rulesets require representing both data structures and code structures. Symbolic terms from logic programming provide a unified representation.
  • 9. Representing rulesets (1) Boolean flags: permadeath. debug_mode. disable_teleportation.
  • 10. Representing rulesets (2) Key-value mappings: initial_health(100). radar_range(long). weather_model(springtime).
  • 11. Representing rulesets (3) Properties of / relations between objects: damage(sword_of_might,11). xp_for_kill(cave_rat,100). allies(humans,elves).
  • 12. Representing rulesets (4) Nested expressions: scripted_event( spawn(boss,temple),120). achieved_when(quest_complete, and(dead(boss),holding(amulet)).
  • 13.
  • 14.
  • 15. Representing other stuff RTS level design terrain_type(3,8,grass).terrain_type(3,9,rocks).…terrain_height(3,8,22).terrain_height(3,9,25).…resource_tile(5,20,energy(10)).…initial_base(10,22,player1). 4X tech tree structure tech_name(22,level(5,upgrade(infantry,attack))).tech_requires(22,16).tech_requires(22,4).tech_unit_modifier(22,infantry,defense,plus(5)).
  • 16. Example ruleset in VF prototype space_resolution(32,24). space_topology(spherical). background(grids; stars). active_agent(red;yellow;white;cyan). agent_movement(red,asteroids;white,asteroids;yellow,roguelike;cyan,pacman). agent_population(red,many;white,singleton;yellow,singleton;cyan,many). agent_collide_effect(red,white,kill;cyan,yellow,kill). player_agent(white). obstacle_distribution(enclosure;random_walls;random_blocks). obstacle_collide_effect(red,kill;white,kill). goal(kill_all(red)). player_agent(white). goal(kill_all(red)). agent_collide_effect(red,white,kill). agent_movement(white,asteroids).
  • 17. We need a generative space of logical terms.
  • 18. Generating logical terms Answer Set Programming Prolog-style logic programming (facts and rules) … with choice rules and integrity constraints Usage: Answer Sets Logic Program Answer Set Solver
  • 19. Simple choice rules Design task: Select an active subset of three or more agent colors. Design space specification color(red). color(blue). color(green). color(white). color(magenta). color(yellow). 3 { agent(C) :color(C) }.  Background facts  Choice rule agent(red).agent(white).agent(yellow). agent(green).agent(white).agent(magenta).  Example answer sets
  • 20. Complex choice rules Design task: Assign every active agent type an optional obstacle collision effect if obstacles are actually enabled. Design space specification collide_effect(kill). collide_effect(bounce). 0 { obstacle_collide_effect(C,Effect) :collide_effect(Effect) } 1 :- agent(C),obstacles_enabled. obstacle_collide_effect(red, kill). obstacle_collide_effect(white, bounce). Example answer set
  • 21. Integrity constraints Design task: Disallow roguelike-moving agents from bouncing. Integrity constraint :- agent(A),agent_movement(A,roguelike), agent(B),agent_collide_effect(A,B,bounce). agent(red). agent_movement(red,roguelike). agent_collide_effect(red,white,bounce). Undesirable answer set slice
  • 22. Expressive constraints via integrated analysis Design task: Detect when a game requires indirect pushing to win, and then require all games have this property. winnable_via(indirect_push(C1,C2)) :- … . :- player_agent(A), goal(kill_all(B)), notwinnable_via(indirect_push(A,B)).
  • 23. Evaluation Was the ruleset space rich? revealed engine design issues contained unexpected twists! Were the constraints expressive? easily eliminate undesired design subspaces creating a specialized indirect-push game generator Can it be used in practice? integrated it into a Flash game Shippable PCG requires a trustable space with interesting variety. Pathological failure cases???
  • 24. Summary of approach Logic Program Design space specification Enumerated options Term structure grammars Conditional dependence Pattern detectors Requirements Exceptions Optimizable metrics … Answer Sets Game content artifacts Boolean flags Sets Sequences Tables Graphs … Scripts Triggers FSMs Behavior trees? … Answer Set Solver
  • 25. Bonus round: Variations on anything Goal: Procedurally generate some rulesets. Result: Procedurally generate arbitrary logically-described content.
  • 26. Case in point: Warzone 2100 map generation Diorama (Warzone Map Tools)http://warzone2100.org.uk/ “Looks to make as good or better maps than 90% of mappers efforts over the last 10 years.” – player comment on public gaming forum
  • 27. Thank you Variations Forever: Flexibly Generating Rulesets from a Sculptable Design Space of Mini-Games Presenter: Adam M. Smith amsmith@soe.ucsc.edu

Hinweis der Redaktion

  1. Rulesets, unlike characters stats or level designs, have code-like structure that doesn’t easily fit in fixed-shape data structures like a feature vector.Let’s look at what ruleset generation could be used for.
  2. Just to mention one project.Ludi’s generator was specific to board games. I will show you a very general approach, but not plug it into a closed-loop design model.
  3. Left: two indie gamesRCF: generative space of mini-games that come at you, one after anotherCF: design space of modular ships that you construct, come to understand design principles through playVF: design we envision and have built a small prototype ofPlayer: incrementally unlock design element and build constraints to control recombination – a game where player sculpts design space of mini-games
  4. LikeLudi, but for simple videogames: single-player, real-time, arcade play experienceYou control the cyan thing, move around and bump into other colored things with different…We don’t have benchmark problems in videogame ruleset generation right now, so we decided to use this work as a kind of reference point.
  5. Upgrade to richer representation, demand finer-grained control over the design space.We gave more responsibility over design decisions to our ruleset generator.Variable number: says representation can’t be a fixed-length array of integers, needs to be a structured-but-variable-size collection
  6. A giant video demo! Obstacle patterns, moving viewpoint, glittery art, white guy is collecting/killing red guysWe will show the concrete ruleset for this game later on.Take a step back: figure out what you need to express to represent a ruleset – what you have to specify to describe design decisions in a mini-game
  7. …Next few slides: examples of symbolic, logical terms as representations
  8. Usage: represent the choice to some mechanic on and off
  9. Usage: configure parameterized mechanics
  10. Usage: parameterize interactions between game objects
  11. Nesting of terms! Looking very code-like.Usage: build complex data structures (ex: timed event script) or complex control structures (ex: situation detector)
  12. You can build collections using many terms with the same structureUsage: collect or sequence small pieces for different emergent effects
  13. Like a 2D array, but the objects used for lookup might come from other freshly generated collections-- represent data like a social graph or rules like transitions in an FSM
  14. I’m focusing on rulesets, but the idea of “data” and “code” here are pretty general.-- rts level design details use big collections of a small number of term structures-- tech tree for a 4x game be much smaller but describe richer structureEnough tutorial. Let’s get to the real stuff we generated.
  15. Here is the ruleset for the game in the video (or perhaps a slight variation, there are so many…)Left: complete ruleset for VF prototypeRight: Screenshot of this particular ruleset in actionBottom: Key points in ruleset (other details include: how obstacles are placed, their effect on the various kinds of agents)
  16. We ALSO need a nice representation for this generative space.
  17. Prolog: facts and rulesChoice rules: invention of new factsIntegrity constraints: filtering of inconsistent factsSame way you feed a SAT problem to a SAT solver and get truth assignments as outputs (some ASP solvers even work this way)
  18. Color facts are simple logical statements that are always true (red is indeed a color).Choice rule says what MIGHT be true (red might be an agent).3 on the left means the expression inside should be true at least 3 times (up to as many colors as there are).Various answer sets show everything that is true in the different compatible worlds
  19. Demonstrates conditional structure.Output of one part of generator is input to another
  20. Eliminate some combination that is otherwise possible.Roguelike motion model doesn’t support momentum. My call as the designer to say this doesn’t make sense in my generated mini-games.In the code, IC is like a headless rule. If it is every satisfied, that potential answer set is thrown out.
  21. You control a red guy, goal is to kill all red. Touching border kills you, but your buddies stay alive (failure). Solution, push them into the wall first and then jump in after them.An unforeseen twist, we, as designers, didn’t put in there intentionally – emergence is common in rich representations. We wanted to investigate!Use standard logic programming to detect the chain of indirect actions which allows indirect push victory. (~10 lines)Use an integrity constraint to require that property to be present.Detection logic is DIRECTLY integrated into generator! (vs. external generate-and-test)Evaluation next
  22. Issues: showed us combinations we hadn’t thought to test yet (bouncing with the roguelike model)Twists: indirect-push games that emergedUndesired: collision effects were consistent with stated game goalSpecialized generator: integrating analysis of rulesets meant we didn’t need to leave the generator code to test for that propertyFlash: brittle, command-line tools, yes, but plumbing to integrate with a deployable flash game is not too hard to overcomePathlogical: major stumbling block for adoption of online PCG (spore planets) ASP: simply dissallow them if you can write down what the problem is (not complete, but start at having the tools respect this major issue)
  23. Shippable pcg requires a trustable space with interesting variety.Trust: very concise, declarative definition of the design space so that people can agree &- constructs for easily reshaping the space into one that you do trustVariety: program can define spaces of astronomical size, sample them at 10,000+/sec&- high-performance generation for gigantic spaces
  24. To put some teeth behind my claim: here is some independent PCG work using ASP as the core generative approachBase and resource positions, heightfieldwith distinct cliff features, Plausible placement of roads, ruins, and other doodadsTerrain-adapted layout of starting bases and defensive walls metrics: base distances, resource distances, bottleneck width – set constraints on these metrics and then solve – no optimization, just requiring “good enough”* downloadable, open source, outputs already included in standard wz2100 map set* You can read this quote for yourself