SE%20Team%209%20GlobalFlyer - PowerPoint PPT Presentation

About This Presentation
Title:

SE%20Team%209%20GlobalFlyer

Description:

SE Team 9. GlobalFlyer. Cole Hoosier. Ryan Hannebaum. Leanne Gray. Alex Stampbach. Project Statement ... GlobalFlyer allows a player to fly a Wright brothers ... – PowerPoint PPT presentation

Number of Views:36
Avg rating:3.0/5.0
Slides: 51
Provided by: leann8
Category:

less

Transcript and Presenter's Notes

Title: SE%20Team%209%20GlobalFlyer


1
SE Team 9GlobalFlyer
  • Cole HoosierRyan HannebaumLeanne GrayAlex
    Stampbach

2
Project Statement
  • GlobalFlyer allows a player to fly a Wright
    brothers-style airplane in 3D space using the
    OGRE graphic rendering engine and the FMOD sound
    system.

3
Iteration Plans
Fixup 1 Get music and sound effects working
again 2 Get collision detection with buildings
working 3 Update Ogre library versions Visual
Environment 1 Add hovering objects to the
world 2 Add proximity detection to hovering
objects 3 Modify texture of hovering objects
based on proximity User Interface 1 Add mouse
control of camera 2 Add visually-appealing
digital readouts of data the user might want 3
Add the ability to toggle sound, gui, etc.
4
GlobalFlyer Web Site
  • http//seteam9.cis.ksu.edu/

5
The Plan and Analysis
6
Plan for Iteration 3
7
Comparisons of Effort
8
(No Transcript)
9
BCW ACW Est Comp Actual Comp
Iter 1 Fixup 1020 720 2/26/2007 2/3/2007
Iter 1 Visual 660 390 2/26/2007 2/10/2007
Iter 1 UI 600 1470 2/26/2007 2/23/2007
Pres 4 180 240 2/27/2007 2/23/2007
Iter 2 Fixup VE
- initial research 180 120 3/6/2007 3/5/2007
- create slides 120 60 3/13/2007 3/12/2007
- collision detection with buildings 300 240 3/20/2007 3/10/2007
- proximity detection with bubbles 120 60 3/27/2007 3/10/2007
- create OCL 120 120 3/29/2007 3/26/2007
- test code 60 60 3/30/2007 3/26/2007
- integrate code 60 60 4/1/2007 3/26/2007
Iter 2 UI
- initial research 180 120 3/6/2007 3/5/2007
- create slides 120 60 3/13/2007 3/12/2007
- prettify text 240 600 3/20/2007 3/26/2007
- test readout 120 90 3/27/2007 3/26/2007
- integrate code 120 30 3/30/2007 3/26/2007
Pres 5
- assemble presentation 240 240 4/1/2007 4/1/2007
Open House
- prepare display 240 330 4/10/2007 4/9/2007
- rehearse/test presentation 120 0 4/13/2007 4/9/2007
Iter 3 Update Ogre libraries
- update libraries and fix code 360 480 4/22/2007 4/23/2007
- test code and create slides 120 120 4/27/2007 4/27/2007
Iter 3 Visual 800 0 4/27/2007 3/10/2007
Iter 3 UI
- study methods of toggling settings 240 180 4/22/2007 4/25/2007
- implement toggling test 120 120 4/27/2007 4/25/2007
Pres 6
- assemble presentation 240 240 4/29/2007 4/29/2007
Final Docs CD 240 180 5/4/2007 4/29/2007
Total 6920 6330
10
Earned Value
  • EV Budgeted cost of Work Performed over Budgeted
    at Completion
  • Shows our the gradual completion of tasks over
    time

11
Schedule Performance Index
  • SPI Budgeted Cost of Work Performed over
    Budgeted Cost of Work Schedule
  • Shows that we are always on or ahead of schedule

