CSE 786 Game Presentation June 9, 2009 Game: “Little Robot’s Adventure” Team: OgreNoName Hiroshi Hayashi Bryan Linthicum Brett Kizer.

Slides:



Advertisements
Similar presentations
Introduction to Eclipse. Start Eclipse Click and then click Eclipse from the menu: Or open a shell and type eclipse after the prompt.
Advertisements

Introduction to Video Game Design BBrewer Fall 2013.
Video Game Design Lesson 1. Game Designer Person involved in the development of a video game Person involved in the development of a video game Usually.
MANIFEST DESTINY 560group3 Abe Kim David Straily Jarrod Freeman Abdul Mod-Rokbi “The future of RTS games...”
Debugging What can debuggers do? Run programs Make the program stops on specified places or on specified conditions Give information about current variables’
Visual Basic 2010 How to Program. © by Pearson Education, Inc. All Rights Reserved.2.
Visual Basic 2010 How to Program Reference: Instructor: Maysoon Bin Duwais slides Visual Basic 2010 how to program by Deitel © by Pearson Education,
A Guide to Oracle9i1 Creating an Integrated Database Application Chapter 8.
Group: RO3 1 MMORPG Networked Game Advised by Prof. David Rossiter Date: 29 April 2006.
Hong Kong University of Science and Technology Final Year Project 2003  2004 Presentation Presented by Group: HO2 Chan Wing Yuen Lee Ka To Advised by.
Contents Overview Major Features Major Components User Interface Gameplay Testing UML Timeline.
Games Development Practices Semester 2 Overview CO2301 Games Development 1 Week 14.
© 2006 ITT Educational Services Inc. CD230 Architectural Design & Drafting: Unit 1 Slide 1 The DesignCenter and VIZ Render in ADT.
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
CHAPTER 17 Creating an Interactive 3D Environment © 2008 Cengage Learning EMEA.
Graphics Standard Grade Computing. Graphics Package n A graphics package is another General Purpose Package. n It is used to draw pictures on the monitor.
GameMaker.  A lot of Different Definitions  Easier to Say What is NOT a Game  Movie is Not a Game  No Active Participation  Final Outcome is Fixed.
Games Development 2 Entity / Architecture Review CO3301 Week
Dakota Humphries (Project Lead) Thomas Impellitteri (Tech Lead) Daryl McGhee II (Design Lead) Keith Rosier (Asset Lead)
CSE 381 – Advanced Game Programming 3D Game Architecture.
Creative Commons Attribution 3.0 creativecommons.org/licenses/by/3.0 Key Abstractions in Game Maker Foundations of Interactive Game Design Prof. Jim Whitehead.
Open-Source Graphics Development with the Delta3D Game Engine Chris Osborn Lead Software Engineer Delta3D, MOVES Institute
Creating A 3-D Game With Spark Engine Lauren Bissett, Dan Maguire, and Nicholas Woodfield.
CIS 300 Spring Introductions The Mastrix team: –Jim Babcock –Eric Hayes –Christian Montoya –Yi Xu.
Fundamentals of Game Design
Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output.
© 2010 Delmar, Cengage Learning Chapter 3: Working with Symbols and Interactivity.
SuperChair Productions proudly presents… PYGAME © 2006 SuperChair Productions. All rights reserved.
UFCFS D Technologies for the Web Unity 3D: Review of Topics and Related Concepts.
GameSalad Fundamentals. Introduction to Game-Authoring System  Objectives  Define game-authoring system.  Understand the components of logic and assets.
The Recyclables Designed by Red Handed. Red Handed Sanya Mayes Phylicia Tindal- Stevens Connor Leonhardt Jimmie Aaron.
GAME:IT Helicopter Objectives: Review skills in making directional sprites Create objects that shoot and destroy for points Create random enemies on the.
Learning Unity. Getting Unity
Creating Graphical User Interfaces (GUI’s) with MATLAB By Jeffrey A. Webb OSU Gateway Coalition Member.
11 Lecture 3 Particle Effects References: [1] Gregory Junker, Pro OGRE 3D Programming, Apress, 2006 [2] Ogre Tutorials – Ogre Wiki
Breakfast Battle Kevin Brohaugh Matt Griffin Matt Kern Nick Obee Eric Witte.
2.1. T HE G AME L OOP Central game update and render processes.
Game Programming Patterns Event Queue From the book by Robert Nystrom
CSE 380 – Computer Game Programming GUIs for Games.
Guide to Programming with Python Chapter Twelve Sound, Animation, and Program Development: The Astrocrash Game.
Games Development Game Architecture: Entities CO2301 Games Development 1 Week 22.
Team 2: Gamers & Coders Final Sprint Presentation.
UFCEK-20-3Web Games Programming Unity 3D: Review of Topics Publishing for the Web.
Rawhide Frontier Ctrl + Y John Battagline, Paul Betts, Aaron Cardwell, Jordan Lehmiller, Kyle Moore, John Scott.
Team 2: Gamers & Coders ‘ The Last Warrior’ Android Game Application By Chinmay Kulkarni, Darshan Shinde, Matt Frey, Peng Ye, Satoshi Inoue & Shachi Chandrashekhar.
Games Development 2 Entity Update & Rendering CO3301 Week 2, Part 1.
Game Design and Dev Ogre3D Overview
GUI development with Matlab: GUI Front Panel Components GUI development with Matlab: Other GUI Components 1 Other GUI components In this section, we will.
The Last Warrior Team 2 - G amers & C oders Shachi Chandrashekhar, Matt Frey, Satoshi Inoue, Chinmay Kulkarni, Darshan Shinde, Peng Ye.
Oct 021 Outline What is a widget? Buttons Combo boxes Text components Message boxes.
 A plan of attack for your games content  Or (more specifically)  A detailed description of all games mechanics, objects, characters, stats, ect… that.
