View Full Version : Wish list to Firaxis dev or next SDK?


SimCutie
May 12, 2006, 10:06 AM
We now have experienced SDK programming for about a month.
You will have quite a question, info you want to know about, or need help from Firaxis on SDK utilization. And future wish list ...
Let's start jot down our request for info on SDK and idea or wish-list for next version of SDK. Any topic will do. If we have enough good idea or suggestion on SDK, we may contact Friaxis and let our voice be heard by them.
Such wish item or new idea are always come and go, So let's write it down here lest we forget it when we will have an oppotunity to accomplish it. This thead can serve as a memorandum or TO-DO list for such case.

SimCutie
May 12, 2006, 10:26 AM
1. Debug compatible build version of Civilization4.exe excutable.
Current executable will crash if run in debug mode. We need Debug build version of Civ4.exe with nessesary debugging symbol information and linked with debugging Runtime.

2. Font symbol.
My first wish is about font symbol. Font symbol is one of frequently modded item for various MOD. But SDK has virtually no provision for adding or manipulating font symbol.
3. Initialization stub.
Civ4 has many stage of initialization but we can not get our own init fuction be called by Civ4 exe at right time. I need to init my class just before main menu is displayed. XML loading time seems to be bit early. I want execute my init after all civ sub systems are inited but right before main menu is displayed.

Impaler[WrG]
May 12, 2006, 10:08 PM
I too have had trouble with thouse Font symbol thingies, the implementation is very confusing and not at all easy to mod.

Better Debugging is definatly a must, as my Mods grow more complex the lack of Debugging becomes ever more painfull.

The Great Apple
May 18, 2006, 05:24 AM
I'd like to see a bit more power over the inputs to the graphics engine - at the moment it's a bit restricted.

SimCutie
May 23, 2006, 08:40 PM
Amomg some SDK API which is additionally exposed to Python by modder,
If I have to choose only one function that should be added to next version of Civ4 (virgin) DLL should be :
gDLL->getModName() which returns path of curently selected mod.
They should have gc.getDefineSTRING("MOD_PATH") ==> "Mods\<mod-name>\" in python.
Without it, it is very hard to figure out which mod is selected.
It is near crime of gross negligence by Firaxis that they didn't included it in first version of Civ4.

SimCutie
May 27, 2006, 03:57 PM
As we found out that Game Option and player Option does not work as intended even if we put addinitional option to it, This should be thing we request Firaxis to fix it.
With out proper option, we have to rely on our Custom Option screen which may be not suitable for game-specific or player-specfic option.

Dale
May 30, 2006, 10:20 PM
Email sent to Soren:


Hey Soren,

Some of the guys over at Civfanatics have posted some questions regarding the SDK. If you don't mind providing an answer for these, I'd appreciate it. BTW, I've just copy/pasted from the thread they made so some of the questions are written in that context. :)

1. Debug compatible build version of Civilization4.exe excutable.
2. Font symbol. My first wish is about font symbol. Font symbol is one of frequently modded item for various MOD. But SDK has virtually no provision for adding or manipulating font symbol.
3. Initialization stub.Civ4 has many stage of initialization but we can not get our own init fuction be called by Civ4 exe at right time. I need to init my class just before main menu is displayed. XML loading time seems to be bit early. I want execute my init after all civ sub systems are inited but right before main menu is displayed.
4. I'd like to see a bit more power over the inputs to the graphics engine - at the moment it's a bit restricted.
5. Amomg some SDK API which is additionally exposed to Python by modder, If I have to choose only one function that should be added to next version of Civ4 (virgin) DLL should be : gDLL->getModName() which returns path of curently selected mod. They should have gc.getDefineSTRING("MOD_PATH") ==> "Mods\<mod-name>\" in python.
Without it, it is very hard to figure out which mod is selected.

Thanks heaps Soren.

Dale

