Introduction to Game Engine: Concepts & Components
INTRODUCTION TO GAME ENGINE:
CONCEPTS & COMPONENTS
Pouya Pournasir
Mojtaba Rouhibakhsh
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
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”.
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
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
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)
Drawbacks: Potential costs and complexity
you are limited from all aspects
Problems with license, third-party libraries
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.
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.
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.
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
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
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.
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
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
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
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)
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
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.
Animation
• Handles animation of objects on the scene graph
• Tells the renderer how to display the assets
• Skeletal animations is the most popular
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
Sources
• Wikipedia: Scene Graph, Physics Engine, Browser Engine
• Game Engine Rendering Pipeline by Sharad Mitra
Notas do Editor
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