Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE)...

16
Game Engine Programming

Transcript of Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE)...

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