Game Engine: Difference between revisions

Everything About Fiction You Never Wanted to Know.
Content added Content deleted
m (categories and general cleanup)
m (Mass update links)
Line 2: Line 2:
In order to understand what a game engine is, it is necessary to take a moment and understand what games are made of. It ain't sugar and spice.
In order to understand what a game engine is, it is necessary to take a moment and understand what games are made of. It ain't sugar and spice.


Games are composed of two things: code and data. Code is what makes a game function, and data is what makes it ''fun''. Take ''[[Super Mario Bros (Video Game)|Super Mario Bros]].'' as an example. The game code defines the rules of the game. That Mario can jump, run, how fast he runs, that there are monsters, some monsters can be stomped on, etc. The game's data defines what Mario looks like, how he animates, and most importantly the arrangement of terrain and monsters that form levels.
Games are composed of two things: code and data. Code is what makes a game function, and data is what makes it ''fun''. Take ''[[Super Mario Bros. (video game)|Super Mario Bros]].'' as an example. The game code defines the rules of the game. That Mario can jump, run, how fast he runs, that there are monsters, some monsters can be stomped on, etc. The game's data defines what Mario looks like, how he animates, and most importantly the arrangement of terrain and monsters that form levels.


[[Game Mod|ROM hacking]] ''[[Super Mario Bros (Video Game)|Super Mario Bros]].'' can lead to many Mario-like games. You can replace Mario's sprite, what fireballs look like, and give it a total makeover. But unless you change the code itself, the game will have certain Mario-isms:
[[Game Mod|ROM hacking]] ''[[Super Mario Bros. (video game)|Super Mario Bros]].'' can lead to many Mario-like games. You can replace Mario's sprite, what fireballs look like, and give it a total makeover. But unless you change the code itself, the game will have certain Mario-isms:
* Fireballs (or whatever you draw in their place) will always go down and forward, bouncing along the ground.
* Fireballs (or whatever you draw in their place) will always go down and forward, bouncing along the ground.
* [[Bottomless Pits|Falling off the bottom of the screen will always result in death.]]
* [[Bottomless Pits|Falling off the bottom of the screen will always result in death.]]
Line 10: Line 10:
* And so on.
* And so on.


The game will always be to some degree ''[[Super Mario Bros (Video Game)|Super Mario Bros]].''
The game will always be to some degree ''[[Super Mario Bros. (video game)|Super Mario Bros]].''


A game engine is game code that is designed to be ''data-driven''. Unlike the above example, a proper game engine would allow the behavior of in-world entities to be defined in almost every way through data. Virtually all games have some data component, but only relatively recently has this component become flexible enough that two games built from the same engine can be very different from one another. That is, data defines both the function and the fun, while the code is just there to make the data do its job.
A game engine is game code that is designed to be ''data-driven''. Unlike the above example, a proper game engine would allow the behavior of in-world entities to be defined in almost every way through data. Virtually all games have some data component, but only relatively recently has this component become flexible enough that two games built from the same engine can be very different from one another. That is, data defines both the function and the fun, while the code is just there to make the data do its job.


One of the first cases of a true game engine was ''[[Quake (Video Game)|Quake]]''. It was a first-person shooter, but the game engine was much more flexible. It did not even make the assumption that the game was first-person; a user of the engine could pull the camera away to a third-person perspective. And the main character would be rendered there in third person with all of the controls intact and functional. With some work, ''Quake'' could have run a game like ''[[Super Mario 64 (Video Game)|Super Mario 64]]'', all without directly changing the code of the engine.
One of the first cases of a true game engine was ''[[Quake (series)|Quake]]''. It was a first-person shooter, but the game engine was much more flexible. It did not even make the assumption that the game was first-person; a user of the engine could pull the camera away to a third-person perspective. And the main character would be rendered there in third person with all of the controls intact and functional. With some work, ''Quake'' could have run a game like ''[[Super Mario 64]]'', all without directly changing the code of the engine.


