GodMode Team OneUp 1. Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein...
-
date post
21-Dec-2015 -
Category
Documents
-
view
215 -
download
0
Transcript of GodMode Team OneUp 1. Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein...
GodModeGodModeTeam OneUp
1
Team Team OneUpOneUp
Joe Ennever - Systems Integrator
Zack Sheppard - Language Guru
Nic Borensztein - Project Manager
Danny Hertz - Systems Architect
Mike Hernandez - Verification/Validation
2
GodMode - GodMode - BasicsBasics
Joe Ennever - Systems Integrator
Zack Sheppard - Language Guru
Nic Borensztein - Project Manager
Danny Hertz - Systems Architect
Mike Hernandez - Verification/Validation
3
Basics - Why GodMode?Joe Ennever
Every CS Major Every CS Major wants to code video wants to code video gamesgames
High-level High-level programming programming language for language for designing 2D designing 2D platformsplatforms
Spend time working Spend time working on rules and AI on rules and AI rather than graphicsrather than graphics
Basics - Why GodMode?Joe Ennever
2D, grid-based 2D, grid-based games with discrete games with discrete time stepstime steps
One or more Agents One or more Agents following coded following coded logic in a single-logic in a single-World environmentWorld environment
GodMode - GodMode - StructuresStructures
Joe Ennever - Systems Integrator
Zack Sheppard - Language Guru
Nic Borensztein - Project Manager
Danny Hertz - Systems Architect
Mike Hernandez - Verification/Validation
6
Structures - AgentsZack Sheppard
The active sprites in The active sprites in the Worldthe World
Move, speak, wave, Move, speak, wave, attack, interact, etc.attack, interact, etc.
Can be autonomous Can be autonomous or governed by user or governed by user inputinput
Structures - Agent (Sample)Zack SheppardAgent Frog {Agent Frog { action void construct() { action void construct() { this:health is 1; this:health is 1; this:speed is 1; this:speed is 1; } } action void onTurn() { action void onTurn() { move(World:lastKeyboardArrow()); move(World:lastKeyboardArrow()); World:clearRecentKeyboardInput(); World:clearRecentKeyboardInput(); } } action boolean hasWon() { action boolean hasWon() { this:_position:y() == (World:height() - 1); this:_position:y() == (World:height() - 1); } }}}
The Framework for The Framework for Agent interactionsAgent interactions
Acts as governor in Acts as governor in that it controls that it controls AgentsAgents
Acts as toolbox in Acts as toolbox in that it offers utility that it offers utility actionsactions
Structures – WorldsZack Sheppard
Structures - World (Sample)Zack SheppardWorld {World { know num health is 5; know num health is 5; know Frog character; know Frog character; action void construct() { action void construct() { this:width is 10; this:width is 10; this:height is 20; this:height is 20; } } action void startRound() { action void startRound() { health--; health--; character is new Frog(); character is new Frog(); this:addAgent(character, new coordinate(4, 0), north); this:addAgent(character, new coordinate(4, 0), north); } } action void onTurnEnd() { action void onTurnEnd() { //Process adding the cars in here //Process adding the cars in here if( character:isDead() OR character == null) { if( character:isDead() OR character == null) { startRound(); startRound(); } } } } action boolean shouldEnd() { action boolean shouldEnd() { return (health < 0 OR character:hasWon()); return (health < 0 OR character:hasWon()); } }}}
GodMode - GodMode - ProgramminProgrammingg
11
Joe Ennever - Systems Integrator
Zack Sheppard - Language Guru
Nic Borensztein - Project Manager
Danny Hertz - Systems Architect
Mike Hernandez - Verification/Validation
Primitive types: Primitive types: num, string, num, string, boolean, directionboolean, direction
Arithmetic operators: Arithmetic operators: +, -, *, +, -, *, /, ^, %/, ^, %
and, or, not, not=, is, isaand, or, not, not=, is, isa
Collections and Collections and for eachfor each loops loops
for each Agent hunter in for each Agent hunter in collectionOfHunters {collectionOfHunters { hunter:move(South); hunter:move(South);}}
Programming - SyntaxNic Borensztein
12
““isis” vs. “” vs. “==””
Accessor operator “Accessor operator “::””
““knowknow” as declaration” as declaration
know num age is 0;know num age is 0;know string name;know string name;action void action void setName(string name) {setName(string name) { this:name is name; this:name is name;}}
Programming - SyntaxNic Borensztein
13
14
GodMode - GodMode - Back-EndBack-End
Joe Ennever - Systems Integrator
Zack Sheppard - Language Guru
Nic Borensztein - Project Manager
Danny Hertz - Systems Architect
Mike Hernandez - Verification/Validation
Back-End - ComponentsNic Borensztein
Input: .god file. Consist of Input: .god file. Consist of exactly one Agent and one exactly one Agent and one World declaration.World declaration.
Lex creates token stream, Lex creates token stream, YACC parses and compilesYACC parses and compiles
Generates Java code, Generates Java code, complete with Agent and complete with Agent and World classesWorld classes
Swing graphics engine and Swing graphics engine and awt eventsawt events
15
Back-End – ComponentsNic Borensztein
Compiler:Compiler:
generates tree structure of generates tree structure of statements, helps keep track statements, helps keep track of variable scope and order of of variable scope and order of statements.statements.
inserts and checks variables inserts and checks variables and actions against symbol and actions against symbol tabletable
hash function to store hash function to store identifier, type, scopeidentifier, type, scope
16
Similar to Libraries in JavaSimilar to Libraries in Java
Basic toolkits, expanded Agent and World data Basic toolkits, expanded Agent and World data typestypes
Extends common 2D platformer functionalityExtends common 2D platformer functionality
Reusable, TimesavingReusable, Timesaving
Built-in Bibles (basic sound, movement, collisions)Built-in Bibles (basic sound, movement, collisions)
User generated Bibles (randomness, path User generated Bibles (randomness, path following)following)
Back-End – BiblesDanny Hertz
17
Back-End – BiblesDanny Hertz
18
GodMode - GodMode - Front-EndFront-End
Joe Ennever - Systems Integrator
Zack Sheppard - Language Guru
Nic Borensztein - Project Manager
Danny Hertz - Systems Architect
Mike Hernandez - Verification/Validation
19
The GUI provides the The GUI provides the end-user a method of end-user a method of interaction with the interaction with the newly developed newly developed programprogram
Offers potential for Offers potential for configuration, error-configuration, error-reporting, pause reporting, pause functionality, and functionality, and clean exitsclean exits
Front-End - GUI InteractionMike Hernandez
20
The console allows users to The console allows users to obtain a real-time update of obtain a real-time update of the World and all the Agents the World and all the Agents it containsit contains
Enable or disable Enable or disable functionality by selecting functionality by selecting “Console” in the menu“Console” in the menu
Populate the Console with Populate the Console with data by selecting “Status” in data by selecting “Status” in the Menuthe Menu
All All print();print(); statements will statements will print to this locationprint to this location
Front-End - GUI InteractionMike Hernandez
21
The Options Dialog allows The Options Dialog allows users to customize their users to customize their game experiencegame experience
Enable or disable visibility by Enable or disable visibility by selecting “Options” in the selecting “Options” in the MenuMenu
Gridlines can be turned on or Gridlines can be turned on or offoff
Additional or designer-defined Additional or designer-defined options are possible and can options are possible and can be curtailed to the needs of be curtailed to the needs of programmersprogrammers
Front-End - GUI InteractionMike Hernandez
22
Users have the ability to Users have the ability to pause (and later unpause) the pause (and later unpause) the current game or simulationcurrent game or simulation
Access this functionality by Access this functionality by selecting “[Un]Pause” from selecting “[Un]Pause” from the Menuthe Menu
Provides programmers with Provides programmers with additional debugging additional debugging capabilities when combined capabilities when combined with the Console and with the Console and print();print(); statements statements
Front-End - GUI InteractionMike Hernandez
23
Worlds are found on the left Worlds are found on the left of the frame, and represent of the frame, and represent the current (visual) state of the current (visual) state of the programthe program
Height, width, and grid size Height, width, and grid size are accurate to GodMode are accurate to GodMode World definitionsWorld definitions
Offers potential notifications Offers potential notifications after the occurrence of after the occurrence of predetermined events.predetermined events.
Front-End - GUI InteractionMike Hernandez
24
Agents can be found within Agents can be found within the world, either mobile or the world, either mobile or stationarystationary
Location and status are Location and status are displayed according to Agent displayed according to Agent definitions in the GodMode definitions in the GodMode programprogram
Updates in real time to reflect Updates in real time to reflect the changes undergone by all the changes undergone by all Agents on every turnAgents on every turn
Front-End - GUI InteractionMike Hernandez
25
ConclusionConclusion
Thank you!Thank you!
Questions?Questions?
Comments?Comments?
Complaints?Complaints?
Applause?Applause?
26