EngineX is the custom-built game engine created by Eurocom for Sphinx and the Cursed Mummy. The first game that released based on this technology was Buffy: Chaos Bleeds —in 2003— due to shorter development times. Eurocom reused and expanded it for all of the following projects until its eventual bankruptcy in 2012. The last in-house game using this technology was 007 Legends.
The engine was made to be generic and extendable from the start, completely decoupling each game's code from the reusable, common EngineX code that works as base and abstracts the underlying platform. Still, some game code was also reused to some degree and expanded between projects. For example, Buffy and Sphinx share most of the HUD code; with the main menu and memory card dialog elements being almost functionally identical.
The original version of the engine at the time of Sphinx supported the following platforms:
- PlayStation 2
- Windows (DirectX 7, internal)
After the THQ Nordic acquisition the original version was partially rewritten and expanded to work on the following platforms:
- Windows (OpenGL Core / SDL2 / OpenAL Soft), Linux, macOS
- Nintendo Switch
A more modern version of EngineX —reddubbed EngineXT— was the final incarnation used from 2005 onward. It was incrementally updated to support 7th generation consoles, as well as proper Windows support:
- PlayStation 3
- Xbox 360
- Windows (Direct3D 9)
- Wii U
- Main article: EuroLand
EuroLand —sometimes stylized as Euroland— was the internal all-in-one editor used by the company, it was tightly integrated with custom Maya and 3ds Max plugins to edit maps and geometry. After Sphinx, the company started a new iteration called EuroLand 2, with a revised scene format and improved tools.
Hashcodes are an integral part of how EngineX works. Instead of referencing objects by name or path, almost every object is tagged with an unique hexadecimal number. To make this number easier to read, they have a constant label starting with the
Both EngineX, EuroLand, and the game itself load and parse a header file called
hashcodes.h, where all these special numbers are defined in order. Hashcodes can be created directly from EuroLand.
A number is always made out of a section number (the prefix) and a self-incrementing ID. Here is an example:
- Every EuroLand file is tagged with a hashcode of the
HT_Filesection. If we open
Grafix/Animations/Main Player/MC_Sphinx.elfin EuroLand and click on Project to open Project Options > Hash Table we can see that it uses
- Once we export that file via App Targets > PC > right-click menu > Output (Optimised) the .EDB will retain the tag. An entry in Filelist.bin will map it to its exported .EDB counterpart. So when the game finds the hashcode in
LevelDatait will redirect it to
_bin_PC/MC_Sphin.edband the game will load it.
But not only .EDB files use hashcodes; from individual entities, textures, to animation datums, bone names or music tracks. All of them have their own unique tags (either manually-typed or generated).
And while a few of them are hardcoded to be used internally by the engine, some of them are not.