Basically in the SDK, you have streaming data instances, and for convenience included dummy variables (for the Python feedback - or edit part in the game - where you can enter a value in, and see what it does in the game through the Python interface - immediately -- so they included some dummy values -- looks like about 11 different kinds) and then the other parts of the SDK -- some for C++ programming (Cvwhatever.cpp) type files and then the wrappers of the classes for the python (Cywhatever.cpp) and the "h" files for those files that need an "h" file header where the classes are declared and the functions calling made with overloaded functions classes and such. I mean if up in the IDE of VisualStudio.NET 2002, 2003, or 2005 (but VS.NET 2003 was used and has to be used because all of those programs are different compiling and linking -- read errors in the *.dll file that will not work with the game then since that is done by VS.NET 2003 also, so even if those *.dll's files did work and compiled, they mainly would not work with the game *.exe file for that reason since Microsoft changed everything around again, again, again).
So you have 'classes' and up pops the pop-up window of the IDE and suddenly that class has all these functions declared and like + 17 overloaded functions all for that one 'class' declared.
To me, even if someone wanted a different 'overloaded' function or different variables in the game, I don't know if they can change that much, but when calling the functions through Python and changing the data in the XML files, then different 'functions' of the classes may be able to be made.
In other words, you have the Interface into the game core executable file, and also you have the interface to the python files, and the streaming of the data between all of it.
Perhaps, one of the simplest things to do would be to declare or change the value for MAX_PLAYERS in the game to other than 19 -- one player is for the barbarians, and 18 Civs total including the player playing the game. But if that is changed can the game really handle it, and again adding more, may make it all slower in the end. So if someone changed that MAX_PLAYER value (which easily can be change) to 33 or even 25, then yes, that could be done without too much trouble, and probably would not interfere with about anything else.
Of course when we all get 6gHz computers, the game will be faster for everyone.
But if anyone is going to change the graphics around, and create Starcraft or whatever mod, then that may take a major rewrite of the SDK parts, and that will be a major mod and not a game-type minor mod that isn't so different.
Well, adding overloaded functions to the classes or adding functions to the 'classes' sure can be done, even with perhaps different variables to include, so in the end, if no one ever calls that overloaded function of that class, or the game does not use it as in the normal game, then it will not be a problem.
In other words, some players have already made a Great Person General or something like that, and the parts they used where already there for the Great Person (Artist, Engineer, Prophet) in the game. They added what they needed, so actually, that added part should not interfere with the normal game, if they made up new functions for the classes that were different than the ones for the game already.
Cvwhatever look like C++ parts into the game core exe.
Cywhatever look like C++ parts into the python calling interface that calls the XML files.
Well, back to staring at it all again.