Procgen Chaz Pratt 11/3/2009. overview What is procgen? What we tried? What worked? What didn’t? Try again?

Slides:



Advertisements
Similar presentations
Improving Rotor for Dynamically Typed Languages Fabio Mascarenhas and Roberto Ierusalimschy.
Advertisements

Mobile Agents Mouse House Creative Technologies Mike OBrien.
Javascript Code Quality Check Tools Javascript Code Quality Check Tools JavaScript was originally intended to do small tasks in webpages, but now JavaScript.
1 Programming Languages (CS 550) Mini Language Interpreter Jeremy R. Johnson.
1 Compiler Construction Intermediate Code Generation.
Compiler Design PROJECT PRESENTATION : COMPILER FOR OBJECTIVE C Harshal Waghmare Jeet Kumar Nandan Kumar Vishal Agrawal.
Cosc 5/4730 Game Design. A short game design primer. A game or animation is built on an animation loop. – Instance variables of “objects” are updated.
MP IP Strategy Stateye-GUI Provided by Edotronik Munich, May 05, 2006.
ABSTRACT The goal of this project was to create a more realistic and interactive appliance interface for a Usability Science class here at Union. Usability.
Chapter 10 Implementing Subprograms. Copyright © 2012 Addison- Wesley. All rights reserved. 1-2 Chapter 10 Topics The General Semantics of Calls and Returns.
Expert System Human expert level performance Limited application area Large component of task specific knowledge Knowledge based system Task specific knowledge.
ISBN Chapter 10 Implementing Subprograms.
Chapter 10 Storage management
Cosc 5/4730 Game Design. A short game design primer. A game or animation is built on an animation loop. – Instance variables of “objects” are updated.
Recursion. Binary search example postponed to end of lecture.
Costas Busch - RPI1 NPDAs Accept Context-Free Languages.
Courtesy Costas Busch - RPI1 NPDAs Accept Context-Free Languages.
Recursion.
CIS101 Introduction to Computing Week 11. Agenda Your questions Copy and Paste Assignment Practice Test JavaScript: Functions and Selection Lesson 06,
1 Chapter 4 Threads Threads: Resource ownership and execution.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
CIS607, Fall 2005 Semantic Information Integration Article Name: Clio Grows Up: From Research Prototype to Industrial Tool Name: DH(Dong Hwi) kwak Date:
Setting Up a Sandbox Presented by: Kevin Brunson Chief Technology Officer.
CORE MECHANICS. WHAT ARE CORE MECHANICS? Core mechanics are the heart of a game; they generate the gameplay and implement the rules. Formal definition:
IBM Proof of Technology Discovering the Value of SOA with WebSphere Process Integration © 2005 IBM Corporation SOA on your terms and our expertise WebSphere.
WorkPlace Pro Utilities.
GREENFOOT CLUB RESOURCES Brian Cullen – Rossett School
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
Paul Danner - Leader Taylor Gehling - Communications Austen Gregor – Key Idea Holder Trevor McCormack – Webmaster Manimaran Govindarasu – Advisor/Client.
Software Engineering 2003 Jyrki Nummenmaa 1 CASE Tools CASE = Computer-Aided Software Engineering A set of tools to (optimally) assist in each.
COMP 410 & Sky.NET May 2 nd, What is COMP 410? Forming an independent company The customer The planning Learning teamwork.
Senior Project – Computer Science – 2015 Modelling Opponents in Board Games Julian Jocque Advisor – Prof. Rieffel Abstract Modelling opponents in a game.
C++ for Engineers and Scientists Second Edition Chapter 6 Modularity Using Functions.
The Generic Gaming Engine Andrew Burke Advisor: Prof. Aaron Cass Abstract Games have long been a source of fascination. Their inherent complexity has challenged.
Patterns and Reuse. Patterns Reuse of Analysis and Design.
Programming games Show your version of Bo the dog. Start cannonball Preview: video, audio work session (cannonball) Homework: Cannonball with ball in a.
Java Threads. What is a Thread? A thread can be loosely defined as a separate stream of execution that takes place simultaneously with and independently.
Playing God: The Engineering of Functional Designs in the Game of Life Liban Mohamed Computer Systems Research Lab
Interpretation Environments and Evaluation. CS 354 Spring Translation Stages Lexical analysis (scanning) Parsing –Recognizing –Building parse tree.
Review 1.Lexical Analysis 2.Syntax Analysis 3.Semantic Analysis 4.Code Generation 5.Code Optimization.
Evolving Virtual Creatures & Evolving 3D Morphology and Behavior by Competition Papers by Karl Sims Presented by Sarah Waziruddin.
CS212: Object Oriented Analysis and Design Lecture 9: Function Overloading in C++
Genetic Programming Lab For Chess Hadar Rottenberg & Nizan Freedman.
A grammar for arithmetic expressions involving the four basic operators and parenthesized expressions. Parenthesized expressions have the highest precedence.
Daniel Gagnon’s Final Project Number Guessing Game Widget By: Daniel Gagnon.
1 Project Management Example Solving Sudoku 2 What is Sudoku?  Sudoku is a game with 9 columns and 9 rows and 9 “boxes” composed of a 3 x 3 Grid  Numbers.
Chapter 6 Introduction to Defining Classes. Objectives: Design and implement a simple class from user requirements. Organize a program in terms of a view.
Data Structure for Behavior-Based Machine Learning/Path Planning Zachary Dawson A: Humanoids 5/7/13.
Object-Oriented Programming Chapter Chapter
Video Games & Object Oriented Programming. Games.
Operating Systems: Internals and Design Principles
1 Programming Languages (CS 550) Lecture 2 Summary Mini Language Interpreter Jeremy R. Johnson.
Activiti Dima Ionut Daniel. Contents What is Activiti? Activiti Basics Activiti Explorer Activiti Modeler Activiti Designer BPMN 2.0 Activiti Process.
Specifying and executing behavioral requirements The play-in/play-out approach David Harel, Rami Marelly Weizmann Institute of Science, Israel An interpretation.
ISBN Chapter 12 Support for Object-Oriented Programming.
Fiber Based Job Systems Seth England. Preemptive Scheduling Competition for resources Use of synchronization primitives to prevent race conditions in.
Lecture 10 – Polymorphism Nancy Harris with additional slides Professor Adams from Lewis & Bernstein.
© 2009, Tom McKendree The Systems Engineering Game (Basic Game) 1.0 Introduction This is a game about the systems engineering process, as represented by.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Recursion,
Function Parameters and Overloading Version 1.0. Topics Call-by-value Call-by-reference Call-by-address Constant parameters Function overloading Default.
Multi-Device UI Development for Task-Continuous Cross-Channel Web Applications Enes Yigitbas, Thomas Kern, Patrick Urban, Stefan Sauer
NPDAs Accept Context-Free Languages
ICS Principles of Operating Systems
IDE and Visualisation of Abstract Syntax Trees for Coco/R
Unit# 9: Computer Program Development
Mini Language Interpreter Programming Languages (CS 550)
Lecture 2 The Art of Concurrency
SPL – PS1 Introduction to C++.
Games Development 2 Entity / Architecture Review
Presentation transcript:

