Idea/Feature requests for SDK Community Projects

Impaler[WrG]

Civ4:Col UI programmer
Joined
Dec 5, 2005
Messages
1,750
Location
Vallejo, California
As we start getting deeper into the SDK and fully realizing our potential we are seeing individuals create some simple changes like adding new XML values or tweeking an AI desision making function.

But we can do much grander things so I ask you the Mod makers and dreamers of dreams, WHAT DO YOU WANT?!

The most obvious request is Classic Civ Style Artilery, implemented in a clean straitforward manner, aka Units get some bombard flags, range values and strengths so its easy to adjust. So besides THAT what do people want

Some of my own ideas based on things I have seen and hear here.

Simple Building upgrading. Building upgrading in Python is a pain, Buildings A should simply have an XML tag for <UpgradesFrom> to indicate that it requires and replaces some other building and that previous building is nolonger buildable.

An even more ambitious goal...
Merging Mod content more easily, I think it would be great if Civ4 could load multiple mods or could atleast do some of the merging for us. The never completed modswitcher program went a long way towards solving this problem. Using the SDK it should be possible to create an even better version of this program and integrate it into Civ4 itself. No more tedious cutting and pasting!
 
A lot new xml values on promotions would be nice. Like attack and defend and so on.
 
Zuul said:
A lot new xml values on promotions would be nice. Like attack and defend and so on.
This may be one of the most requested feature. But it may lead to lots of incompatible mods unless the extenstion is done generically. If every moder starts to adds his/her own XML variables to the SDK DLL itself, they all will become incompatible and hard to merge mods. They can not share same game save file. So Modder should *NOT* add specific XML variable to SDK itself.
Then how to introduce new XML variable to game? I think that we should use and share common python dict type in SDK (using Boost.python.dict type) to store extended XML varaibles for each entity like unit or player. Then most moder don't have to add their own XML variable in SDK source code itself. And mod of different XML variable set can share same save file format even though unrecognized variable will be safely ignored..
I am thinking of extending CvInfoBase to add getValue( name) function. then we can introduce new XML variable to CvUnitInfo class like gc.getUnitInfo(iUnitType).getValue("iExtraStrength") in python.
Or We may be able to dyanamically (in runtime) manipulate CvUnit.__dict__ and use like gc.getUnitInfo(iUnitType).getExtraStrength()
 
I have a dream. :)

I will probably be able to do it myself one day (in 1/2 year after I finish learning Python and C++) but if someone feels it has to be done earlier, here is the dream:

I do not like cultural borders. Despite it's usually me who takes the enemy territory by culture means, I think it's a rather stupid system. Consider this: I take a piece of precious land from my rival, and he has no other option than to attack me if he wants it back. So he is the bad one then and the other civs will not like him.

So my proposal is that culture stays in game but does not affect boundaries, but relationship with neighbours. To claim land (represented by single tiles) a civ has to fight it/buy it/occupy it, whatever (I have to come up with more details yet).
 
Jouda I REALLY LIKE THAT IDEA. I was thinking something similar about single tile scale battles, but you built upon that saying that culture shound not affect borders. thats a really cool idea!
 
I think a great fix for this would be to fix the xml loader so that it could read default values from the schema. That way mods that introduced new schema elements wouldn't have to worry about incompatibility with other mods.
 
SimCutie said:
Then how to introduce new XML variable to game? I think that we should use and share common python dict type in SDK (using Boost.python.dict type) to store extended XML varaibles for each entity like unit or player. Then most moder don't have to add their own XML variable in SDK source code itself. And mod of different XML variable set can share same save file format even though unrecognized variable will be safely ignored..
I am thinking of extending CvInfoBase to add getValue( name) function. then we can introduce new XML variable to CvUnitInfo class like gc.getUnitInfo(iUnitType).getValue("iExtraStrength") in python.
Or We may be able to dyanamically (in runtime) manipulate CvUnit.__dict__ and use like gc.getUnitInfo(iUnitType).getExtraStrength()
SimCutie, is there some team working on this now? I prolly can't help with that effort, but would use the results!
 
I personally wouldn't mind seeing CtP2-style combat, or something similar.

For those who don't know about Call to Power 2, what I'm talking about is basically having all the units in a group/stack attack/defend together, as opposed to the traditional one-on-one fights. The thing that's neat about this, is that the game puts the units on each side into a formation, based on each unit's stats, with four designations: offensive, defensive, ranged, and flanking. The battles are conducted in rounds, and there's a tactical retreat option for the attacker (although it gives the defenders a free shot as you flee).

Considering the unit "checks and balances" (you know, unit types and promotions) that are in Civ IV, it seems to me that a system like this could have a lot of potential.






First and foremost, though, the forts and siege weapons need to be revamped, majorly. Other things that are prime candidates are (in no particular order): colonization, improved AI, revamped religions, and more spy/special actions (bioterrorism?).
 
what goose said and, well the idea of having multiple maps during a single game (for instance, moving from ground to space, or moving through dementions).
 
NikG said:
Surt -> this really isnt possible, if so the DLL should it self generate the code to extract the value and adding it into the save games, etc.

Hmm ... I don't see why modifying the CvXMLLoad cpp's couldn't do this. Seems like it would be at least fairly straightforward (though a fair amount of coding) to have the load value functions just try a lookup from the schema files if the xml read fails, rather than immediately returning an error.
 
NikG said:
hmmmm aint sure it is doable, but it may be, with some generics, templates whatever. But would it be worthwhile?

Well, that's a perfectly valid question. The advantage would be making it easier to merge multiple mods. Unfortunately, that's the sort of thing where the benefit is always to the other guy (the guy with the mod that gets merged), not the guy who does the work.

I may give it a go if I can find the time, but lately I barely have time to maintain SmartMap.
 
Back
Top Bottom