Other licensed 3D engines
Besides the id engines and Unreal, several engines were sold to other studios in the late 1990s and early 2000s. Each has well-known file formats that modders documented.
GoldSrc
Valve built GoldSrc for Half-Life (1998), starting from the Quake engine and adding parts of Quake II's code and its own systems.
hl.exeloads the engine fromhw.dll(hardware rendering: OpenGL or Direct3D) orsw.dll(software rendering).- The game logic is in two native DLLs:
hl.dll(the server: monsters, weapons, rules) andclient.dll(the client: the HUD, prediction, effects). Mods replace them. The Half-Life SDK, released by Valve, contains their source code. - Maps are BSP version 30 with external textures in
.wadfiles (WAD3). Models are.mdlwith skeletal animation. - Scripted sequences, triggers and entity connections are in the map's entity list as text.
- Xash3D FWGS is a compatible engine reimplementation that runs the original game DLLs.
LithTech
Monolith Productions made LithTech for Shogo (1998) and Blood II (1998), then licensed it. Later games include No One Lives Forever (2000) and Aliens versus Predator 2 (2001).
- Data is in
.REZarchives. Worlds are.dat, models.abcor.ltb, textures.dtx. - The game code is in DLLs (
object.ltofor the server objects,cshell.dllfor the client), which the engine loads. They are ordinary Windows DLLs under other names. - Some LithTech games shipped with tools and SDK source for modding. Use them.
NetImmerse and Gamebryo
NetImmerse, from Numerical Design Limited (NDL), was renamed Gamebryo in 2003. NDL became part of Emergent Game Technologies in 2005. It is a scene-graph library more than a full engine. Studios wrote the game around it.
- Games include Morrowind (2002), Dark Age of Camelot (2001), Oblivion (2006) and Civilization IV (2005).
- Models and scenes are
.niffiles: a list of blocks, each a class (NiNode,NiTriShape,NiTexturingProperty), with references between blocks by index. The NifTools project documents every version of the format. - RTTI names starting with
Niidentify the library code in the executable. Label it and move on to the game's own classes.
RenderWare
Criterion Software's RenderWare was a cross-platform graphics library used on PC and consoles (PlayStation 2, Xbox, GameCube). Games include Grand Theft Auto III (2001), Vice City (2002), San Andreas (2004) and Burnout (2001).
- Files are chunks with a type, a size and a library version:
.dff(models),.txd(texture dictionaries),.rws(streams). A reader can walk a file chunk by chunk from the headers. - The same game on PC and PlayStation 2 uses the same chunk format with different platform data inside, so a PC reader helps with the console version.
How these engines change the work
- The game code is often in separate DLLs. Study those first; the engine code is shared with other games and often documented by modders.
- Look for an SDK. GoldSrc, LithTech and several Unreal licensees released SDKs with the game code's headers or source for modders.
- Check the version of each format in its header before using a community reader.