SlideShare a Scribd company logo
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

More Related Content

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

Y1 gd engine_terminology
Y1 gd engine_terminologyY1 gd engine_terminology
Y1 gd engine_terminology
Luke Summers
 
Engine Terminology
Engine TerminologyEngine Terminology
Engine Terminology
kamkill
 

Similar to 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 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
 
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
 
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 Elements of Computing Game
Design Elements  of Computing GameDesign Elements  of Computing Game
Design Elements of Computing Game
 
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)
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Enterprise Security Monitoring, And Log Management.
Enterprise Security Monitoring, And Log Management.Enterprise Security Monitoring, And Log Management.
Enterprise Security Monitoring, And Log Management.
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Transforming The New York Times: Empowering Evolution through UX
Transforming The New York Times: Empowering Evolution through UXTransforming The New York Times: Empowering Evolution through UX
Transforming The New York Times: Empowering Evolution through UX
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 

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

Editor's Notes

  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