12
Schedule Variance
  • SV Budgeted Cost of Work Performed minus
    Budgeted Cost of Work Schedule
  • Show how far ahead of schedule (or right on
    target) we were

13
Cost Performance Index
  • CPI Budgeted Cost of Work Performed over Actual
    Cost of Work Performed
  • Show us under budget and over budget but finally
    ending under (just barely)

14
Cost Variance
  • CV Budgeted Cost of Work Performed minus Actual
    Cost of Work Performed
  • Show just how much over and under budget we were

15
OCL
16
OCL
  • Areas that lend themselves well to OCL
    specifications
  • The airplane cannot fly beneath the ground
  • The FMOD sound system shouldn't be re-initialized
  • The bubbles and buildings must be within the
    boundaries of the world
  • Checking the win-condition for a level,
    theoretically we would load a new level after
    hitting all targets

17
OCL
  • The airplane cannot fly beneath the ground
  • context OgreCharacterupdate(elapsedTime,
    input) void
  • post self.raySceneQuery-gtforAll(
    worldFragment.singleIntersection.y lt
    self.mMainNode.getPosition().y )

18
OCL
  • The FMOD sound system shouldn't be re-initialized
  • context CFModInitSoundSystem() bool
  • pre self.initialized false
  • post self.initialized true

19
OCL
  • The bubbles and buildings must be within the
    boundaries of the world
  • context SampleApplicationcreateScene() void
  • post self.buildings.getBoundingBox-gtforAll( getM
    inimum.x gt 0 and getMinimum.z gt 0 and
    getMaximum.x lt 10000 and getMaximum.z lt
    10000 )
  • post self.bubbles.getBoundingBox-gtforAll( getMin
    imum.x gt 0 and getMinimum.z gt 0 and
    getMaximum.x lt 10000 and getMaximum.z lt
    10000 )

20
OCL
  • Checking the win-condition for a level --
    theoretically we would load a new level after
    hitting all targets
  • context OgreCharactertargetsRemaining() int
  • result self.targetHit-gtcount(false)
  • context OgreCharactercheckWin() bool
  • result self.targetsRemaining 0
  • context SampleListenerframeStarted(frameEvent)
    void
  • post self.mChar.checkWin false