Please note that this is a [[Lies to Children|simplification of a complex topic]]. Many game engines don't quite fit this definition, as the method of customizing an engine often involves writing code in addition to data. ''[[Half-Life]] 2'''s game engine, the Source engine, is modified by loading DLLs, which are compiled C/C++ code. Even ''Quake'' mods, written in so-called QuakeC, were compiled directly into virtual machine assembly code. Scripting throws a wrench into this as well, as scripts are code that is loaded like data. In that case, a game engine is basically just a library or module that handles 80% of the grunt-work in making a game: collision detection, that things can move, rendering things, etc. It is then up to the user to add the 20% that makes the game unique, whether through data and code or purely data.
Please note that this is a [[Lies to Children|simplification of a complex topic]]. Many game engines don't quite fit this definition, as the method of customizing an engine often involves writing code in addition to data. ''[[Half-Life]] 2'''s game engine, the Source engine, is modified by loading DLLs, which are compiled C/C++ code. Even ''Quake'' mods, written in so-called QuakeC, were compiled directly into virtual machine assembly code. Scripting throws a wrench into this as well, as scripts are code that is loaded like data. In that case, a game engine is basically just a library or module that handles 80% of the grunt-work in making a game: collision detection, that things can move, rendering things, etc. It is then up to the user to add the 20% that makes the game unique, whether through data and code or purely data.
Line 26: Line 26:
Engines can be internal, restricted to a particular development company, or external, which can be licensed for use by others. In-house "engines" are really just common codebases that multiple development teams in a company share. It is impossible to know whether these truly fit the definition of "game engine" because the different teams modify the source code for their own needs. Unless an engine is external, it is difficult to know what you can do with it ''without'' modifying the source code.
Engines can be internal, restricted to a particular development company, or external, which can be licensed for use by others. In-house "engines" are really just common codebases that multiple development teams in a company share. It is impossible to know whether these truly fit the definition of "game engine" because the different teams modify the source code for their own needs. Unless an engine is external, it is difficult to know what you can do with it ''without'' modifying the source code.


