165 Lecture Notes 1 - Game Engines Csc 165 Computer Game Architecture Basic Game Structure

165 Lecture Notes 1 - Game Engines Csc 165 Computer Game Architecture Basic Game Structure

CSc 165 Lecture Notes 1 - Game Engines CSc 165 Computer Game Architecture Basic Game Structure Start while (!gameOver) Initialize system Player Input Initialize 1 - Game Engines game One iteration Game Main Logic Update Loop = 1 Frame Shutdown Render Exit “Tightly-coupled” game loop 2 CSc 165 Lecture Notes CSc 165 Lecture Notes 1 - Game Engines 1 - Game Engines Game ENGINE Typical Game Engine Functions A reusable collection of modules ▪ Independent of any particular Game Logic • Simulation of elapsed time • View (camera) control ▪ Encapsulates platform dependencies • Scene Management • Input handling o Objects, geometry details ▪ Possible because all games have things in common • Sound generation • Rendering • Network communication • Collision Detection/Handling Game Application Logic o Physics simulation • Special effects • Lights, Shadows, Textures o Explosions, fire, … Game Engine Player 3 4 CSc 165 Lecture Notes CSc 165 Lecture Notes 1 - Game Engines 1 - Game Engines Game Engine Design Some Game Engines Game Application Logic o Unity o jMonkey o Unreal o OGRE o Godot o Quake <<interface>> <<interface>> <<interface>> <<interface>> … other RenderSystem Input Audio Networking o CryEngine o Lumberyard o Blender (Amazon) Game Engine o Panda 3D o Torque 3D Network o GameMaker o Hero Engine For an expanded list see: http://en.wikipedia.org/wiki/List_of_game_engines 5 6 CSc 165 Lecture Notes CSc 165 Lecture Notes 1 - Game Engines 1 - Game Engines RAGE : “Raymond’s Awesome Game Engine” Abstracting Game Structure A collection of Java packages <<abstract>> ray.rage.game.AbstractGame rage # abstract void startup(); # abstract void loadConfiguration(); math assets renderer scene # abstract void RenderSystemFactory(); # abstract void setupGpuShaderPrograms(); jogl light # abstract void setupWindowViewports(); # abstract void SceneManagerFactory(); in RAGE it’s called “RML” # abstract void run(); # abstract void shutdown(); # abstract void setupCameras(); # abstract void setupScene(); audio input physics AI networking # abstract void setupWindow(); # abstract void update(); jbullet - Game.State ... SomeGame 7 8 CSc 165 Lecture Notes CSc 165 Lecture Notes 1 - Game Engines 1 - Game Engines Abstracting Game Structure (cont.) Abstracting Game Structure (cont.) <<abstract>> AbstractGame <<abstract>> BaseGame ray.rage.game.BaseGame ray.rage.game.VariableFrameRateGame startup() shutdown() exit() run() setState() # run() getState() getEngine() # setupWindow() # setupWindowViewport() # setupGpuShaderPrograms() # createRenderSystemFactory() # createSceneManagerFactory() keyPressed(), keyTyped(), etc... mouseClicked(), mouseMoved(), etc... 9 10 CSc 165 Lecture Notes CSc 165 Lecture Notes 1 - Game Engines 1 - Game Engines Creating A Simple Game <<abstract>> AbstractGame Note – there is another, proprietary game engine called “RAGE”. <<abstract>> Provides a default RAGE classes BaseGame display window used by Rockstar Games <<abstract>> Provides a default for Grand Theft Auto, Max Payne, etc. VariableFrameRateGame “run” game loop MyGame Not required but usually “Rockstar Advanced Game Engine” # void setupWindow(); beneficial to override # void setupCameras(); # void setupScene(); Required # void update(); 11 12.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    2 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us