Game Maker Tutorial.
Games Development 1 Review / Revision CO2301 Games Development 1 Semester 2.
Sega 500 Scripted events and Sequences Jeff “Ezeikeil” Giles
The main screen was refurbished to be fitted more logically. The life meter is the circle of blood. The more damage you take the blood gets knocked down.
T HE G AME L OOP. A simple model How simply could we model a computer game? By separating the game in two parts: – the data inside the computer, and –
Game Maker Evil Clutches.
2-D Game Design Pitch: Tower Defense 2D Erik Gilson Brian McClure.
CS F EBRUARY 9, 2016 P ARTS G AME A RCHITECTURE, M EMORY, AND I/O S YSTEMS G AME T IMING G AME T IMING G AME P ARALLELISM G AME P ARALLELISM.
JavaScript and Ajax (JavaScript Environment) Week 6 Web site:
The Stingray Example Program CMT3311. Stingray - an example 2D game May be useful as a simple case study Most 2D games need to solve generic problems.
Dive Into® Visual Basic 2010 Express
Quick Intro to Unity Lecture 2.
Fireball Prepared by: Mohammad Abu-Hasan & Oday Ashour
PYGAME.
Games Development Game Architecture: Entities
Unity Game Development
Games Development 1 Review / Revision
Games Development 2 Entity / Architecture Review
Presentation transcript:

CSE 786 Game Presentation June 9, 2009 Game: “Little Robot’s Adventure” Team: OgreNoName Hiroshi Hayashi Bryan Linthicum Brett Kizer

Game Overview What is “Little Robot’s Adventure”? What is “Little Robot’s Adventure”? Game Genre: ‘Fantasy RPG’ (Role Playing Game) Game Genre: ‘Fantasy RPG’ (Role Playing Game) What is the game objective? What is the game objective? Kill all monsters (enemies) in the player’s level. Kill all monsters (enemies) in the player’s level. How many players? How many players? Single player (no networking) Single player (no networking)

Game Overview - Story Player is a robot, starting in a burning village. Player is a robot, starting in a burning village. Ogres and Ninjas are wrecking havoc to the local population. Ogres and Ninjas are wrecking havoc to the local population. Starting NPC gives player the mission to kill all enemies in the region. Starting NPC gives player the mission to kill all enemies in the region. Speaking with other NPCs gives the player more information about the world and storyline. Speaking with other NPCs gives the player more information about the world and storyline.

Based off of… Diablo II (2000) – Blizzard Entertainment Diablo II (2000) – Blizzard Entertainment Enemy Status Player HP/MP Player Experience Player Skill

Game Play - Features Minimap Menu

Game Play - Features Player Movements (A,S,D,W) Player Movements (A,S,D,W) Fixed game play camera (Diablo II style) Fixed game play camera (Diablo II style) Updates player / NPC locations on Mini-map Updates player / NPC locations on Mini-map Disable/Enable spell icons when recharging Disable/Enable spell icons when recharging Ability to speak with NPCs Ability to speak with NPCs NPCs tell the story of the game NPCs tell the story of the game Ability to return to starting Menu Ability to return to starting Menu

Level Editor - Features Level Editor GUI Map Properties Object Selection List

Level Editor - Features Moveable Editor Window Moveable Editor Window Camera movements (A,S,D,W) Camera movements (A,S,D,W) Camera rotation (right mouse click/drag) Camera rotation (right mouse click/drag) (Select, Place, Move, Rotate, Scale) Objects (Select, Place, Move, Rotate, Scale) Objects Display # of objects on map and current FPS Display # of objects on map and current FPS Save / Load maps for Editing and Playability Save / Load maps for Editing and Playability File overwrite confirmation File overwrite confirmation Ability to return to starting Menu Ability to return to starting Menu