21
Testing Code
void SoundPlay() debug ("SoundPlay
1") if (m_pSound ! NULL)
debug ("SoundPlay 2a") m_soundChannel
FSOUND_PlaySound(FSOUND_FREE, m_pSound)
else debug ("SoundPlay 2b.")
debug ("SoundPlay 3 (last)")
22
Testing Output
AirplaneAirplane (only) AirplaneGetPosit
(only) AirplaneGetRelVeloc (only) AirplaneGetV
eloc (only) AirplanecheckWin (only) Airplanein
Obstacle 1 AirplaneinObstacle
2 AirplaneinObstacle 3a AirplaneinObstacle
3b. AirplaneinObstacle 4a AirplaneinObstacle
4b. AirplaneinObstacle 5a AirplaneinObstacle
5b. AirplaneinObstacle 6 (last)
23
Exceptions to C1
SoundInitSoundSytem 3a -- would need an invalid
version of fmod SoundInitSoundSytem 4a -- would
need a bad version of fmod SoundLoad 3a -- fmod
would have to screw up to hit this
case SoundMute 2b. -- fmod would have to screw
up to hit this case SoundPause 2b. -- fmod
would have to screw up to hit this
case SoundSetLoop 2b. -- fmod would have to
screw up to hit this case
bool SoundLoad(char strName) debug
("SoundLoad 1") bool retval false // set
to 'true' if successfully loaded // if FMOD
isn't loaded, or strName is invalid, we can't
load a sample if (initialized
strName) debug ("SoundLoad
2a") m_pSound FSOUND_Sample_Load(FSOUND_FREE,
strName, 0, 0, 0) // make sure we got a valid
sound pointer if (!m_pSound ) debug
("SoundLoad 3a") // bad news, bail out with
an error message DisplayError() ..
24
UML Models
25
FrameStarted Sequence Diag
26
Old Class Diagram Overview
27
New Class Diagram
Extended Camera
GlobalFlyer
ExtendedFrame Listener
Sound
Airplane
Level Manager
PhysicsEngine
28
GlobalFlyer
29
ExtendedFrameListener
30
ExtendedCamera
31
LevelManager
32
Airplane
33
PhysicsEngine
34
Sound
35
New Featuresand Updates
36
Library Update
  • Ogre has updated from 1.2.3 to 1.4.0 during the
    year. We thought it might be nice to start next
    years team with updated code. ?

37
Wheres the Keyboard?
using namespace OIS void AirplaneUpdate (Real
elapsedTime, Keyboard keyboard, Mouse mouse)
if ( keyboard-gtisKeyDown(KC_W) ).
airplane.h,c
38
LevelManager
  • Sets up the world
  • Bubbles
  • Buildings
  • Format follows
  • int buildingPositionsMAX_LEVELMAX_BUILDINGS6
  • //level 2
  • 5000, 0, 6000, 50, 950, 3000, // x, y, z,
    width, height, length
  • 10000, 0, 6000, 50, 950, 3000, // 1
  • 6000, 0, 5000, 3000, 950, 50, // 2
  • 6000, 0, 10000, 3000, 950, 50,
  • 6000, 1000, 6000, 3000, 50, 3000,
  • 0, 0, 0, 0, 0, 0, // 5

39
LevelManager
40
LevelManager
41
Camera Controls
if (mKeyboard-gtisKeyDown (KC_F1)
mExCamera) mExCamera-gtSetTightness (1.0f)
else if (mKeyboard-gtisKeyDown (KC_F2)
mExCamera) mExCamera-gtSetTightness (0.1f)
else if (mKeyboard-gtisKeyDown (KC_F3)
mExCamera) mExCamera-gtSetTightness (0.05f)
else if (mKeyboard-gtisKeyDown (KC_F4)
mExCamera) ..
extended_frame_listener.cpp
42
Camera Controls
43
Sight Sound
  • bind keys to toggle cockpit and sound
  • create guard variable to ensure only a single
    toggle per click

44
Toggle Cockpit
F9
45
Toggle Cockpit
  • Void ExtendedFrameListenersetTextArea(OgreOve
    rlay olay)
  • overlay olay
  • //toggle GUI
  • if (mInputDevice-gtisKeyDown (KC_F9)
    keyCountGUI gt 0.5)
  • if (overlay-gtisVisible())
  • overlay-gthide()
  • else
  • overlay-gtshow()
  • keyCountGUI 0

46
Toggle Sound
F10
  • (demonstration)

47
Toggle Sound
  • if (mKeyboard-gtisKeyDown (KC_F10) mChar
    keyCountSound gt 0.5)
  • bool enabled
  • enabled mChar-gtToggleSound()
  • keyCountSound 0
  • if (enabled)
  • status-gtsetCaption("Sound Enabled")
  • else
  • status-gtsetCaption("Sound Disabled")
  • else if (keyCountSound gt 4.0)
  • status-gtsetCaption("")

void AirplanetoggleSound() soundEnabled
!soundEnabled musicSound.Mute() if
(soundEnabled) if (crashed)
crashSound.Mute() else
engineSound.Play() else if
(crashSoundStarted) crashSound.Mute()
else engineSound.Stop()
48
Protection from Rapid-Fire
  • key press was registering every frame (up to 250
    times per second)
  • Introduced timer to guard against this rapid-fire
    toggling
  • once toggle is registered, cannot be registered
    again for 0.5 second

49
The Result
50
Who has Questions?
  • -Images from
  • texasbestgrok.mu.nu/images/GF2.jpg
Write a Comment
User Comments (0)
About PowerShow.com