- Joined
- Mar 17, 2007
- Messages
- 9,303
In case anyone ever feels like trying to contact Firaxis for the CivIII code again, I figured it might be handy to have a reference for the third-party code that Civ III is using, since as far as we can tell it's likely some third-party licensing agreement that's responsible for the sudden disappearance of communication last time. Unfortunately, it looks like there are several proprietary plugins that could be the reason for this. But better to know what they are, right?
What I've found so far:
Third-Party
Bink and IFC are used directly by the Civ III PTW+ executable, and thus are the most intrinsically linked.
Microsoft
For the most part, these are included with Windows, so redistributing them shouldn't be a problem.
Mystery
Based on what I've found so far, my guess is if it's something third-party that is restricting the code, it's Bink or IFC. Which also raises a couple of questions:
- If the game's source were released, but without these libraries, how much work would it be to get things working again? The source would be broken as released since the libraries would be missing, but the code could be modified to use alternatives instead (or just skip all the videos and joystick support?).
- Might IFC be the stumbling block? And if so, maybe just Vanilla being released would be possible? While not ideal, it would still be a nice improvement. And it wouldn't threaten Conquests revenue nearly as much.
And a question that some of our graphics gurus may know: Is Bink also used for animations in-game? If so, which I suspect it may be, that would make replacing it a lot more difficult. But it could be replaced by static images as an interim solution.
Realistically, I don't expect anything to change, but I figured why not list what we know? And I recently learned that (many years ago) Electronic Arts gave the Call to Power 2 code to Apolyton, which was encouraging. So even if there isn't a precedent with Firaxis, there is in the greater Civilization family.
It does make me wish Firaxis had John Carmack's philosophy when it came to open-sourcing old engines, and being careful not to use third-party components that would interfere with that. I read a good article on that subject recently, but unfortunately not so recently that I remember the link.
What I've found so far:
Third-Party
- binkw32.dll, by RAD Game Tools (link to website). This is used to play videos, such as the intro video and the spaceship video. The Mss32.dll file included with Civ is part of Bink, covering sound, and sound.dll uses Mss32.dll, and appears to also be part of Bink.
- IFC23.dll, by Immersion Corporation. These are the Immersion Foundation Classes (link to website). From what I gather, they mainly deal with touch-sensitive technologies, including things such as joysticks, trackballs, and gamepads. It looks like this DLL wasn't present in Vanilla, so perhaps Firaxis added some joystick support in PTW? I'm not really sure what Civ uses this for.
- SecuROM, by Sony. The infamous CD protection scheme. This isn't present in digital downloads, however, so this is unlikely to be the stumbling block. I believe this also encompasses drvmgt.dll, as they have essentially the same modification time.
- Game Spy Arcade, which you are asked if you'd like to install if installing via the CDs. This is optional, however, so it is also unlikely to be a stumbling block. It also is only in PTW and Conquests; I believe it's for Internet multiplayer.
Bink and IFC are used directly by the Civ III PTW+ executable, and thus are the most intrinsically linked.
Microsoft
For the most part, these are included with Windows, so redistributing them shouldn't be a problem.
- Lucida Sans font. This is included with recent (XP and later at least, maybe earlier) versions of Windows. It may not have been with 95/98, which may be why Civ includes it. But it probably could be dropped nowadays.
- Various DLLs that are part of Windows are used. These include ADVAPI32.dll, COMDLG32.dll, GDI32.dll (graphics), KERNEL32.dll, OLE32.dll, OPENGL32.dll (graphics), USER32.dll, WINMM.dll (multimedia), and WSOCK32.dll (networking). These are present with any version of Windows Civ supports, and aren't shipped with Civ itself, so shouldn't pose a problem.
Mystery
- jgl.dll. This one I'm not sure about. The most I can find is a post indicating it may have something to do with PCX files, and another indicating there were some pre-release bugs with it. But I don't know what it's source is, or whether Firaxis created it, or a third party. It looks like it may have been used in Sid Meier's Sim Golf, too. Update: See Rob's post #2, below, for a plausible suggestion of what this may be.
Based on what I've found so far, my guess is if it's something third-party that is restricting the code, it's Bink or IFC. Which also raises a couple of questions:
- If the game's source were released, but without these libraries, how much work would it be to get things working again? The source would be broken as released since the libraries would be missing, but the code could be modified to use alternatives instead (or just skip all the videos and joystick support?).
- Might IFC be the stumbling block? And if so, maybe just Vanilla being released would be possible? While not ideal, it would still be a nice improvement. And it wouldn't threaten Conquests revenue nearly as much.
And a question that some of our graphics gurus may know: Is Bink also used for animations in-game? If so, which I suspect it may be, that would make replacing it a lot more difficult. But it could be replaced by static images as an interim solution.
Realistically, I don't expect anything to change, but I figured why not list what we know? And I recently learned that (many years ago) Electronic Arts gave the Call to Power 2 code to Apolyton, which was encouraging. So even if there isn't a precedent with Firaxis, there is in the greater Civilization family.
It does make me wish Firaxis had John Carmack's philosophy when it came to open-sourcing old engines, and being careful not to use third-party components that would interfere with that. I read a good article on that subject recently, but unfortunately not so recently that I remember the link.