Anúncio

Introduction to Game Engine: Concepts & Components

2 de Nov de 2018
Anúncio

Mais conteúdo relacionado

Similar a Introduction to Game Engine: Concepts & Components(20)

Anúncio

Introduction to Game Engine: Concepts & Components

  1. INTRODUCTION TO GAME ENGINE: CONCEPTS & COMPONENTS Pouya Pournasir Mojtaba Rouhibakhsh
  2. Outline  What is a Game Engine?  What’s it’s Purpose?  Game Engine History  Benefits & Drawbacks  Types of Game Engines  How to Reach Equilibrium in Flexibility?  Game Engine Components
  3. Game & Car Analogy: The game engine, much like a car's engine, is what makes the game run. Think of how the body, CD player, in-dash navigation system, and leather seats make the actual car. That's the Asset of the game. Audio files, textures, graphic models, animations, AI algorithms are assets of the game. Game engine says “focus on the content of the game, I do the core things”.
  4. Hierachy Electric Circuits Hardware BIOS Operating Systems Application Game Engine Video Game Its here too!
  5. Purpose  Engines exists to abstract the details of doing common game-related tasks so that developers can focus on the details that make their games unique.  Engines offer reusable components that can be manipulated to bring a game to life  platform abstraction: allowing the same game to be run on various platforms
  6. History In mid-90, every single game had to be developed from bottom up for optimal use; meant that most of the code have to be thrown out afterwards  Id Software developed Doom, a FPS game, in such a way that it’s architecture defined separation between core software components and game world. It was an innovative way of coding video games.  people started to notice that big portions of the game code were really re-usable. John Carmack is usually credited with the term "game engine", which was his term for splitting the reusable aspects the game programming from the parts which were best left to other specialists: artists, designers, and sound people could add their own contributions to the game without writing actual program code
  7. Benefits: Software Reuse  provides simplified access to underlying technologies  organizes and speeds up development process  reusing the same game engine (software) to create multiple different games  less testing and debugging  better focus on the game design aspects  enables the game to run on multiple platforms(consoles, operating systems)
  8. Drawbacks: Potential costs and complexity  you are limited from all aspects  Problems with license, third-party libraries
  9. APIs & SDKs: Whats the difference?  API:  APIs are the software interfaces that operating systems, libraries, and services provide so that you can take advantage of their particular features.  EX: OpenGL, Havok, FMOD  SDK:  An SDK is a collection of libraries, APIs, and tools that are made available for programming those same operating systems and services. Most game engines provide APIs in their SDKs.  EX: Unreal Developeent Kit.
  10. Roll-your-own Game Engines (lowest level)  use publicly available application interfaces, such as APIs like XNA, DirectX, OpenGL, the Windows and Linux APIs and SDL, to create their own engines  give programmers the greatest amount of flexibility, letting them pick and choose the components they want and integrating them exactly how they want.  take the longest amount of time to build, make it less attractive to even proffesionals.
  11. Mostly-ready game engines (mid level)  These engines are ready for prime time right out of the box, with rendering, input, GUI, physics -- you name it.  Engines in this category include OGRE and Genesis3D, which are both open source, low priced engines like Torque, and even really high priced ones such as Unreal, id Tech, and Gamebryo.  require programming.  They might call for some scripting or sometimes even low-level coding to get a real game working.
  12. Point-and-click engines (highest level)  include a full tool chain that allows you to point and click your way to creating a game.  These engines, which include GameMaker, Torque Game Builder, and Unity3D, are built to be as friendly as possible, and are made to require as little coding as possible.  That's not to say knowing a little coding doesn't help, but it isn't really a necessity the way it is for the mostly-ready and roll-your-own engines.  The problem with many point-and-click engines is that they can be extremely limiting. Many do one or two types or genres of game well, or one or two types of graphics modes
  13. Extensibility: How to reach Equilibrium?  A "game engine" should be designed to be extensible and to be used as the foundation for many different games without major modification  a game containing hard-coded logic becomes difficult or impossible to reuse to make a different game  The more general-purpose a game component is, the less optimal it purpose a game component is, the less optimal it may be for a particular game on a particular platform
  14. Sources  Game Engine Architecure, Spring 2017 Course in University of Helsinki, Slide Introduction and Overview.  GameCareer.com, What is a Game Engine by Jeff Ward.  Raph Koster, Creator of Game Programming gems book Series, answer to game engine related questions in quora.com.  GiantBomb.com, Game Engine: How do they work? By michaelenger.  Wikipedia: Game Engine & Middleware.
  15. Game Engine Components • Rendering Engine • Scene Graph • Physics Engine • Collision Detection • Audio Engine • Artificial intelligence • Scripting • Animation • Networking
  16. Rendering Engine • The rendering engine generates animated graphics • most often rendering engines are built upon one or multiple rendering APIs, such as Direct3D, OpenGL • Interacts directly with the GPU • e.g. Ogre
  17. Scene Graph • A Scene graph contains all of the geometry of a particular scene • Each node in a scene graph contains data representing its position and orientation in relation to its parent node. • Frustum culling - remove things outside of the visible screen
  18. Physics Engine • The physics engine is responsible for emulating the laws of physics realistically within the application • Handles behavior of objects based on collisions • e.g. PhysX , Havoc
  19. Collision Detection • Collision detection is the computational problem of detecting the intersection of two or more objects
  20. Audio Engine • The audio engine is the component which consists of algorithms related to the output of sound through the client's speaker system • Usually played on an event • Built upon an external library (OpenAL, etc)
  21. Artificial intelligence • AI refers to techniques used in computer and video games to produce the illusion of intelligence in the behavior of non-player characters • A* is commonly used for the common pathfinding problem in applications such as games
  22. Scripting • Usually uses an interpreted language (Python, lua, etc) • Typically using an interpreted scripting language avoids the need to rebuild the code base given a gameplay change.
  23. Animation • Handles animation of objects on the scene graph • Tells the renderer how to display the assets • Skeletal animations is the most popular
  24. Networking • Game Networking exists where multiple people can play the same game and interact with each other on their own system • Peer to Peer • Client/Server • e.g. RakNet
  25. Sources • Wikipedia: Scene Graph, Physics Engine, Browser Engine • Game Engine Rendering Pipeline by Sharad Mitra

Notas do Editor

  1. Before game engines, games were typically written as singular entities: a game for the Atari 2600, for example, had to be designed from the bottom up to make optimal use of the display hardware—this core display routine is today called the kernel by retro developers. The rapid advance of arcade hardware—which was the leading edge of the market at the time—meant that most of the code would have to be thrown out afterwards anyway Doom by id Software was a FPS architected with a well was a FPS architected with a well-defined defined separation between its (1) core software components (the rendering system, the collision detection, the audio, etc.) and (2) the art assets, game worlds, and rules of play people started to notice that big portions of the game code were really re-usable. John Carmack is usually credited with the term "game engine", which was his term for splitting the reusable aspects the game programming from the parts which were best left to other specialists: artists, designers, and sound people could add their own contributions to the game without writing actual program code
Anúncio