250 likes | 552 Views
Game Development using the Irrlicht Graphics Engine. Ben Mossman Danny Lee Dmitry Kallestinov Daniel Juel http://www.engineering.uiowa.edu/~danlee/eedesign/. Preliminary Design Objectives. Develop PC-based FPS (first-person-shooter) Model weapons and aliens Animate weapons and aliens
E N D
Game Development using the Irrlicht Graphics Engine Ben Mossman Danny Lee Dmitry Kallestinov Daniel Juel http://www.engineering.uiowa.edu/~danlee/eedesign/
Preliminary Design Objectives • Develop PC-based FPS (first-person-shooter) • Model weapons and aliens • Animate weapons and aliens • Use simple game and character models • Object collision • Model bullets and weapon particle effects • Simple HUD (heads- up-display) • Short, engaging back-story
Software Process • Pre-production – initial planning, pick team, assign roles, preliminary design, identify milestones • Production – final design, meet milestones • Testing – alpha and beta • Completion – deploy product • Maintenance – provide customer support Pre-production Production Milestones Testing Completion
Project Resources • Development team roles assigned based on National Occupational Standards for Interactive Media (2005)
Project Resources (cont.) • Ben: Lead Programmer, Project Manager • Danny: 3D Modeler, Sound Engineer, Programmer • Dmitry: 3D Modeler, Sound Engineer, Programmer • Daniel: Level Designer, Programmer
Project Resources (cont.) • Irrlicht graphics engine • DirectX SDK • IrrKlang sound engine • IrrEdit scene editor • 3ds MAX modeling software • Google Sketchup • Microsoft Visual C++ Express Edition (IDE)
Initial Planning • Ogre3D Graphics Engine • Java binding for Ogre3D • Python binding for Ogre3D • Game Engines – Dark GDK, StemCell, Cube 2: Saurbraten • Ogre3D has a steep learning curve • Team inexperience • Incomplete wrapper or binding • Little or no programming involved
Irrlicht Graphics Engine • Irrlicht: cross-platform graphics engine written in C++ (MS Windows Vista, Mac OS) • Supports Direct X and OpenGL • Abstracts details of Direct3D and OpenGL • Open source • GNU Lesser Public License (free) • Stable • Productive • Extensive documentation • Broad support community
Irrlicht Features • Basic physics, collision detection, rigid body • Per-pixel lighting • Bump-mapping • Parallax-mapping • Mesh loading and skinning • Bill-boarding • Skybox • Simple water and fog effects • Particle System • 2D GUI System
Irrlicht Features (cont.) • Pixel and vertex shaders support • Fast shaders written in assembly • Other shaders written in Cg or DirectX9 HLSL • Scene Management • Scene querying features • Fixed-function pipeline (use prefabricated DirectX algorithm for modifying graphical output) • Supports Pixel and Vertex Shaders 1.1 to 3.0 • Programmable pipeline (write your own algorithm, aka “shaders”)
3D Modeling Tools • Export from Milkshape3D, 3ds Max, Maya, Blender and Wings3D • Irrlicht supports over 18 file formats including Maya (.obj), DirectX (.x), and 3ds MAX (.3ds) • 3ds Max for character modeling • IrrEdit for level modeling • 3ds MAX includes Character Studio for modeling and animating characters • Used by FX experts in Hollywood • IrrEdit can build scenes or meshes in native format compatible with Irrlicht
Importing models This is a blender model rendered using Irrlicht.
Irrlicht Life Cycle • Link in Irrlicht graphics engine • Setup 3rd party libraries and plug-ins • Setup Irrlicht device object • Setup selected renderer (DirectX or OpenGL) • Create scene manager • Create a camera scene object • Create a mesh scene object • Choose render modes • Create event receiver (listener) • Start the render loop
Irrlicht Class Diagram Everything starts with the device object, which creates your render window and is the root object for any scene. A scene is programmed using a scene “node”. There are camera nodes, light nodes, and billboards nodes.
Space representation Irrlicht can represent 3D space using Binary Space Partitioning (BSP). In BSP, space is subdivided recursively into “convex sets” (solid, no dents) using hyper-planes. It’s faster, but less intuitive, so we will use Octrees, which are tree data structures whose children can hold 8 nodes. The 8 nodes represent the 8 octants surrounding a point in space.
Wiimote Enhanced Gameplay • Presents a minor challenge with major benefits • Allows the player to control the game more naturally • Expands marketability
Nintendo Wiimote • Blue Soleil allows PC to wirelessly connect with wiimote • Requires a Bluetooth dongle • Requires GlovePie Input Emulator • Simple script maps mouse actions to wiimote • Wiimote can be used to interface with game menu • Navigation • Strafing • Aiming • Volume control • Event feedback in the form of vibration
Meet The Customer Primary Customer Prof. Gary E. Christensen Affiliations: • Associate Professor Electrical and Computer Engineering, University of Iowa • Radiation Oncology Computational Imaging Group Leader, Iowa Institute for Biomedical Imaging Customer Profile