A Study On Game Engine Technology Computer Science Essay
Current generation games are mostly developed using a game engine mainly due to the shorter development time and effort needed to create a game without thinking about the technicalities involved behind it. Therefore, a game engine must be equipped with advanced features to ensure the ability to generate high quality games. This paper will presents about game engine technology,its responsibilities, types of game engine and review of game engines lists.
1. Introduction
Today, large scale modern games are often separated in two primary parts: the game engine, and the game data. It is desirable to have a game engine or game engine components that can be reused for many games, leaving only new game data to be created. This is generally cheaper and faster than other ways to make games. The actual game specific code that describes the game can sometimes be considered slightly in between the game data and the game engine, and where it actually lies may vary. However, most modern games and game engines uses a script component which makes it possible to implement most of the game specific code in some scripting language, making that code quite clearly part of the game data. The use of scripting languages for games are not anything new, as for adventure and role-playing games driven much by stories, puzzles and quests, it has been used for more than 20 years. These languages were however often very task and engine specific. But with more general game engines, scripting languages have become more common for a wider variety of games. And with a wider variety of games, languages less specialized for the particular game are sought. Today, some game engines have their own custom and sometimes heavily integrated languages, while other uses common and freely available languages.
The engine of a game is essentially the program that the game runs on. An engine will contain any and all information pertaining to how the game is played, as well as how the game looks and sounds. Depending on how well a game’s engine is “written” by its programmer(s), more or less of the hardware’s actual processing power may be used for better-looking results. In other words, if Microsoft Windows, Linux, and Mac OS Xare the operating system for the computers, the game engine is the operating system for the games.
2. Game Engine Technology
The game engine is the fundamental piece of software necessary for simulating and rendering virtual worlds.[1] It deals with issues of scene graph management, providing efficient input to a renderer, today usually a hardware implementation of the OpenGL or Direct3D API. It must provide the ability to simulate complex and moving objects in a physically realistic way. It usually also supports collision detection, curved surfaces as well as polygonal models, animation of characters, geometric level of detail, terrain management and culling techniques.
After all, the game engine, much like a car’s engine, is what makes the game go. Unfortunately, sometimes there’s a fuzzy line between where a game’s engine ends and where the content of a game begins, as if there were a fuzzy line between whether a car’s air conditioner is part of its engine.
Generally though, the concept of a game engine is fairly simple: it exists to abstract the (sometime platform-dependent) details of doing common game-related tasks, like rendering, physics, and input, so that developers (artists, designers, scripters and, yes, even other programmers) can focus on the details that make their games unique.
Engines offer reusable components that can be manipulated to bring a game to life. Loading, displaying, and animating models, collision detection between objects, physics, input, graphical user interfaces, and even portions of a game’s artificial intelligence can all be components that make up the engine. In contrast, the content of the game, specific models and textures, the meaning behind object collisions and input, and the way objects interact with the world, are the components that make the actual game. To use the car analogy again, think of how the body, CD player, in-dash navigation system, and leather seats make the actual car. That’s the content.
3. Game Engine Responsibilities
The engine is responsible for rendering everything you see and interact with in the game world.[2] In this context Rendering engine may refer to a software system designed for the creation and development of video games. Portal rendering stated that the engine is currently able to use the sector information to avoid rendering all object in the world, but it does so at the expense of altering the visual appearance in a way that is obviously not acceptable.
Creating a 3D world also be in game engine responsibilitiy.[3] 3D objects are stored as points in the 3D world (called vertices), with a relation to each other, so that the computer knows to draw lines or filled surfaces between these points in the world. So a box would have 8 points, one for each of the corners. There are 6 surfaces for the box, one for each of the sides it would have. This is pretty much the basis of how 3D objects are stored. When you start getting down to some of the more complicated 3D stuff, like a Quake level for example, you are talking about thousands of vertices (sometimes hundreds of thousands), and thousands of polygonal surfaces.
Figure 1. Without rendering you don’t get to see anything. It visualizes the scene for the player / viewer so he or she can make appropriate decisions based upon what’s displayed. The rendering is generally the first thing you tend to build when constructing an engine. But without seeing anything — how do you know your code is working? The renderer is where over 50 percents of the CPU’s processing time is spent, and where game developers will often be judged the most harshly
Next is visibility management (also called culling). The purpose of visibility management was to hide the non-visible objects and detail in the games. The unnecessary things such as outside view frustrum and object that occluded by other visible things need to be hidden in a games. The unnecessary detail (details too small to be perceived) alse need to be hidden in a games.
Culling means throw away non-visible things. The general strategies used were multi phase testing,select first cheap and coarse then gradually increasing cost/precision before utilize bounding volumes.
Figure 2. By culling the non-visible parts of a 3D world, a game engine can reduce its workload considerably. Look at this scene and imagine that there’s a room behind the one under construction, but if it’s not visible from this vantage point, the other room’s geometry and other 3D data can be discarded
The simplest approach to culling is to divide the world up into sections, with each section having a list of other sections that can be seen. That way you only display what’s possible to be seen from any given point. How you create the list of possible view sections is the tricky bit. Again, there are many ways to do this, using BSP (Binary Space Partitioning) trees, Portals and so on.
BPS is a way of dividing up the world into small sections, and organizing the world polygons such that it’s easy to determine what’s visible and what’s not — handy for software based renderers that don’t want to be doing too much overdrawing. It also has the effect of telling you where you are in the world in a very efficient fashion.
Figure 3. BSP Tree Topology
A Portal based engine (first really brought to the gaming world by the defunct project Prey from 3D Realms) is one where each area (or room) is built as its own model, with doors (or portals) in each section that can view another section. The renderer renders each section individually as separate scenes. At least that’s the theory. Suffice to say this is a required part of any renderer and is more often than not of great importance. Some of these techniques fall under the heading of “occlusion culling”, but all of them have the same intent: eliminate unnecessary work early.
For an FPS (first-person shooter game) where there are often a lot of triangles in view, and the player assumes control of the view, it’s imperative that the triangles that can’t be seen be discarded, or culled. The same holds true for space simulations, where you can see for a long, long way – culling out stuff beyond the visual range is very important. For games where the view is controlled — like an RTS (real-time strategy game)- this is usually a lot easier to implement. Often this part of the renderer is still in software, and not handed off to the card, but it’s pretty much only a matter of time before the card will do it for you.
Game engines not only provide the rendering, they can also provide the physics models and collision detection. Collision handling = Collision detection (geometric problem) + Collision response (dynamic problem). Collision Detection is like when your car drives into the wall it collides with the bricks its made from. Â In this case the force of the tank colliding with the wall will cause the bricks to move, collision detection works out which bricks are affected.
Figure 4. Collision detection
Next, game engine responsible for character support in the games such as behaviour, decision making, appearance and movement of the object. After all, the last responsibility for the game engine is in multiplayer and networking of the game. In the last several years game engines have advanced by leaps and bounds in terms of things like memory management, processing power, optimization procedures, networking capabilities, and pushing polygons to screens. If you think back to the early days of 3D computer games, characters like those found in Castle Wolfenstein (circa 1992) had polygon counts of several hundred (if that), whereas today it’s not uncommon for characters to have polygon counts in the in the thousands, as is true for DOOM III, with the source models (often used for promotional materials, and transitional animations during play) to have polygon counts in the millions.
4. APIs and SDKs
Two other terms you hear in the game industry that are closely related to game engines are “API” (application programming interface) and “SDK” (software development kit).[4] APIs are the software interfaces that operating systems, libraries, and services provide so that you can take advantage of their particular features. 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. The Unreal Engine, for example, provides an interface for programmers to create their games, both through a scripting language called UnrealScript, and through libraries, which are provided to anyone who licenses the engine, and which come in the same package as their other tools, like the editor UnrealEd.
5. Game Engine Starting Point
For a long time, many game companies made their own game engines and kept that technology in house, iterating on it as computers improved and more advanced versions were needed.[5] Engines like SCUMM by LucasArts and SCI by Sierra, for example, powered most of the adventure games that those companies released in the late 1980s and into the mid 1990s. The engines like id Tech (the engine that powers the Quake series of games) and the Unreal Engine started as in-house technologies, though they have recently evolved into middleware technologies as well.
Over the past several years, the cost of making an in-house engine has grown significantly, and more and more companies have begun to specialize in making either full game engines or game engine components to sell to other companies, rather than make games. We call these kinds of companies middleware providers. The middleware providers can offer these products at very reasonable prices, and, for most game development studios, this creates a very clear “build versus buy” decision. Why pay six programmers for a year to build an engine when you can buy 90 percent of the features you want from a proven technology for less money — and have it immediately? As a result, almost all components of a game engine are purchasable at a variety of prices, or downloadable in the form of open source projects.
6. Types of Game Engines
Game engines come in many different flavors and at many levels of programming expertise. To get a feel for how different they can be, three kinds of engines will be explained which is the roll-your-own version, the mostly-ready version, and the point-and-click engine.[6]
6.1 Roll-your-own game engines (lowest level)
Despite the cost, many mainstream companies (as well as indie game makers) will still attempt to roll their own engines. This means they use publicly available application interfaces, such as APIs like XNA, DirectX, OpenGL, the Windows and Linux APIs and SDL, to create their own engines. In addition, they may use other libraries, both commercial and open source, to help them along the way. These libraries might include physics libraries like Havok and ODE, scene graph libraries like OpenSceneGraph, and GUI libraries like AntTweakBar.
XNA and SDL included here because, although they make creating an engine much easier by abstracting away some of the more nasty platform implementation issues, they still require a lot of programming to get a game off the ground. They’re not really engines so much as good starting points for creating your own engines.
Generally, these home-rolled systems give programmers the greatest amount of flexibility, letting them pick and choose the components they want and integrating them exactly how they want. But they also take the longest amount of time to build. Additionally, programmers frequently will have to build the tool chain from scratch, since they can rarely rely on all these libraries to work together straight out of the box. This makes rolling your own engine less attractive to most game developers, even the professional ones.
6.2 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. Many of them even have mature tool chains so you don’t have to roll your own. 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.
To varying degrees, all these engines still require a bit of programming to get them up and running into a complete game. They might call for some scripting or sometimes even low-level coding to get a real game working. Mostly-ready game engines are a bit more limiting than roll-your-own engines and are frequently optimized for the general case. That said, many of these engines are the product of dozens of people’s work over hundreds of long hours, and will provide better performance with less effort than most roll-your-own engines, even if they don’t do exactly what you want.
6.3 Point-and-click engines (highest level)
Point-and-click engines are becoming more and more common these days. They 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. This is not to say they’re useless. Even faced with the restrictions of these tools, it’s possible to make highly creative games or even find creative ways around those restrictions. The best thing about these engines is that they allow you to work quickly, and play your games quickly, without too muck work. If you’re just starting out in game design, you could do worse than these tools.
7. List of game engines
Several tools called game engines are available for game designers to code a game quickly and easily without building from the ground up.[7]
7.1 Free / open source engines
Table 1. Free / open source engines
Engines
Primary programming language
Aleph One
C
Allegro library
Mercury, Pascal, Perl, Python
Ardor3D
Java
Axiom Engine
C#
Blender3D
C++
Build engine
C
Cafu Engine
C++
ClanLib
C++
Crystal Space C
Python,
Cube
C++
Delta3d
C++
DGD
LPC
DXFramework
C++
Exult
C++
Genesis3D
C
Glest
C++
HPL Engine 1
C++
id Tech 1, 2, 3
C
ioquake3 C
C
Irrlicht Engine
C++
jMonkeyEngine
Java
Jogre
Java
Lightweight Java
Java
OpenSceneGraph
C++
Panda3D
C++
Quake engine
C
PLIB
C++
Retribution Engine
C++
RealAxis Engine
C++
Second Life
C++
Sphere
C++
Spring
C++
Stratagus
C
Troll2D
C++
Verge 3.2
VC
Zombie Engine
C++
7.2 Freeware engines
These engines are available for free use, but without the source code being available under an open source license. Many of these engines are commercial products which have a free edition available for them:
Table 7.2. Freeware engines
Engines
Briefly about
Adventure Game Studio
Mainly used to develop third-person pre-rendered adventure games, this engine is one of the most popular for developing amateur adventure games.
Cocos2d
A 2d game engine for making iphone games.
DikuMUD and derivatives
MUD engines
dim3
Freeware 3D javascript engine for the Mac (although finished games are cross platform)
Game Maker Lite
Object-oriented game development software with a scripting language as well as a drag-and-drop interface
LPMud and derivatives (including MudOS and FluffOS)
MUD engines
M.U.G.E.N
A 2D fighting game engine
Open Scene Graph
An open source 3D graphics toolkit, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modelling
Panda3D
A relatively easy to use C++ game engine with Python bindings that was made by Disney and is owned by Carnegie Mellon University. Disney uses it to produce some of their games
Platinum Arts Sandbox Free 3D Game Maker
Open source and based on the Cube_2:_ Sauerbraten engine with a focus on game creation and designed for kids and adults. The program includes Non commercial content, but the main engine and large majority of the media can be used commercially
TinyMUCK
MU* engine
TinyMUD
MU* engine
Unity
An open-ended 3D game/interactive software engine for web, Windows, and Mac OS X. Upgrading to paid licenses can additionally enable support for the iPhone and Nintendo Wii
World Builder
A classic Mac OS game engine
Wintermute Engine
A runtime and development tools for creating 2D and 2.5D point’n’click adventure games
RGSS
An engine made by enterbrain to create RPG’s using RPG Maker XP. RGSS2 was used for RPG Maker VX
7.3 Commercial engines
Table 7.3. Commercial engines
Engines
Briefly about
Alamo
The engine used in Star Wars: Empire at War by Petroglyph Games.
Aurora Engine
For Role-playing games.
Bork3D Game Engine
A cross-platform game engine primarily targeting iPhone and iPad
BigWorld
Server, client and development tools for the development of MMOG for games that run on Windows, Xbox 360, and PS3
BRender
A real-time 3D graphics engine for computer games, simulators and graphic tools.
C4 Engine
A cross-platform game engine developed by Terathon Software.
Cafu Engine
A game engine with development tools for creating multiplayer, cross-platform, real-time 3D games and applications.
Coldstone game engine
An old game creation suite for Macintosh/Windows to create role-playing or adventure-style games.
CPAL3D
Complete game creation tools with scene editor, IDE and text server
CryEngine, CryEngine 2, CryEngine 3, CryEngine 3.5
The game engine used for the first-person shooter computer game Far Cry. CryEngine 2 is a new generation engine developed by Crytek to create the FPS game Crysis.
Crystal Tools
Square Enix’s proprietary seventh generation game engine.
DX Studio
Engine and editing suite that allows creation of real-time games and simulations.
Dunia Engine
Engine (heavily modified version of the CryEngine) made especially for Far Cry 2 by Ubisoft Montreal.
Earth-4 Engine
The graphics engine used in Earth 2160
Electron engine
Developed by Obsidian Entertainment for their game Neverwinter Nights 2, based on the Aurora engine
Elflight Engine
Cross-platform 3D streaming game engine designed from the ground up for use over the Web. Games can play in a web browser window, in a separate window or full-screen. Java and OpenGL based
Enigma Engine
A real-time tactics game engine, used in Blitzkrieg
Esperient Creator
A very powerful 3D modeler and engine, used world wide for training, simulation, architecture, and games. Built-in Scripting, C/C++, CScript, or Lisp, Shader Editor, import 50+ 3D formats.
Euphoria
This is a biomechanical Ragdoll engine by NaturalMotion.
Freescape (1986)
Incentive Software; One of the first proprietary 3D game engines, used in Driller and 3D Construction Kit.
Frostbite Engine
Game engine used for the next-gen title Battlefield: Bad Company.
Gamebryo
Cross-platform game middleware for professional developers, notable for its rapid development.
GameSalad
A 2D game engine that currently targets the iPhone and a Apple Safari Web-plugin developed by Gendai Games. Has a visual programming interface that allows for rapid development
Gamestudio
A 2D and 3D game engine for beginners. Uses the Gamestudio development system and the lite-C programming language.
Glacier, Glacier2
Developed by IO Interactive and used for the Hitman series of games. Glacier2 is a new generation engine currently in development for upcoming games.
GrimE
Used in LucasArts graphical adventure games starting with Grim Fandango
Hedgehog Engine
Created by the Sonic Team with the capability of rendering high quality graphics at high speed. It was first used in Sonic Unleashed.
HeroEngine
3D game engine by Simutronics for building MMOs in a live collaborative environment.
HPL Engine 2
Used in Frictional Games survival horror games. Earlier versions are free software.
id Tech 4
(Also known as Doom 3 engine) Used by the games Doom 3, Quake 4, Prey and Quake Wars. Have become Open Source with the release of RAGE in 2010
id Tech 5
Currently in development by id Software as engine for their games, Doom 4 and Rage, and as a general purpose engine to be licensed
IMUSE
Specifically designed to synchronize music with visual action
Infernal Engine
Created by Terminal Reality, provides rendering, physics, sound, AI, and metrics for game development. Used in several games such as Ghostbusters: The Video Game, Mushroom Men: The Spore Wars, Bass Pro Shops: The Strike and Roogoo: Twisted Towers.
INSANE
Used in LucasArts games
Infinity Engine
Allows the creation of isometric computer role-playing games
Jade engine
Developed by Ubisoft, originally for Beyond Good & Evil
Jedi
A game engine developed by LucasArts for Star Wars: Dark Forces and Outlaws.
Kaneva Game Platform
A MMOG engine for independent and professional game development
Kinetica
A game engine developed by Sony for PlayStation 2
Leadwerks Engine
Leadwerks Engine is a 3D engine for rendering, sound, and physics in real-time games and simulations
Lemon Engine
Lemon Engine is a modular set of libraries for all aspects of game development across all major platforms
Lithtech Jupiter Ex
Developed by Monolith Productions to create the game F.E.A.R
LyN engine
Developed by Ubisoft, originally for Rabbids Go Home and Beyond Good & Evil 2.
Medusa
A C++ 3D game engine developed by Palestar and used in the DarkSpace MMO. It features distributed world simulation, single tool version control and asset realisation, cross-platform compatibility and an integrated client/server network system
Monumental Technology Suite
A MMOG platform, including server and client technology and development / live management tools.
MT Framework
Game engine created by Capcom and used for their games on Xbox 360, Playstation 3 and PC.
Multimedia Fusion 2
A 2D game development system
Multiverse Network
An MMOG platform, including server, client, and tools.
Odyssey Engine
Used to create three dimensional computer role-playing games, used in Star Wars: Knights of the Old Republic
Pie in the Sky
Used in two internal games by Pie in the Sky Software and then in the 3D Game Creation System and the games made with it
PhyreEngine
A cross platform (PC & PS3) graphics engine from Sony Computer Entertainment
Q (game engine)
A fully pluggable, extensible and customisable framework and tools from Qube Software for PC, Wii, PS2, PS3, Xbox, Xbox 360, PSP, iPhone etc created by the team behind Direct3D
RAGE
A game engine created by Rockstar Games to power their upcoming video games on the Xbox 360 and PlayStation 3. Implemented in Grand Theft Auto 4
RelentENGINE
A next-generation FPS engine supporting massive destroyable city environments and realistic vehicle control, makes extensive use of shader model 3
RenderWare
A 3D API and graphics rendering engine
Revolution3D
A 3D graphics engine developed by X-Dream Project
RPG Maker VX
A 2D engine to make top-down and isometric-style role-playing games for Windows
RPG Maker XP
A 2D engine to make top-down and isometric-style role-playing games for Windows
RPG Maker 2003
A 2D engine to make top-down and isometric-style role-playing games for Windows
RPG Maker 95
A 2D engine to make top-down and isometric-style role-playing games for Windows
SAGE engine
Used to create real-time strategy games
Scaleform
A vector graphics rendering engine used to display Adobe Flash-based user interfaces, HUDs, and animated textures for games in PC, Mac, Linux, Xbox 360, PlayStation 2, PlayStation Portable, PlayStation 3, and Wii
SCUMM engine
Used in LucasArts graphical adventure games
Serious Engine
The engine by Croteam used in the epic Serious Sam: The First Encounter and The Second Encounter
Shark 3D
A middleware from Spinor for computer, video games and realtime 3D applications
ShiVa
A game engine with an authoring tool to produce 3d real time applications for Windows, Mac OS X, Linux, WebOS, Android, and iPhone
Silent Storm engine
A turn-based tactics/tactical RPG game engine, used in Silent Storm
Sith
A game engine developed by LucasArts for Jedi Knight: Dark Forces II
Source engine
A game engine developed by Valve Software for Half-Life 2.The SDK comes with Half Life 2
Torque Game Engine
A modified version of a 3D computer game engine originally developed by Dynamix for the 2001 FPS Tribes 2
Torque Game Engine Advanced
A next-generation 3D game engine support modern GPU hardware and shaders
TOSHI
A fourth generation cross platform game engine designed by Blue Tongue Entertainment
Truevision3D
A 3D game engine using the DirectX API
Unigine
Cross-platform middleware engine
Unity
An open-ended 3D game/interactive software engine for web, Windows, Mac OS X, the iPhone, and Nintendo Wii
Unreal Engine
A game engine for PC, Xbox 360 and PlayStation 3
Vengeance engine
A video game engine based on the Unreal Engine 2/2.5
Vicious Engine
Available for Microsoft Windows, Sony PlayStation 2, Microsoft Xbox, and Sony PlayStation Portable
Virtools
A 3D engine combined with high-level development framework, used for game prototyping and rapid developments. Available for Windows, Macintosh, Xbox, PSP. Can publish standalone or for the 3DVia Web Player browser plugin
Vision Engine
A cross platform game engine, developed by Trinigy. Used in games such as: Arcania: A Gothic Tale, The Settlers 7: Paths to a Kingdom, Dungeon Hero, Cutthroat, and Three Investigators. Available for PC, Xbox360®, PLAYSTATION®3 and Nintendo Wii®, and now even browsers
Visual3D.NET Game Engine
All-in-One 3D game engine and toolset, fully written in C#/.NET for Windows A browser player is roadmapped for v1.1
WGAF
The game engine developed by Guild Software which powers their MMORPG Vendetta Online
X-Ray
The game engine developed by GSC Game World which powers their FPS series, “S.T.A.L.K.E.R”.
XnGine
Developed by Bethesda Softworks, one of the first true 3D engines
Zillions of Games
used to develop games that happen on a grid, like chess
8. Conclusions
The core functionality typically provided by a game engine includes a rendering engine (“renderer”) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, animation, artificial intelligence, networking, streaming, memory management, threading, localization support, and a scene graph. The process of game development is frequently economized by in large part reusing the same game engine to create different games.
Order Now