se team 9 globalflyer

45
SE Team 9 GlobalFlyer Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach

Upload: sybil-arnold

Post on 01-Jan-2016

17 views

Category:

Documents


0 download

DESCRIPTION

SE Team 9 GlobalFlyer. Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach. 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. Iteration Plans. Fixup - PowerPoint PPT Presentation

TRANSCRIPT

SE Team 9GlobalFlyer

Cole HoosierRyan Hannebaum

Leanne GrayAlex Stampbach

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.

Iteration PlansFixup

1: Get music and sound effects working again2: Get collision detection with buildings working3: Get the propellor showing up again

Visual Environment1: Add hovering objects to the world2: Add proximity detection to hovering objects3: Modify texture of hovering objects based on proximity

User Interface1: Add mouse control of camera2: Add visually-appealing digital readouts of data the user might want3: Add the ability to toggle sound, gui, etc.

GlobalFlyer Web Site

• http://seteam9.cis.ksu.edu/

The Plan and Analysis

Plan for Iteration 2

Raw Data up to Presentation 5BCW 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 4/1/2007 4/1/2007

Raw Data after Presentation 5BCW ACW Est Comp Actual Comp

Open House 420

- prepare display 240 4/10/2007

- rehearse/test presentation 120 4/13/2007

Iter 3: Fixup

- learn about rotating objects 240 4/22/2007

- fix propellor & test 360 4/29/2007

Iter 3: Visual 800 0 4/28/2007 3/10/2007

Iter 3: UI

- study methods of toggling settings 240 4/22/2007

- implement toggling & test 120 4/29/2007

Pres 6 5/1/2007

- assemble presentation 240 5/1/2007

Final Docs CD 240 5/4/2007

Total 7460 4440

EV Calculations

Date BCWS BCWP ACWP BAC EV SPI SV CPI CV

2/2/2007 0 0 0 7460 0.00% -- 0 -- 0

2/9/2007 0 1020 720 7460 13.67% inf 1020 141.67% 300

2/16/2007 0 1680 1110 7460 22.52% inf 1680 151.35% 570

2/23/2007 0 2460 2820 7460 32.98% inf 2460 87.23% -360

3/2/2007 2460 2460 2820 7460 32.98% 100.00% 0 87.23% -360

3/9/2007 2820 2820 3060 7460 37.80% 100.00% 0 92.16% -240

3/16/2007 3060 3480 3480 7460 46.65% 113.73% 420 100.00% 0

3/30/2007 4200 5000 4440 7460 67.02% 119.05% 800 112.61% 560

Earned Value

• Shows the steady completion of tasks after presentation 4

0.00%

10.00%

20.00%

30.00%

40.00%

50.00%

60.00%

70.00%

80.00%

90.00%

100.00%

2/2/

07

2/9/

07

2/16

/07

2/23

/07

3/2/

07

3/9/

07

3/16

/07

3/23

/07

3/30

/07

Scheduled Performance Index

• On schedule until the end and now we are ahead of schedule

0

0.5

1

1.5

2

2/2/

2007

2/9/

2007

2/16

/200

7

2/23

/200

7

3/2/

2007

3/9/

2007

3/16

/200

7

3/23

/200

7

3/30

/200

7

Scheduled Variance

• On schedule to ahead of schedule back on a finally ending ahead

0

500

1000

1500

2000

2500

3000

2/2/

2007

2/9/

2007

2/16

/200

7

2/23

/200

7

3/2/

2007

3/9/

2007

3/16

/200

7

3/23

/200

7

3/30

/200

7

Cost Performance Index

• Under budget to over and finally ending on budget

0

0.5

1

1.5

2

2/2/

2007

2/9/

2007

2/16

/200

7

2/23

/200

7

3/2/

2007

3/9/

2007

3/16

/200

7

3/23

/200

7

3/30

/200

7

Cost Variance

• Under budget to over and ending on budget

-600

-400

-200

0

200

400

600