This may sound like a [[Game Maker]], but there is a difference. A [[Game Maker]] is limited to a specific style within a genre. This limitation is what allows them to be easier to use. Game Engines cover a wide range of possible game types. ''[[Super Mario World (Video Game)|Super Mario World]]'' [[Game Mod|level editing]] is effectively a Mario-style [[Game Maker]]. You can never make anything other than that kind of game. The line between the two, of course, is somewhat fuzzy. [[Yoshis Island (Video Game)|And when you touch that fuzzy, it can get dizzying.]]
This may sound like a [[Game Maker]], but there is a difference. A [[Game Maker]] is limited to a specific style within a genre. This limitation is what allows them to be easier to use. Game Engines cover a wide range of possible game types. ''[[Super Mario World (video game)|Super Mario World]]'' [[Game Mod|level editing]] is effectively a Mario-style [[Game Maker]]. You can never make anything other than that kind of game. The line between the two, of course, is somewhat fuzzy. [[Yoshis Island|And when you touch that fuzzy, it can get dizzying.]]
----
----
=== External Game Engines: ===
=== External Game Engines: ===
* SCUMM (Script Creation Utility for Maniac Mansion) by Lucasarts (while it's only possible to make adventure games with it, it's usually considered an engine due to its complexity and wide variety of games): ''[[Maniac Mansion]]'' (obviously), ''[[Monkey Island]]'' series (up to ''[[The Curse of Monkey Island (Video Game)|Curse]]''), ''[[Sam and Max Hit The Road]]'', ''[[The Dig]]'', ''[[Loom (Video Game)|Loom]]'', the ''[[Indiana Jones (Franchise)|Indiana Jones]]'' adventure games. [[Humongous Entertainment]] used it for every single game they made, such as the [[Putt Putt]], [[Freddi Fish]], [[Pajama Sam]], [[Spy Fox]], and [[Backyard Sports]] series. Went through 11 versions, each one adding more features. Also popular for fanmade games, thanks to [http://www.scummvm.org/ ScummVM].
* SCUMM (Script Creation Utility for Maniac Mansion) by Lucasarts (while it's only possible to make adventure games with it, it's usually considered an engine due to its complexity and wide variety of games): ''[[Maniac Mansion]]'' (obviously), ''[[Monkey Island]]'' series (up to ''[[The Curse of Monkey Island|Curse]]''), ''[[Sam and Max Hit The Road]]'', ''[[The Dig]]'', ''[[Loom (video game)|Loom]]'', the ''[[Indiana Jones]]'' adventure games. [[Humongous Entertainment]] used it for every single game they made, such as the [[Putt-Putt]], [[Freddi Fish]], [[Pajama Sam]], [[Spy Fox]], and [[Backyard Sports]] series. Went through 11 versions, each one adding more features. Also popular for fanmade games, thanks to [http://www.scummvm.org/ ScummVM].
* id Tech engines by [[Id Software]]
* id Tech engines by [[Id Software]]
** ''[[Video Game]]/Wolfenstein 3D'' engine: ''[[Wolfenstein 3D (Video Game)|Wolfenstein 3D]]'', ''[[Rise of the Triad]]''
** ''[[Video Game]]/Wolfenstein 3D'' engine: ''[[Wolfenstein 3D]]'', ''[[Rise of the Triad]]''
** ''Doom'' Engine: ''[[Doom]]'', ''[[Hexen]]'', ''[[Heretic]]'', ''[[Strife]]''.
** ''Doom'' Engine: ''[[Doom]]'', ''[[Hexen]]'', ''[[Heretic]]'', ''[[Strife]]''.
** ''Quake'' engine: ''[[Quake (Video Game)|Quake]]'', ''[[Hexen]] II''
** ''Quake'' engine: ''[[Quake (series)|Quake]]'', ''[[Hexen]] II''
*** Gold Source Engine by [[Valve]], a modified ''Quake'' engine: ''[[Half-Life]]'', ''[[Counter-Strike (Video Game)|Counter-Strike]]''
*** Gold Source Engine by [[Valve]], a modified ''Quake'' engine: ''[[Half-Life]]'', ''[[Counter-Strike]]''
** ''Quake II'' Engine: ''[[Quake II (Video Game)|Quake II]]'', ''[[Heretic]] II'', ''[[Daikatana (Video Game)|Daikatana]]'', ''[[Soldier of Fortune]]''
** ''Quake II'' Engine: ''[[Quake II]]'', ''[[Heretic]] II'', ''[[Daikatana]]'', ''[[Soldier of Fortune]]''
** id Tech 3 (aka the ''Quake III Arena'' Engine): ''[[Call of Duty]]'' 1, ''[[Quake III Arena (Video Game)|Quake III Arena]]'' (and by extension, ''[http://www.quakelive.com Quake Live]''), ''[[American McGee's Alice]]'', ''[[Return to Castle Wolfenstein]]'', ''[[Dark Forces Saga|Star Wars: Jedi Knight II - Jedi Outcast, Star Wars: Jedi Knight - Jedi Academy]]''
** id Tech 3 (aka the ''Quake III Arena'' Engine): ''[[Call of Duty]]'' 1, ''[[Quake III Arena]]'' (and by extension, ''[http://www.quakelive.com Quake Live]''), ''[[American McGee's Alice]]'', ''[[Return to Castle Wolfenstein]]'', ''[[Dark Forces Saga|Star Wars: Jedi Knight II - Jedi Outcast, Star Wars: Jedi Knight - Jedi Academy]]''
*** IW Engine by Infinity Ward, as the name implies: used for ''[[Call of Duty]]'' (from ''Call of Duty 2'' onwards) and the newer ''[[James Bond]]'' licensed games.
*** IW Engine by Infinity Ward, as the name implies: used for ''[[Call of Duty]]'' (from ''Call of Duty 2'' onwards) and the newer ''[[James Bond]]'' licensed games.
*** ioquake3: an open-source fork of id Tech 3. Used in ''[[Open Arena]]'' and ''[[Urban Terror]]'', among others.
*** ioquake3: an open-source fork of id Tech 3. Used in ''[[OpenArena]]'' and ''[[Urban Terror]]'', among others.
** id Tech 4 (aka the ''Doom 3'' Engine): ''[[Doom]] 3'', ''[[Quake IV (Video Game)|Quake IV]]'', ''[[Prey]]'', ''[[Wolfenstein (Video Game)|Wolfenstein]]''
** id Tech 4 (aka the ''Doom 3'' Engine): ''[[Doom]] 3'', ''[[Quake 4|Quake IV]]'', ''[[Prey]]'', ''[[Wolfenstein (2009 video game)|Wolfenstein]]''
** id Tech 5: ''[[Rage (Video Game)|Rage]]'', ''[[Doom]] 4''
** id Tech 5: ''[[Rage (video game)|Rage]]'', ''[[Doom]] 4''
* The Unreal Engine series by [[Epic Games]] (named for the ''[[Unreal]]'' series, which was the flagship series for it until the more commercially-profitable ''[[Gears of War]]'' took over the role)
* The Unreal Engine series by [[Epic Games]] (named for the ''[[Unreal]]'' series, which was the flagship series for it until the more commercially-profitable ''[[Gears of War]]'' took over the role)
** Unreal Engine 1: ''[[Unreal (Video Game)|Unreal]]'', ''[[Unreal Tournament (Video Game)|Unreal Tournament]]'', ''[[Rune]]'', ''[[Deus Ex (Video Game)|Deus Ex]]'', ''[[The Wheel of Time]]'', ''[[Clive Barker]]'s [[Undying]]''. (And [[What Could Have Been|if they hadn't been canned]], ''[[Jazz Jackrabbit (Video Game)|Jazz Jackrabbit]] [[Third Is 3D|3D]]'' and a ''Hired Guns'' sequel to the old DOS /[[Amiga]] game.)
** Unreal Engine 1: ''[[Unreal]]'', ''[[Unreal Tournament]]'', ''[[Rune]]'', ''[[Deus Ex]]'', ''[[The Wheel of Time]]'', ''[[Clive Barker]]'s [[Undying]]''. (And [[What Could Have Been|if they hadn't been canned]], ''[[Jazz Jackrabbit]] [[Third Is 3D|3D]]'' and a ''Hired Guns'' sequel to the old DOS /[[Amiga]] game.)
** Unreal Engine 2 (and 2.5): ''[[Unreal Tournament 2004 (Video Game)|Unreal Tournament 2004]]'', ''[[Splinter Cell]]'', ''XIII'', ''[[Red Steel]]'', ''[[Tribes Vengeance]]'', ''[[Red Orchestra]]'', ''[[Killing Floor (Video Game)|Killing Floor]]'', ''[[Postal|Postal 2]]'', etc.
** Unreal Engine 2 (and 2.5): ''[[Unreal Tournament 2004]]'', ''[[Splinter Cell]]'', ''XIII'', ''[[Red Steel]]'', ''[[Tribes: Vengeance]]'', ''[[Red Orchestra: Ostfront 41-45]]'', ''[[Killing Floor]]'', ''[[Postal|Postal 2]]'', etc.
** Unreal Engine 3 (probably the most popular engine for HD games): ''[[Gears of War]]'', ''[[Unreal Tournament III (Video Game)|Unreal Tournament III]]'', ''[[Bulletstorm (Video Game)|Bulletstorm]]'', ''[[Bio Shock]]'', ''[[Mass Effect]]'', ''[[The Last Remnant]]'', ''[[Lost Odyssey]]'', ''[[Mirrors Edge]]'', ''[[Batman Arkham Asylum]]'', ''[[Batman Arkham City]]'', ''[[Asura's Wrath]]'' etc.
** Unreal Engine 3 (probably the most popular engine for HD games): ''[[Gears of War]]'', ''[[Unreal Tournament 3|Unreal Tournament III]]'', ''[[Bulletstorm]]'', ''[[Bioshock]]'', ''[[Mass Effect]]'', ''[[The Last Remnant]]'', ''[[Lost Odyssey]]'', ''[[Mirror's Edge]]'', ''[[Batman: Arkham Asylum]]'', ''[[Batman: Arkham City]]'', ''[[Asura's Wrath]]'' etc.
*** Also is the subject of a lawsuit over ''[[Too Human]]'', charging [[Epic Games]] with selling the engine unfinished and giving bad support for developers licensing it.
*** Also is the subject of a lawsuit over ''[[Too Human]]'', charging [[Epic Games]] with selling the engine unfinished and giving bad support for developers licensing it.
* Source Engine by [[Valve]]: ''[[Half-Life 2 (Video Game)|Half-Life 2]]'', ''[[Counter-Strike (Video Game)|Counter-Strike]]: Source'', ''[[Left 4 Dead (Video Game)|Left 4 Dead]]'', ''[[Portal (Video Game)|Portal]]'', ''[[Portal 2 (Video Game)|Portal 2]]'', ''[[Team Fortress 2 (Video Game)|Team Fortress 2]]'', ''[[Dota 2 (Video Game)|Dota 2]]'', ''[[Vampire: The Masquerade Bloodlines (Video Game)|Vampire: The Masquerade Bloodlines]]'', ''[[Postal|Postal 3]]''
* Source Engine by [[Valve]]: ''[[Half-Life 2]]'', ''[[Counter-Strike]]: Source'', ''[[Left 4 Dead]]'', ''[[Portal (series)|Portal]]'', ''[[Portal 2]]'', ''[[Team Fortress 2]]'', ''[[Dota 2]]'', ''[[Vampire: The Masquerade Bloodlines]]'', ''[[Postal|Postal 3]]''
* The Torque Game Engine family by [http://www.garagegames.com/ Garage Games]: ''[[Penny Arcade Adventures]]'', ''[[Tribes]] 2''
* The Torque Game Engine family by [http://www.garagegames.com/ Garage Games]: ''[[Penny Arcade Adventures]]'', ''[[Tribes]] 2''
* The Lithtech engine by Monolith/Touchdown: ''[[Shogo Mobile Armor Division (Video Game)|Shogo Mobile Armor Division]]'', ''[[No One Lives Forever]]'', ''[[Tron Two Point Oh (Video Game)|Tron 2.0]]'', ''[[FEAR]]'', ''[[Condemned]]'', ''[[Alien vs. Predator]] 2''.
* The Lithtech engine by Monolith/Touchdown: ''[[Shogo: Mobile Armor Division]]'', ''[[No One Lives Forever]]'', ''[[Tron 2.0]]'', ''[[F.E.A.R.]]'', ''[[Condemned]]'', ''[[Alien vs. Predator]] 2''.
* The NetImmerse/Gamebryo engine: ''[[The Elder Scrolls]]'' since ''[[The Elder Scrolls III Morrowind (Video Game)|The Elder Scrolls III Morrowind]]'', ''[[Warhammer Online]]'', ''[[Freedom Force]]'', ''[[Fallout]] 3'', ''[[Epic Mickey]]''
* The NetImmerse/Gamebryo engine: ''[[The Elder Scrolls]]'' since ''[[The Elder Scrolls III Morrowind]]'', ''[[Warhammer Online]]'', ''[[Freedom Force]]'', ''[[Fallout]] 3'', ''[[Epic Mickey]]''
* An early example might be [[Infocom]]'s decades old Z-machine, still in use for [[Interactive Fiction]].
* An early example might be [[Infocom]]'s decades old Z-machine, still in use for [[Interactive Fiction]].
** And at around the same time, the Freescape engine from Incentive (now Superscape), designed for the implementation of full-3D games even on 8-bit machines. On those it managed about one frame every two seconds, but hey, the fact that it worked at all was amazing back then.
** And at around the same time, the Freescape engine from Incentive (now Superscape), designed for the implementation of full-3D games even on 8-bit machines. On those it managed about one frame every two seconds, but hey, the fact that it worked at all was amazing back then.
* The CryENGINE, made by Crytek: ''[[Far Cry]]'', ''[[Crysis (Video Game)|Crysis]]'', ''[[Aion]]''
* The CryENGINE, made by Crytek: ''[[Far Cry]]'', ''[[Crysis (series)|Crysis]]'', ''[[Aion]]''
* [http://www.yoyogames.com/make Game Maker] is technically complex enough to be considered a full-fledged 2D [[Game Engine]], not a [[Game Maker]]. [[Irony|Ironic.]]
* [http://www.yoyogames.com/make Game Maker] is technically complex enough to be considered a full-fledged 2D [[Game Engine]], not a [[Game Maker]]. [[Irony|Ironic.]]
** If you know what you're doing, you can even make 3D games with it. Those are much less common, though, and with good reason; They are much harder to do than any 2D game.
** If you know what you're doing, you can even make 3D games with it. Those are much less common, though, and with good reason; They are much harder to do than any 2D game.
* [[wikipedia:Build engine|Build engine]] (was written by Ken Silverman), which used in ''[[Duke Nukem 3D (Video Game)|Duke Nukem 3D]]'', ''[[Shadow Warrior]]'', ''[[Blood]]'' and a couple of lesser obscure games.
* [[wikipedia:Build engine|Build engine]] (was written by Ken Silverman), which used in ''[[Duke Nukem 3D]]'', ''[[Shadow Warrior]]'', ''[[Blood]]'' and a couple of lesser obscure games.
* [[Bio Ware]] made a habit of making a new engine for each Next Big Thing they bring out (except ''[[Mass Effect]]'' and ''[[Star Warsthe Old Republic]]''). The ealier ones have been licensed to other companies:
* [[BioWare]] made a habit of making a new engine for each Next Big Thing they bring out (except ''[[Mass Effect]]'' and ''[[Star Wars: The Old Republic]]''). The ealier ones have been licensed to other companies:
** Infinity Engine (1998-2002): Originally made for ''[[Baldurs Gate]]'' (and sequel), but licensed to Black Isle Studios for ''[[Planescape Torment]]'' and ''[[Icewind Dale]]'' (and sequel)
** Infinity Engine (1998-2002): Originally made for ''[[Baldur's Gate]]'' (and sequel), but licensed to Black Isle Studios for ''[[Planescape: Torment]]'' and ''[[Icewind Dale]]'' (and sequel)
** Aurora Engine (2002-2007): ''[[Neverwinter Nights]]'', ''[[The Witcher]]'' by CD Projekt
** Aurora Engine (2002-2007): ''[[Neverwinter Nights]]'', ''[[The Witcher]]'' by CD Projekt
*** Electron Engine (2006-ongoing): An offshoot of Aurora, used by Obsidian Entertainment for ''[[Neverwinter Nights]] 2''
*** Electron Engine (2006-ongoing): An offshoot of Aurora, used by Obsidian Entertainment for ''[[Neverwinter Nights]] 2''
Line 72: Line 72:


=== Internally Developed Game Engines: ===
=== Internally Developed Game Engines: ===
* The 007 Goldeneye engine by [[Rareware]], used in both [[Golden Eye 1997 (Video Game)|the game of the same name]], and the spiritual successor ''[[Perfect Dark]]''.
* The 007 Goldeneye engine by [[Rareware]], used in both [[GoldenEye 007 (1997 video game)|the game of the same name]], and the spiritual successor ''[[Perfect Dark]]''.
* The MT Framework, made by [[Capcom]]: ''[[Dead Rising]]'', ''[[Lost Planet]]'', ''[[Devil May Cry]] 4'', ''[[Resident Evil 5]]'', ''[[Marvel vs. Capcom 3 (Video Game)|Marvel vs. Capcom 3]]''
* The MT Framework, made by [[Capcom]]: ''[[Dead Rising]]'', ''[[Lost Planet]]'', ''[[Devil May Cry]] 4'', ''[[Resident Evil 5]]'', ''[[Marvel vs. Capcom 3]]''
* Crystal Tools (originally called the White Engine) by [[Square Enix]]: ''[[Final Fantasy XIII (Video Game)|Final Fantasy XIII]]'', ''[[Final Fantasy Versus XIII (Video Game)|Final Fantasy Versus XIII]]'' and ''[[Final Fantasy XIV (Video Game)|Final Fantasy XIV]]''. Not to be confused with the Crystal Engine, which was used in [[Square Enix]]-published games ''[[Tomb Raider]]: Legend'' and ''[[Deus Ex Human Revolution (Video Game)|Deus Ex Human Revolution]]''.
* Crystal Tools (originally called the White Engine) by [[Square Enix]]: ''[[Final Fantasy XIII]]'', ''[[Final Fantasy Versus XIII]]'' and ''[[Final Fantasy XIV]]''. Not to be confused with the Crystal Engine, which was used in [[Square Enix]]-published games ''[[Tomb Raider]]: Legend'' and ''[[Deus Ex: Human Revolution|Deus Ex Human Revolution]]''.
* ''[[Men of War]]'' has the GEM Engine, previously used for the prequel ''Faces of War''.
* ''[[Men of War]]'' has the GEM Engine, previously used for the prequel ''Faces of War''.
* The [[Take Two Interactive|Rockstar]] Advanced Game Engine ([[Fun With Acronyms|RAGE]]), which is used in ''[[Grand Theft Auto IV]]'', ''[[Midnight Club]]: Los Angeles'', and ''[[Red Dead Redemption]]''.
* The [[Take Two Interactive|Rockstar]] Advanced Game Engine ([[Fun with Acronyms|RAGE]]), which is used in ''[[Grand Theft Auto IV]]'', ''[[Midnight Club]]: Los Angeles'', and ''[[Red Dead Redemption]]''.
* The Dark Engine created by the now defunct Looking Glass Studios and used in the first two ''[[Thief]]'' games and ''[[System Shock]] II''.
* The Dark Engine created by the now defunct Looking Glass Studios and used in the first two ''[[Thief]]'' games and ''[[System Shock]] II''.
* Hedgehog Engine by [[Sega]] (named for ''[[Sonic the Hedgehog]]'', the only series to use this engine so far): An engine built to render objects very quickly. Used in the HD versions of ''[[Sonic Unleashed (Video Game)|Sonic Unleashed]]'' and ''[[Sonic Generations (Video Game)|Sonic Generations]]''.
* Hedgehog Engine by [[Sega]] (named for ''[[Sonic the Hedgehog]]'', the only series to use this engine so far): An engine built to render objects very quickly. Used in the HD versions of ''[[Sonic Unleashed]]'' and ''[[Sonic Generations]]''.
* Frosbite by DICE: [[Battlefield (Video Game)|Battlefield]] series (from ''Battlefield 1943'' onwards), ''[[Need for Speed]]: The Run'', the ''[[Medal of Honor]]'' reboot's multiplayer
* Frosbite by DICE: [[Battlefield (series)|Battlefield]] series (from ''Battlefield 1943'' onwards), ''[[Need for Speed]]: The Run'', the ''[[Medal of Honor]]'' reboot's multiplayer
* UbiArt Framework by [[Ubisoft]]: ''[[Rayman Origins]]''
* UbiArt Framework by [[Ubisoft]]: ''[[Rayman Origins]]''


=== Things That Are Commonly Called Engines But Aren't: ===
=== Things That Are Commonly Called Engines But Aren't: ===
* [http://www.havok.com/ The Havok "Engine"]. This is not an engine; [[Wreaking Havok|it is a physics library.]]
* [http://www.havok.com/ The Havok "Engine"]. This is not an engine; [[Wreaking Havok|it is a physics library.]]
* Renderware, developed by Criterion Games and bought out by [[Electronic Arts]] (notable for making [[Play Station 2]] development a lot easier). This is not in the most technical sense an engine, because it does not provide a means for using it without modifying the source code. It is a codebase, a large code library that serves as a useful starting point for making games, but it has no ''inherent'' extensibility built into it besides writing code. Games made using this codebase include ''[[Burnout]]'' (Criterion's flagship series), ''[[Grand Theft Auto]] ([[Grand Theft Auto III (Video Game)|III]], [[Grand Theft Auto Vice City (Video Game)|Vice City]], and [[Grand Theft Auto San Andreas (Video Game)|San Andreas]])'', ''[[Sonic Heroes (Video Game)|Sonic Heroes]]'' and ''[[SpongeBob SquarePants (Video Game)|SpongeBob SquarePants]]: Battle for Bikini Bottom''.
* Renderware, developed by Criterion Games and bought out by [[Electronic Arts]] (notable for making [[Play Station 2]] development a lot easier). This is not in the most technical sense an engine, because it does not provide a means for using it without modifying the source code. It is a codebase, a large code library that serves as a useful starting point for making games, but it has no ''inherent'' extensibility built into it besides writing code. Games made using this codebase include ''[[Burnout]]'' (Criterion's flagship series), ''[[Grand Theft Auto]] ([[Grand Theft Auto III|III]], [[Grand Theft Auto Vice City|Vice City]], and [[Grand Theft Auto San Andreas|San Andreas]])'', ''[[Sonic Heroes]]'' and ''[[SpongeBob SquarePants (video game)|SpongeBob SquarePants]]: Battle for Bikini Bottom''.
* Unity 3D (2006-present) and Cocos2d (2008-present): These are commonly used for making [[IOS Games]], but like Renderware above, they are ''not'' engines in the above definition.
* Unity 3D (2006-present) and Cocos2d (2008-present): These are commonly used for making [[IOS Games]], but like Renderware above, they are ''not'' engines in the above definition.



Revision as of 22:48, 8 April 2014

In order to understand what a game engine is, it is necessary to take a moment and understand what games are made of. It ain't sugar and spice.

Games are composed of two things: code and data. Code is what makes a game function, and data is what makes it fun. Take Super Mario Bros. as an example. The game code defines the rules of the game. That Mario can jump, run, how fast he runs, that there are monsters, some monsters can be stomped on, etc. The game's data defines what Mario looks like, how he animates, and most importantly the arrangement of terrain and monsters that form levels.

ROM hacking Super Mario Bros. can lead to many Mario-like games. You can replace Mario's sprite, what fireballs look like, and give it a total makeover. But unless you change the code itself, the game will have certain Mario-isms:

The game will always be to some degree Super Mario Bros.

A game engine is game code that is designed to be data-driven. Unlike the above example, a proper game engine would allow the behavior of in-world entities to be defined in almost every way through data. Virtually all games have some data component, but only relatively recently has this component become flexible enough that two games built from the same engine can be very different from one another. That is, data defines both the function and the fun, while the code is just there to make the data do its job.

One of the first cases of a true game engine was Quake. It was a first-person shooter, but the game engine was much more flexible. It did not even make the assumption that the game was first-person; a user of the engine could pull the camera away to a third-person perspective. And the main character would be rendered there in third person with all of the controls intact and functional. With some work, Quake could have run a game like Super Mario 64, all without directly changing the code of the engine.

Please note that this is a simplification of a complex topic. Many game engines don't quite fit this definition, as the method of customizing an engine often involves writing code in addition to data. Half-Life 2's game engine, the Source engine, is modified by loading DLLs, which are compiled C/C++ code. Even Quake mods, written in so-called QuakeC, were compiled directly into virtual machine assembly code. Scripting throws a wrench into this as well, as scripts are code that is loaded like data. In that case, a game engine is basically just a library or module that handles 80% of the grunt-work in making a game: collision detection, that things can move, rendering things, etc. It is then up to the user to add the 20% that makes the game unique, whether through data and code or purely data.

Also making this more complex are people who sell licenses to engines that involve handing over source code, which is pretty much any commercially available engine. No game developer worth his salt is going to build his game based on your assurance that your engine is bug-free. This allows developers using the engine to actually change the engine code itself, not just layering new code on top of the engine. And developers frequently avail themselves of this opportunity. So a game that claims that they are using the X engine probably made some changes to X.

The general rule of thumb is this: You know it's an engine if you don't have to actually change the engine's core code to make a game that is substantially different game from other games made with this engine.

As a bonus, games that are significantly "enginified" are also very easily modded, and games using the same engine are easy to port if other games using the same engine have already been ported.

Engines can be internal, restricted to a particular development company, or external, which can be licensed for use by others. In-house "engines" are really just common codebases that multiple development teams in a company share. It is impossible to know whether these truly fit the definition of "game engine" because the different teams modify the source code for their own needs. Unless an engine is external, it is difficult to know what you can do with it without modifying the source code.

This may sound like a Game Maker, but there is a difference. A Game Maker is limited to a specific style within a genre. This limitation is what allows them to be easier to use. Game Engines cover a wide range of possible game types. Super Mario World level editing is effectively a Mario-style Game Maker. You can never make anything other than that kind of game. The line between the two, of course, is somewhat fuzzy. And when you touch that fuzzy, it can get dizzying.


External Game Engines:

  • BYOND: A 2D tile-based multiplayer game engine. Used by several games with articles on this wiki.
  • Serious Engine by Croteam (named for Serious Sam):
    • Serious Engine 1: Serious Sam (The First Encounter and The Second Encounter), Carnivores: Cityscapes, Deer Hunter 2003, Bird Hunter 2003: Legendary Hunting, Nitro Family, Alpha Black Zero: Intrepid Protocol
    • Serious Engine 2: Serious Sam II
    • Serious Engine 3: The HD remakes of Serious Sam (The First Encounter and The Second Encounter), Serious Sam III: BFE

Internally Developed Game Engines:

Things That Are Commonly Called Engines But Aren't:

  • The Havok "Engine". This is not an engine; it is a physics library.
  • Renderware, developed by Criterion Games and bought out by Electronic Arts (notable for making Play Station 2 development a lot easier). This is not in the most technical sense an engine, because it does not provide a means for using it without modifying the source code. It is a codebase, a large code library that serves as a useful starting point for making games, but it has no inherent extensibility built into it besides writing code. Games made using this codebase include Burnout (Criterion's flagship series), Grand Theft Auto (III, Vice City, and San Andreas), Sonic Heroes and SpongeBob SquarePants: Battle for Bikini Bottom.
  • Unity 3D (2006-present) and Cocos2d (2008-present): These are commonly used for making IOS Games, but like Renderware above, they are not engines in the above definition.