Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

2 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)

3 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.

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

5 Game Play - Features Minimap Menu

6 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

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

8 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

9 Game Design & Architecture

10 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’

11 Particle Systems – Editor and Scripts particle_system fireBall { quota2000 materialPE/explosion particle_width2 particle_height2 cull_eachfalse rendererbillboard billboard_typepoint emitter Ellipsoid { angle2 colour1 1 1 1 colour_range_start1 1 1 1 colour_range_end1 1 1 1 direction-1 0 0 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

12 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:

13 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:

14 Particle Systems - Environmental

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

16 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

17 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()

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

19 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

20 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

21 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)

22 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

23 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.

24 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)

25 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;}

26 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

27 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

28 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

29 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

30 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

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

32 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.

33 GUI System </Imageset> </GUIScheme>

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

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

36 GAME DEMO


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

Similar presentations


Ads by Google