800

2/2/

07

2/9/

07

2/16

/07

2/23

/07

3/2/

07

3/9/

07

3/16

/07

3/23

/07

3/30

/07

Division of Time and LOC

Effort (in minutes)

2370, 32%

1560, 21%

2025, 28%

1380, 19%

Cole

Leanne

Ryan

Alex

Lines of Code

205, 33%

200, 33%

105, 17%

105, 17%

Cole

Leanne

Ryan

Alex

Plan for Iteration 3

OCL

OCLAreas 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

OCL•The airplane cannot fly beneath the ground

•context OgreCharacter::update(elapsedTime, *input) : void•post: self.raySceneQuery->forAll( worldFragment.singleIntersection.y <

self.mMainNode.getPosition().y )

OCL•The FMOD sound system shouldn't be re-initialized

•context CFMod::InitSoundSystem() : bool•pre: self.initialized = false•post: self.initialized = true

OCL•The bubbles and buildings must be within the boundaries of the world

•context SampleApplication::createScene() : void•post: self.buildings.getBoundingBox->forAll(

getMinimum.x >= 0 and getMinimum.z >= 0 and getMaximum.x <= 10000 and getMaximum.z <= 10000

)•post: self.bubbles.getBoundingBox->forAll(

getMinimum.x >= 0 and getMinimum.z >= 0 and getMaximum.x <= 10000 and getMaximum.z <= 10000

)

OCL•Checking the win-condition for a level -- theoretically we would load a new level after hitting all targets

•context OgreCharacter::targetsRemaining() : int•result = self.targetHit->count(false)

•context OgreCharacter::checkWin() : bool•result = self.targetsRemaining = 0

•context SampleListener::frameStarted(frameEvent) : void•post: self.mChar.checkWin = false

UML Models

FrameStarted Sequence Diag

Class DiagramOverview

The FrameListener

The Camera

The Plane

The Physics

The Sound

Source Code

Proximity Detection

SampleApplication fills arrays that contain pointers to the buildings and bubbles in the world.

Hit a Building?bool OgreCharacter::inObstacle() { int i; const AxisAlignedBox me = this->mEntity->getWorldBoundingBox(); for (i=0; i<numObstacles; ++i) { if (obstacles[i]->getWorldBoundingBox().intersects(me)) { crashed = true; if (!crashSoundStarted) { engineSound.Pause(); crashSoundStarted = true; crashSound.Play(); } return true; } } return false;}

ogre_character.cpp

Hit a Bubble?bool OgreCharacter::inTarget(){ int i; const AxisAlignedBox me = this->mEntity->getWorldBoundingBox(); for (i=0; i<numTargets; ++i) { if (targets[i]->getWorldBoundingBox().intersects(me)) { targets[i]->setMaterialName("GlobalFlyer/BlueSphere"); targetHit[i] = true; return true; } } return false;}

ogre_character.cpp

Bubbles Left?int OgreCharacter::targetsRemaining(){ int i; int remaining = 0; for (i=0; i<numTargets; ++i) { if (this->targetHit[i] == false) { ++remaining; } } return remaining;}

ogre_character.cpp

GUI

•make the window look more like a cockpit•remove Ogre logo and statistics overlay

The Old GUI

Operation Beautify

• eliminate debugging script and Ogre logo

• clean up physics script

• create cockpit graphic

• add graphic as overlay panel material

• orient text aesthetically

gf.materialmaterial GlobalFlyer/cockpit{

technique{

pass{

lighting offscene_blend alpha_blend

texture_unit{

texture cockpit.png}

}}

}

SampleApplication.cpp

Ogre::OverlayContainer* panel = static_cast<OverlayContainer*>(

overlayMgr.createOverlayElement("Panel", "PanelName"));

panel->setMaterialName("GlobalFlyer/cockpit");

The Result:

Plan for Iteration 3

Who has Questions?

-Images from texasbestgrok.mu.nu/images/GF2.jpg