Thursday, 25 September 2014

Game Engine Overview


Welcome back everyone to another wonderful installment of blogs done by the Angry Game Dev Girl (Holds for applause *crickets* ..... OK then). Well if you can't already tell this new exciting round of blogs are going to be focused on Game Engines as required by my Game Engines class (kinda self-explanatory but whatever). Now for this class there will a series of 5 blogs, the first of which will cover a brief overview of what a game engine is, discuss briefly how it works and briefly talk about some of the available engines and what they are used for in the industry. The others will probably be an in depth analysis and comparison between 2 or 3 engines, unless we learn about something super, super cool and I just absolutely have to write a blog about it. Now with out further ado let us begin our adventure in the world of Game Engines (please note I am not a very good programmer so if any technical stuff is wrong I greatly apologize).

What is a Game Engine?


A game engine can be described as a software framework that is designed for the creation and development of a video game for consoles, mobile devices and PCs. This framework is an extremely important aspect of game development because without proper functionality in the engine a game will not be able to include many of its features or run efficiently and effectively.  A Game Engine is the software whose main functionality and algorithms are solely responsible for the game's mechanics however it is not the rendering engine. There can be numerous engines, which are referred to as middleware, that make up the main game engine. These other components can include your physics engine, and your rendering engine, among others.

Functionality in a Game Engine

 In order to create a game engine you need to include some core functionality in order to do the things you want to do in your game. Having your engine's core functionality in your engine designed specifically for your game needs is extremely important because you don't want a general functionality in your engine that requires you to do a ton of extra work to get what you want your engine to do, simply build in the functionality you need into your engine so that your engine works the way you need it. There are a few typically core functionalities that are usually found in an engine:

  • Rendering Engine (the renderer) for 2D/3D graphics
  • Physics Engine for gravity, collision detection/response, etc.
  • Sound for Game audio
  • Scripting for quick editing to
  • Animation for cut scenes, effects, etc.
  • Artificial Intelligence (AI/NPCs) for intractable characters, enemies, etc.
  • Networking for multiplayer mode, online mode, etc.
  • Streaming for changing code on the fly and instant changes
  • Memory Management for saving memory, preventing memory leaks, etc.
  • Threading for using multiple threads for multitasking on the CPU
  • Localization Support for for localized language support
  • Scene Graph for vector-based graphic editing

Purpose of a Game Engine

 A game engine is a development tool that allows for simplified, rapid game development that provides many of the elements a game developer would need to build their game. The purpose of an engine is to facilitate easy development by providing the functionality of graphics, sound, physics, and AI among others. A well built game engine not only allows for fast and easy production but also provides a flexible and reusable software platform that reduces the cost, complexities and time-to-market during development. Game Engines can also be used to port the same game to run across multiple platforms such as consoles and PCs, with very few changes to the original source code. By using a component based architecture, engines are able to replace or extend its systems to have more specialized game components.

How does it work?

As mentioned earlier in this and as the above image shows, a game engine is made up of numerous systems that are all linked together to provide a game's mechanics and functionality. Basically, a game engine is an component system built out of mini systems/engines that are all linked together to create the mechanics and functionality of a game. All of these mini systems are simply components or extensions of the larger systems that have specific jobs to do that allows the larger system to create an interface for developers to make a game, by allowing them to instruct the engine (the larger system) to do something using scripting, c++, etc.

If you think about an engine like a spider, the larger system (the engine) is the spider itself, while the mini systems (the component engines like the graphics, physics, etc engines) are the spiders legs. The spider needs all its legs to properly function and perform its tasks and if it is missing a leg or one leg isn't working the spider cannot fully perform its tasks to its full abilities. The same is said when talking about a game engine, should one of its components is missing or not working correctly then the engine will not function properly nor will it be able to perform its task properly.  It is essentially a system dependent on its linked component systems to be able to provide the needed functionality to create a game.

Some Current Engines and Their Use in the Industry 

So there are numerous engines available currently in the gaming industry, some of the are free/open source while others are sold by companies for commercial use. Below I will briefly talk about a few that are available:

  • App Game Kit
    •  Platform: Android, iOS, Mac, PC
    • Used in: Cannon Ball, Jumping Jack, etc
  • BigWorld
    •  Platform: Browser, PC
    • Used in:World of Tanks, Realm of the Titans, etc
  •  BlitzTech
    •  Platform: 3DS, Android, iOS, Linux, Mac, PC, PS3, PS Vita, Wii, Wii U, Xbox 360
    • Used in:  Rayman Raving Rabbids, Kumo Lumo, etc
  • CryEngine 3
    •  Platform: Next-gen consoles, PC, PS3, Xbox 360
    • Used in:  Crysis, Aion, Sniper: Ghost Warrior 2, etc
  • GameBryo
    •  Platform: Android, iOS, PC, PS3, Wii, Wii U, Xbox 360
    • Used in: Catherine, Epic Mickey, etc
  • GameMaker
    •  Platform: Android, Browser, iOS, Mac, PC, Windows Phone
    • Used in:  Hotline Miami, Mr. Karoshi, etc
  • Havok Vision Engine
    •  Platform: Android, iOS, Linux, Mac, PC, PS3, PS Vita, Wii, Wii U, Windows Phone, Xbox 360
    • Used in:  Carnival Island, Soul Worker, etc
  • Infernal Engine
    •  Platform: 3DS, Android, iOS, Linux, Mac, PC, PS3, PS Vita, Wii U, Xbox 360
    • Used in:  The Walking Dead: Survival Instinct, etc
  • Marmalade
    •  Platform: Android, BlackBerry OS, iOS, Mac, PC, Smart TVs, Windows Phone
    • Used in: Call of Duty: Black Ops - Zombies, Cut the Rope, etc
  • Unity 4
    •  Platform: Android, Browser, Flash, iOS, Linux, Mac, PC, PS3, Wii U, Xbox 360
    • Used in: Castle Story, Wasteland 2, etc
  • Unreal Engine 3 & 4
    •  Platform: Consoles (TBA), PC, PS4
    • Used in:  Dishonored, Mass Effect, BioShock Infinite, etc
More Information: 

For anyone who  wants anymore information on Game Engine you can find more info with the links below:

Game Engines How do they work
What is a Game Engine?
Game Engines and How They Work
Game Engine Wiki
Open Source Game Development