Dale
May 30, 2006, 10:20 PM
As we found out that Game Option and player Option does not work as intended even if we put addinitional option to it, This should be thing we request Firaxis to fix it.
With out proper option, we have to rely on our Custom Option screen which may be not suitable for game-specific or player-specfic option.

This used to work. I'll look into it and find out what broke. :)

Dale

SpoiledFruit
May 31, 2006, 06:34 PM
I was wondering what CSV software that Firaxis used as well as what happened to some of the SDK tools like the Unit Position app. (dont know the real name but it defined which direction units faced when attacking, moving, etc.)

Dale
Jun 01, 2006, 08:21 AM
Well, some bad news about the setup screens. They've been reverted back out of python and into the exe. Gone forever to adjustment. :(

I'm looking into other spots we could put the window. IE: while the map is being setup, our options interface pops up over the top. It's before the game, and in a spot where the user is usually waiting (or outside having a ciggie like me ;) ).

Dale

The Great Apple
Jun 01, 2006, 08:26 AM
I suggested something like that in another thread. Ideally it should all happen while the loading screen is up, and it should certainly come before the dawn of man screen comes up. I think we should be able to set a python trigger to load a screen of options at this stage, but I'd have to check.

Dale
Jun 01, 2006, 08:45 AM
Yeah should be able to pretty easily.

BTW, I checked an old version of the SDK and game options were set in CvGlobals and parsed through to the exe. Now, I'm not even 100% certain that adding game options in CvEnums.h does anything useful. When I added a game option there I couldn't click the OK button to start a game. Wierd. But I'll keep looking to see if we can have invisible game options.

Dale

Lord Olleus
Jun 02, 2006, 04:05 PM
I would like the possibility of adding new diplomatic treaties. At the moment it is impossible.

The Great Apple
Jun 04, 2006, 12:41 PM
Agreed - the ability to edit the diplomacy interface would be nice as well.

SpoiledFruit
Jun 04, 2006, 01:16 PM
Actually I think that is possible already.

The Great Apple
Jun 04, 2006, 02:10 PM
Hmmm - I haven't been able to find the files which control it. Most of the other interface screens are in the Pyhton/Screens directory, but there doesn't seem to be one for the diplomacy screen.

SpoiledFruit
Jun 04, 2006, 02:28 PM
Its in the CvDiplomacy.py in the main folder.

The Great Apple
Jun 04, 2006, 03:59 PM
I think this handles the AI responses, rather than the actual setting of the interface screens like the other screens.

SpoiledFruit
Jun 04, 2006, 04:25 PM
sorry, but I found the pointer to the function for the interface:

class CvDiplomacy:
"Code used by Civ Diplomacy interface"

def __init__(self):
"constructor - set up class vars, AI and User strings"
if DebugLogging:
print "Launching Diplomacy"

self.iLastResponseID = -1

self.diploScreen = CyDiplomacy()

diploScreen must be the interface, but where is the CyDiplomacy() function defined is the question. At least we know what we are looking for.

SimCutie
Jun 16, 2006, 08:42 PM
NUM_GAMEOPTION_TYPES and NUM_PLAYEROPTION_TYPES are hard-coded in
Civ4.exe. It is not just matter of Option screen display, but internal data space allocation. We can add few (less than 4) options , but if we add more than that, the Civ4.exe will crash intermittently. Make it varible number in Civ4.exe or at least, allocate enough space for it so that it will not crash when we add 10 options max. for each types of options.

SimCutie
Jul 27, 2006, 01:47 PM
Add getVersion Python API to SDK.
gc.getDefineINT("CIV4_VERSION") works only after loading "GlobalDefines" XML file.
It is unusable on Python "Init" event time or Python module load time. ( at least in vanilla Civ 161. I don't have Warlords yet.)
It should be usable right after Python subsystem initialized.
We can add it to our project. But it is essential that plain unmoded DLL also have same get version call so that python mod can work without modded DLL.
I suggest to add GC.setDefineINT("CIV4_VERSION", VERSION_NUMBER ); to CvGlobal initilization routine.
( after GlobalVaiable system is initialized.)