1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

what engine was used to make Civilization 3?

Discussion in 'Civ3 - General Discussions' started by U1I, Apr 7, 2021.

  1. U1I

    U1I Chieftain

    Joined:
    Apr 7, 2021
    Messages:
    6
    Gender:
    Male
    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.
     
  2. Puppeteer

    Puppeteer Emperor

    Joined:
    Oct 4, 2003
    Messages:
    1,367
    Location:
    Nomadic in the Rockes, USA
    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.
     
  3. Flintlock

    Flintlock King

    Joined:
    Sep 25, 2004
    Messages:
    646
    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.
    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.
     
    Puppeteer likes this.
  4. Knightfall

    Knightfall Warlord

    Joined:
    Jul 27, 2017
    Messages:
    108
    Gender:
    Male
    Location:
    United States
    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).
     
  5. U1I

    U1I Chieftain

    Joined:
    Apr 7, 2021
    Messages:
    6
    Gender:
    Male
    wow, thanks for the information!
     
    Knightfall likes this.

Share This Page