Game engine recreation
Game engine recreations are remade engine interpreters for video games that replace the original engine binary that came with the original game. A notable example of game engine recreation is ScummVM which successfully recreated the SCUMM engine of classical LucasArts' point and click adventures. For further examples, refer to the list of game engine recreations.
Motivation
Game engine recreations are made to allow the usage of classical games with newer operating system versions, recent hardware or even completely different operating systems than originally intended. Another motivation is the ability to fix engine bugs which is often hard or impossible with the original engines (with notable exceptions, see community patch) once a software has become unsupported abandonware, with the source code not available.
Methods
Top down
When game engine recreations are made in a top down development methodology, in the first step the general game's functionality is programmed and the structure is defined. Then, in later steps, the resulting engine is adapted to the specific detail behaviour of the original game, often by reverse engineering, debugging and profiling the originally. An example is OpenRA based on specifications contributed by the community by clean-room re-implementations[1] without dis-assembling the original executable, which result in game engines whose behavior differs from the original.[2] Another example is the Total Annihilation engine remake Spring Engine, which resulted in being used for many more games. Typically, this approach results in an approximation of the original behaviour only and not a "clock cycle wise" identical behaviour. On the positive side, running code exists faster and the finally resulting source code is less specifically tied to specific, single game and can be re-used as general game engine for other games.
Bottom up
Unlike Top down game engine recreations, bottom up dis-assembled/decompiled versions for a specific game are often able to replicate the behaviour of the originally exactly. In these cases, the game core is recreated bottom up with reverse engineering of the original dis-assembled binary executable, CPU instruction for instruction. In the development phase this has the disadvantage that for a long time no running prototype exists. Also on the negative side, the resulting code is very specific tied to this single game, often ugly ("pseudo-assembly code"[3][4]), and can hardly be reused as general game engine. Examples are CSBWin or OpenTTD. Most often, the result is also not called "game engine" but "game recreation" or "game clone". MAME is an example of a video game engine emulation project which also follows this philosophy for accurate representation of the games.
Source code ports
Occasionally, as was the case with some of the engines/game cores in ScummVM, the original developers have helped the projects by supplying the original source code (those can be then called source ports). This is the best case, optimal for accuracy and minimizing the effort. An example is Beneath a Steel Sky.
List of game engine recreations
Alternatives
Emulation of classical systems or operating systems is an alternative to an engine recreation; for instance DOSBox is a notable emulator of the PC/MS-DOS environment.
Static recompilation is another approach based on the original binary executable, potentially leading to better performance than emulation; an example is the 2014 ARM architecture version of StarCraft for the Pandora.[5][6][7]
Another alternative are source ports for the seldom cases that the source code is available; examples are Jagged Alliance 2[8] or Homeworld[9][10][11] (more examples in the List of commercial video games with available source code).
References
- ↑ https://github.com/OpenRA/OpenRA/wiki/FAQ#is-that-legal
- ↑ Development-Goals openra on github.com
- ↑ Release: Starcraft on pyra-handheld.com "As you can see it doesn't look much different from x86 disassembly, the only difference is that you can compile it for other 32bit archs (there is no way it would work on 64bit.."
- ↑ Chaos Strikes Back for Windows (and Linux, MacOS X, Pocket PC) on Dungeon Master Encyclopedia "About 120,000 lines of pseudo-assembly language. Crazy thing to do. But it works."
- ↑ Steinlechner, Peter (2014-03-10). "Starcraft für ARM-Handheld kompiliert" (in German). golem.de. Retrieved 2014-03-25.
- ↑ notaz (2014-03-04). "StarCraft". repo.openpandora.org. Retrieved 2014-03-26.
- ↑ notaz (2014-03-04). "Starcraft". openpandora.org. Retrieved 2014-03-29.
The "no source, no port" rule is not completely true, you can get something similar (but not the same) as a port through static recompilation. Similar stuff was done several times by M-HT for some DOS games. The game was also converted for Android with somewhat similar approach.
- ↑ Burnes, Andrew (2004-02-25). "Jagged Alliance 2 Source Code To Be Bundled With Wildfire". ign.com. Retrieved 2012-12-23.
- ↑ Largent, Andy (2003-10-08). "Homeworld Source Code Released". Inside Mac Games. Retrieved 2011-01-10.
- ↑ http://www.homeworldsdl.org/LICENSE.txt
- ↑ pandorapress staff (2011-06-23). "Game of the Week #3 – Homeworld SDL". pandorapress.net. Retrieved 2013-04-24.
[...] released port of HomeworldSDL. [...]enables your Pandora to experience the excellent work done by the guys at HomeworldSDL.