God Mode Team One Up 1 Team One

  • Slides: 26
Download presentation
God. Mode Team One. Up 1

God. Mode Team One. Up 1

Team One. Up Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic

Team One. Up Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect Mike Hernandez Verification/Validation 2

God. Mode Basics Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic

God. Mode Basics Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect Mike Hernandez Verification/Validation 3

Basics - Why God. Mode? Joe Ennever Every CS Major wants to code video

Basics - Why God. Mode? Joe Ennever Every CS Major wants to code video games High-level programming language for designing 2 D platforms Spend time working on rules and AI rather than graphics

Basics - Why God. Mode? Joe Ennever 2 D, grid-based games with discrete time

Basics - Why God. Mode? Joe Ennever 2 D, grid-based games with discrete time steps One or more Agents following coded logic in a single-World environment

God. Mode Structures Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic

God. Mode Structures Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect Mike Hernandez Verification/Validation 6

Structures - Agents Zack Sheppard The active sprites in the World Move, speak, wave,

Structures - Agents Zack Sheppard The active sprites in the World Move, speak, wave, attack, interact, etc. Can be autonomous or governed by user input

Structures - Agent (Sample) Zack Sheppard Agent Frog { action void construct() { this:

Structures - Agent (Sample) Zack Sheppard Agent Frog { action void construct() { this: health is 1; this: speed is 1; } action void on. Turn() { move(World: last. Keyboard. Arrow()); World: clear. Recent. Keyboard. Input(); } action boolean has. Won() { this: _position: y() == (World: height() - 1); } }

Structures – Worlds Zack Sheppard The Framework for Agent interactions Acts as governor in

Structures – Worlds Zack Sheppard The Framework for Agent interactions Acts as governor in that it controls Agents Acts as toolbox in that it offers utility actions

Structures - World (Sample) Zack Sheppard World { know num health is 5; know

Structures - World (Sample) Zack Sheppard World { know num health is 5; know Frog character; action void construct() { this: width is 10; this: height is 20; } action void start. Round() { health--; character is new Frog(); this: add. Agent(character, new coordinate(4, 0), north); } action void on. Turn. End() { //Process adding the cars in here if( character: is. Dead() OR character == null) { start. Round(); } } action boolean should. End() { return (health < 0 OR character: has. Won()); } }

God. Mode Programming Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic

God. Mode Programming Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect Mike Hernandez - Verification/Validation 11

Programming - Syntax Nic Borensztein Primitive types: num, string, boolean, direction Arithmetic operators: +,

Programming - Syntax Nic Borensztein Primitive types: num, string, boolean, direction Arithmetic operators: +, -, *, /, ^, % and, or, not=, isa Collections and for each loops for each Agent hunter in collection. Of. Hunters { hunter: move(South); } 12

Programming - Syntax Nic Borensztein “is” vs. “=” Accessor operator “: ” “know” as

Programming - Syntax Nic Borensztein “is” vs. “=” Accessor operator “: ” “know” as declaration know num age is 0; know string name; action void set. Name(string name) { this: name is name; } 13

God. Mode Back-End Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic

God. Mode Back-End Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect Mike Hernandez - Verification/Validation 14

Back-End - Components Nic Borensztein Input: . god file. Consist of exactly one Agent

Back-End - Components Nic Borensztein Input: . god file. Consist of exactly one Agent and one World declaration. Lex creates token stream, YACC parses and compiles Generates Java code, complete with Agent and World classes Swing graphics engine and awt events 15

Back-End – Components Nic Borensztein Compiler: generates tree structure of statements, helps keep track

Back-End – Components Nic Borensztein Compiler: generates tree structure of statements, helps keep track of variable scope and order of statements. inserts and checks variables and actions against symbol table hash function to store identifier, type, scope 16

Back-End – Bibles Danny Hertz Similar to Libraries in Java Basic toolkits, expanded Agent

Back-End – Bibles Danny Hertz Similar to Libraries in Java Basic toolkits, expanded Agent and World data types Extends common 2 D platformer functionality Reusable, Timesaving Built-in Bibles (basic sound, movement, collisions) User generated Bibles (randomness, path following) 17

Back-End – Bibles Danny Hertz 18

Back-End – Bibles Danny Hertz 18

God. Mode Front-End Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic

God. Mode Front-End Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect Mike Hernandez Verification/Validation 19

Front-End - GUI Interaction Mike Hernandez The GUI provides the end -user a method

Front-End - GUI Interaction Mike Hernandez The GUI provides the end -user a method of interaction with the newly developed program Offers potential for configuration, errorreporting, pause functionality, and clean exits 20

Front-End - GUI Interaction Mike Hernandez The console allows users to obtain a real-time

Front-End - GUI Interaction Mike Hernandez The console allows users to obtain a real-time update of the World and all the Agents it contains Enable or disable functionality by selecting “Console” in the menu Populate the Console with data by selecting “Status” in the Menu All print(); statements will print to this location 21

Front-End - GUI Interaction Mike Hernandez The Options Dialog allows users to customize their

Front-End - GUI Interaction Mike Hernandez The Options Dialog allows users to customize their game experience Enable or disable visibility by selecting “Options” in the Menu Gridlines can be turned on or off Additional or designer-defined options are possible and can be curtailed to the needs of programmers 22

Front-End - GUI Interaction Mike Hernandez Users have the ability to pause (and later

Front-End - GUI Interaction Mike Hernandez Users have the ability to pause (and later unpause) the current game or simulation Access this functionality by selecting “[Un]Pause” from the Menu Provides programmers with additional debugging capabilities when combined with the Console and print(); statements 23

Front-End - GUI Interaction Mike Hernandez Worlds are found on the left of the

Front-End - GUI Interaction Mike Hernandez Worlds are found on the left of the frame, and represent the current (visual) state of the program Height, width, and grid size are accurate to God. Mode World definitions Offers potential notifications after the occurrence of predetermined events. 24

Front-End - GUI Interaction Mike Hernandez Agents can be found within the world, either

Front-End - GUI Interaction Mike Hernandez Agents can be found within the world, either mobile or stationary Location and status are displayed according to Agent definitions in the God. Mode program Updates in real time to reflect the changes undergone by all Agents on every turn 25

Conclusion Thank you! Questions? Comments? Complaints? Applause? 26

Conclusion Thank you! Questions? Comments? Complaints? Applause? 26