Game Design & Architecture

State Diagram Intro Main Menu Gameplay State Finished loading CreditExit Level Editor Select ‘New’ or ‘Load’ Game Select ‘Level Editor’ Select ‘Return to Main Menu’ Select ‘Credits’ Select ‘Quit Game’ Automatically return to Menu upon completion Select ‘Quit to Main Menu’ Select ‘Quit Game’

Particle Systems – Editor and Scripts particle_system fireBall { quota2000 materialPE/explosion particle_width2 particle_height2 cull_eachfalse rendererbillboard billboard_typepoint emitter Ellipsoid { angle2 colour colour_range_start colour_range_end direction emission_rate2000 position0 0 0 velocity2 velocity_min2 velocity_max2 time_to_live0.2 time_to_live_min0.2 time_to_live_max0.4 duration0 duration_min0 duration_max0 repeat_delay0 repeat_delay_min0 repeat_delay_max0 width6 height0 depth6 } OGRE Particle Editor

Particle Systems - Spells Passive Spell - Local to player - Restores 20% of players Hit Points (HP) - Uses 100% of magic Passive Spell - Local to player - Damage to player reduced by 50% while spell is active - Uses 100% of magic Heal:Barrier:

Particle Systems - Spells Damaging Spell - Projectile - Deals 25% damage to enemy - Uses 50% of magic Damaging Spell - Local to player - Deals 25% damage to enemy - Uses 100% of magic Fire Ball: Ice Attack:Area Attack:

Particle Systems - Environmental

Audio & Sound Effects: SoundManager SoundManager Instance Sound1 Channel1 ……… Sound2 Channel3Channel2Channel4 ……… ………………… CreateSound() PlaySound()

Audio & Sound Effects: SoundManager Can create: Can create: 2D Streams (single-shot or looped) 2D Streams (single-shot or looped) 3D Sounds (single-shot or looped) 3D Sounds (single-shot or looped) 2D Streams 2D Streams Call PlaySound() once->sound plays on channel and then channel is set to INVALID Call PlaySound() once->sound plays on channel and then channel is set to INVALID 3D Sounds 3D Sounds Based on Listener (Player) and Sound position Based on Listener (Player) and Sound position Sound output needs to periodically update (SoundManager FrameStarted function) Sound output needs to periodically update (SoundManager FrameStarted function) SoundManager maintains array of active channels, uses sound position and listener position/orientation to determine speaker output SoundManager maintains array of active channels, uses sound position and listener position/orientation to determine speaker output

Entity Class Hierarchy BaseEntity Scene Node Velocity 3D Mesh MonsterProjectile Health Speed AI State Particle Effect Speed BulletFlame FrostBolt FireBall Player Ogre EliteOgre NinjaNPC  attack()  die()  fire()  think()  spawn()

Entity Class Hierarchy Advantages: Advantages: Allows shared code between object entity types Allows shared code between object entity types

Entity Class Hierarchy Advantages: Advantages: Allows shared code between object entity types Allows shared code between object entity types Derived class entities are naturally more specific in terms of properties, i.e. an Ogre is a more specific kind of Monster Derived class entities are naturally more specific in terms of properties, i.e. an Ogre is a more specific kind of Monster

Entity Class Hierarchy Advantages: Advantages: Allows shared code between object entity types Allows shared code between object entity types Derived class entities are naturally more specific in terms of properties, i.e. an Ogre is a more specific kind of Monster Derived class entities are naturally more specific in terms of properties, i.e. an Ogre is a more specific kind of Monster When we deal with entities in other subsystems, we can pass around a BaseEntity* pointer that contains the interface necessary for that subsystem, i.e.: When we deal with entities in other subsystems, we can pass around a BaseEntity* pointer that contains the interface necessary for that subsystem, i.e.: pBaseEntity->mPosition pBaseEntity->mPosition pBaseEntity->mVelocity pBaseEntity->mVelocity pBaseEntity->collideable pBaseEntity->collideable are all that is needed from physics perspective are all that is needed from physics perspective

Entity Manager Each concrete class on previous slide has an associated factory within the FactoryDictionary Each concrete class on previous slide has an associated factory within the FactoryDictionary FactoryDictionary EntityFactory EntityManager vector mEntityList ogre01ninja01ogre02ogre03…bullet01 deque mDeletionList ogre01…npc02  installFactory (factoryType t)  findFactory (string ClassName)  createEntity (string ClassName)  Map :  Create ()  Destroy ()  Create ()  Destroy ()  Create ()  Destroy ()  Create ()  Destroy ()  Create (string className)  Destroy (BaseEntity* e)

Entity Manager Entity Manager think ( ) think ( ) Defined in BaseEntity interface Defined in BaseEntity interface EntityManager checks current time against think intervals every frame EntityManager checks current time against think intervals every frame Intervals specified within think ( ) functions, i.e.: Intervals specified within think ( ) functions, i.e.: Ninja::think ( ) {... setNextThink ( 0.1 ); //think again in 0.1s (100 ms) } All AI and decision making goes into think ( ) or is called from within All AI and decision making goes into think ( ) or is called from within

EntityManager EntityManager Advantages: Advantages: Allows entities to update less frequently than every frame and also vary the interval. Allows entities to update less frequently than every frame and also vary the interval.

EntityManager EntityManager Advantages: Advantages: Allows entities to update less frequently than every frame and also vary the interval. Allows entities to update less frequently than every frame and also vary the interval. Examples: Examples: If the player is very far away, we can think less often (performance boost) If the player is very far away, we can think less often (performance boost)

EntityManager EntityManager Advantages: Advantages: Allows entities to update less frequently than every frame and also vary the interval. Allows entities to update less frequently than every frame and also vary the interval. Examples: Examples: If the player is very far away, we can think less often (performance boost) If the player is very far away, we can think less often (performance boost) Control timing of events, i.e.: Control timing of events, i.e.: { …. …. setThinkFunc (&deathLimbo); // this function begins setThinkFunc (&deathLimbo); // this function begins // removing entity // removing entity setNextThink ( 8.0 ); // think in 8.0 seconds setNextThink ( 8.0 ); // think in 8.0 seconds return; return;}

Console System Console Variables Console Variables Variables alterable via in-game console (~) to control gameplay aspects such as: Variables alterable via in-game console (~) to control gameplay aspects such as: Player speed Player speed Monster damage Monster damage

Console System Console Variables Console Variables Variables alterable via in-game console (~) to control gameplay aspects such as: Variables alterable via in-game console (~) to control gameplay aspects such as: Player speed Player speed Monster damage Monster damage Allows rapid fine-tuning of gameplay attributes Allows rapid fine-tuning of gameplay attributes

Console System Console Variables Console Variables Variables alterable via in-game console (~) to control gameplay aspects such as: Variables alterable via in-game console (~) to control gameplay aspects such as: Player speed Player speed Monster damage Monster damage Allows rapid fine-tuning of gameplay attributes Allows rapid fine-tuning of gameplay attributes Globals defined anywhere in code, i.e.: Globals defined anywhere in code, i.e.: ConVar cvarOgreAttackRate ( “ogre_rate”, //variable name in console “ogre_rate”, //variable name in console “2.0”, //initial value “2.0”, //initial value “ogre’s attack rate in hits/sec” //short description “ogre’s attack rate in hits/sec” //short description); cvarOgreAttackRate.getReal(); //returns real 2.0

Console System Console Commands Console Commands Accessible via console just like Variable Accessible via console just like Variable Is linked to C++ call-back function Is linked to C++ call-back function

Console System Console Commands Console Commands Accessible via console just like Variable Accessible via console just like Variable Is linked to C++ call-back function Is linked to C++ call-back function Examples: Examples: spawn -- spawns named entity in front of player spawn -- spawns named entity in front of player kill -- kills currently selected entity kill -- kills currently selected entity move x y z -- moves player to given coordinates move x y z -- moves player to given coordinates

Monster AI Managing of this Managing of this state is controlled in state is controlled in Monster class Monster class

GUI System Crazy Eddies GUI (aka. CEGUI) Crazy Eddies GUI (aka. CEGUI) Use XML scripts to create GUI Use XML scripts to create GUI.Schemelist of Widget names & namespace.Schemelist of Widget names & namespace.Layoutposition & properties of each Widget.Layoutposition & properties of each Widget.Looknfeellist of Image names & sizes.Looknfeellist of Image names & sizes Some CEGUI widget types: Some CEGUI widget types: Buttons, Static Image/Text, DropMenu, Lists, etc. Buttons, Static Image/Text, DropMenu, Lists, etc. In code, ‘clickable’ items need to be ‘subscribed’ to the CEGUI listener in order to function. In code, ‘clickable’ items need to be ‘subscribed’ to the CEGUI listener in order to function.

GUI System </Imageset> </GUIScheme>

GUI System CAUTION... CAUTION... Could not open file: SavedMaps.txt Existing map list cannot be shown! </Property> </GUILayout>

GUI System Widget 1 Widget 2 Widget 3 Widget 4 Widget 5 Widget 0

GAME DEMO