Transcript
Page 1: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Game Engine Programming

Page 2: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

GameEngine

Rendering Engine(OGRE)

Physics Engine(Bullet)

Input/Output System(OIS)

Graphical User Interface(CEGUI)

Audio Output(OpenAL)

Game Engine Components

Renderer(OpenGL)

XML Parser(TinyXML)

Page 3: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Game Components

Models Textures

ScriptsGUI

Layouts

Scenes

Materials

Animations

A.I.

GUILayout

Sound/Music

SystemConfig. Video

Images

SavedData

KeyboardMapping

Page 4: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Game Loopconfiguration();create_the_scene();while(!done){

read_input_state();update_game_objects();render_scene();

} //end whileclean_up();

Page 5: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Timing• Each iteration of the loop varies in time.• How can we make movement smooth?

Page 6: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Scene GraphRoot

SceneNode

SceneNode

SceneNode

SceneNode

SceneNode

EntityEntity

Entity

Geometry3D MeshCamera

Transforms:LocationRotationScale

Page 7: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

OGRE Demonstration

• Open up a terminal window• Run the command: SampleBrowser• Try out some samples.• Move around a scene.

Page 8: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Physics Engine

• Manages collisions.• Force, torque, velocity.• Friction and restitution.• Rigid and soft bodies.

Page 9: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Physics Engine Objects

SceneNode

Entity

RigidBody

CollisionShape

Dynamics and Collision

Simulation

Page 10: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Bullet Demonstration• Open a terminal window.• Run the command: BulletDemo• Commands vary: h sometimes brings help.• Try different demos.• Right-click often fires blocks at the scene.

Page 11: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

OGRE/Bullet Example• Open eclipse in a new workspace.• Menu: File->Import• General->Existing Project into Workspace• Click “Next”• Click “Select Archive File” and browse to

find: /Courses/cs391/PizzaShooter2.zip• Click “Finish”• Switch to C++ Perspective

Page 12: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

OGRE Bullet Example• C++ Classes: Header and implementation files• PizzaShooterApp– FrameRendering Events– manageCollisions

• PizzaGOB– firePizza

• OgreGOB– Animation

Page 13: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

PizzaShooter classes

BaseApplication

PizzaShooterApp

DirectionPointer

GameObject

PhysicsGameObject

PizzaGOB

PizzaShooter(main)

PlaneGOB

TargetCubeGOB

OgreGOB

Page 14: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

Hazards of C++/OpenSource

C++• Memory management• Error Messages• Syntax• Linking libraries• Cross platform issues

OpenSource• Buggy• Complex• Version maintenance

Page 15: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

CS 391: Spring 2015

• C++ Programming.• Managing small

software projects.• Writing and testing

games!

Page 16: Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output

CS Elective Courses 2014-2015Fall 2014• CS 360 Database• CS 373 Graphics

Spring 2015• CS 322 Networks• CS 371 Artificial Intelligence• CS 391 Selected Topics• PHY 240 Electronics


Top Related