Procgen Chaz Pratt 11/3/2009

overview What is procgen? What we tried? What worked? What didn’t? Try again?

background Procgen is a production system L-Systems, Shape Grammars Symbols and rules Rules operate on symbols to produce more symbols Give up eventually Procgen goes a step beyond generating geometry by abstracting gameplay objects into symbols and populating a level based on user specified design rules.

what we tried Oct – Dec 08 Lua implementation, C++ integration Runtime random arena levels

what we shipped

procgen overview Rule Set: Objects, Variables, Rules Conversion to a Lua table “Instance” these tables and generate. Resolve the object list Play what you have made

rule set

rule set tunning Variables in the rule set are meant to provide a high level method for tweaking the fun of a level while the rules define the theme or core of what the level will be like. In rcf2 the variables were adjustable via the excel config spreadsheet so there was no need to adjust the rule set every time a tweak was needed. Two instances of the same rule set with different input parameters can produce very different levels

lua table Each rule set is formed into a Lua table containing tables that hold the needed components Identifier, Object Types, Object list, Variables, Rules Each rule is a Lua function that takes a rule instance table and an object to modify

lua table

instancing Using Lua coroutines (threads) two identical rule sets could be running at the same time Rules sets can be recursive or run concurrently so each evaluation of a rule set uses a its own table

progen:run The actual procgen engine was written in Lua Each rule begins at the front of the object list and executes on each object. If the conditions of the rule are satisfied it may remove, alter or use this object to generate new objects. These objects are added to the front or end of the list depending on the rule Objects appended to the list will also be evaluated by the current rule. When the rule reaches the end of the list the next rule begins. If no rules are left, the generation process terminates.

progen:run

procgen:resolve Each object in the list has a unique type that is explicitly defined by its name. During resolution this name is used to find a corresponding resolution function which will be called to add that object to the game If no function is found that object will silently fail to take form in the game. Type Floor will search for ProcGen.FloorRes( gen, obj ) Resolution generally results in calling a C function that creates the specific object in our engine

what went right? Procgen was able to create in some base form all elements of gameplay attempted in ratchet: platforming, enemies, hazards, grind rails Simple arena challenges could be laid out in a day or two. Highly structured variability. Had the ability to duplicate nearly all of the final challenges found in the final game.

what went wrong? Everything else? Time and resources – extremely limited support, rcf2 over budget... something had to be sacrificed Dynamic creation of objects that are expected to be set up in tools EVERYTHING IS A MOBY Lighting, Nav, Colision, etc

mobies The basic geometry never evolved past a 1m cube scaled for collision and using igFXUtil to draw sufaces No easy way to make static gemoetry Jigsaw puzzles of mobies Very restrictive Moby limits For procgen to be utilized at runtime we need an engine that better supports the creation or spawning of static geometry.

Other dynamic objects Path, Volumes, Clues – intended to be added in Luna Outdated or broken spawning functions Navmesh – our engine needs a way to dynamically spawn navmesh if there are going to be dynamically created components of the world. More use of dynamic lighting and spawning lights from code would be a plus (not fully explored) If it is used by gameplay there needs to be a convenient and fast way to spawn it at runtime.

future applications Generate parts of the game that we want to be highly variable such as in rcf2 Create an ip that supports a primarily generated game Use this tech to generate worlds offline that can be tweaked afterwards and saved Use this to create flexible expansions of our tools to accomplish redundant task. ie crate stacks

??? Questions?