what engine was used to make Civilization 3?

U1I

Chieftain
Joined
Apr 7, 2021
Messages
6
This question just keeps going in my mind and i cant get it out, i have surfed the web but its all useless. The only place i can find is here. I know Gamebryo was used in Civ 4 and Firaxis LORE was used in Civ 5, but no matter how much I reserch I just cant find a anwser for Civ 3. If anyone knows information of this then please speak.
 
I don't believe there was any kind of reusable engine or library employed, unless you want to count DirectX as an engine, but it's more of a super-programming-interface that sits above BIOS, OS, and specific-driver calls.

To my best understanding, the game is coded in C++, relies on DirectX 8 (vanilla) or DirectX 9 (Conquests) for drawing to the screen. It will absolutely not run with less than 768 vertical resolution and 1024 horizontal resolution, but it can adjust well to even modern displays with an ini edit.

The graphics files are 8-bit (paletted) PCX files while the overall display is full 24-bit RGB. Some palette entries are replaced by foggy or shadowy transparency in the full display.

Animations are in 8-bit paletted FLIC format with slight but breaking modifications from the base specs. Audio is a weird format I'm not sure anyone has fully figured out yet but seems to be MIDI-like indexes referring to WAV files.

The SAV files are binary and compressed with PKWare DCL. I kind of think the save files are just binary dumps of the C++ object data, but I'm not as convinced of that as I used to be. It's definitely not any sort of schema-defined or database format.
 
The game was written in C++. It doesn't really use an engine, for example for file handling it interfaces directly with Windows. I don't know about sound. For graphics the game relies on a separate library implemented in jgl.dll. But as far as I can tell that library was written by Firaxis for Civ 3 then never used for anything else. I did some research into jgl.dll hoping to find a spec or some documentation but all I was able to turn up was "Jungle Graphics Library" which I'm pretty sure is unrelated. Unfortunately the library is also hard to analyze since it doesn't export many named functions, just one named "get_graphsy_object_ptr" then all calls to functions inside the DLL are done through a v-table.
I kind of think the save files are just binary dumps of the C++ object data, but I'm not as convinced of that as I used to be. It's definitely not any sort of schema-defined or database format.
Based on what I've seen of the game loading code it is very similar to a binary dump, at least for the basic game settings. The game just maps the save file then reads 4 bytes, sets one field in its internal object, reads another 4 bytes, sets the next field, etc.
 
PCGamingWiki doesn't list an engine either. If what others say is true and it was just coded in C++, they probably didn't use this in future games because of jank (especially in multiplayer).
 
Top Bottom