1 / 45

SE Team 9 GlobalFlyer

GlobalFlyer is a 3D flying game where players can control a Wright brothers-style airplane in a virtual environment. Fly through the skies, avoid obstacles, and complete challenging levels. Experience the thrill of flying in this immersive game.

dcalhoun
Download Presentation

SE Team 9 GlobalFlyer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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: Get the propellor showing up again • 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 2

  7. Raw Data up to Presentation 5

  8. Raw Data after Presentation 5

  9. EV Calculations

  10. Earned Value • Shows the steady completion of tasks after presentation 4

  11. Scheduled Performance Index • On schedule until the end and now we are ahead of schedule

  12. Scheduled Variance • On schedule to ahead of schedule back on a finally ending ahead

  13. Cost Performance Index • Under budget to over and finally ending on budget

  14. Cost Variance • Under budget to over and ending on budget

  15. Division of Time and LOC

  16. Plan for Iteration 3

  17. OCL

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

  19. 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 )

  20. OCL • The FMOD sound system shouldn't be re-initialized • context CFMod::InitSoundSystem() : bool • pre: self.initialized = false • post: self.initialized = true

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

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

  23. UML Models

  24. FrameStarted Sequence Diag

  25. Class Diagram Overview

  26. The FrameListener

  27. The Camera

  28. The Plane

  29. The Physics

  30. The Sound

  31. Source Code

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

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

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

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

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

  37. The Old GUI

  38. Operation Beautify • eliminate debugging script and Ogre logo • clean up physics script • create cockpit graphic • add graphic as overlay panel material • orient text aesthetically

  39. gf.material material GlobalFlyer/cockpit { technique { pass { lighting off scene_blend alpha_blend texture_unit { texture cockpit.png } } } }

  40. SampleApplication.cpp Ogre::OverlayContainer* panel = static_cast<OverlayContainer*>( overlayMgr.createOverlayElement("Panel", "PanelName")); … panel->setMaterialName("GlobalFlyer/cockpit");

  41. The Result:

  42. Plan for Iteration 3

  43. Who has Questions? -Images from texasbestgrok.mu.nu/images/GF2.jpg

More Related