Petition for a Mod Manager Program (instead of a bunch of mix mods)

Aeon221

Lord of the Cheese Helmet
Joined
Apr 22, 2003
Messages
1,995
Now that c4 has been out for a while, I'm sure we have all noticed the new phenomenon of mix mods. These are 'meta-mods', if you will, that attempt to synchronize various other mods in order to allow them to be played with one another.

These mods are inefficient, and often filled with additions added by the compiler that some players may not want. Also, some combinations just aren't explored because no compiler has an interest in them.

So, in the interest of inspiring sanity, ending the meta mod phenomenon, and making life easier for the whole c4 community, I request that someone with some serious coding experience make a Civ4 Mod Manager. Other games have them, and ours should be no exception.

Mod managers, such as the one I have linked you to below, allow you to check and uncheck the mods you would like active in a particular game. They also usually have sanity checks to prevent incompatible mods from being used together.

In Morrowind, the manager would simply use the segments from both that were compatible, and pick whichever one loaded second for the other bits. In Freelancer, the manager simply does not allow you to load incompatibles.

If you want to do do something which will gain you instant fame in the community, if you wish to be remembered forever as the human who stopped the influx of meta-mods, or if you simply wish to demonstrate how utterly superior you are, I beg you to change this mod manager from a dream into a reality!

If you simply wish to support the dream, sign away below!





 
Signed, because I am such a lovely person to think of such a great idea! :P
 
Civ4 is much more than game that can be modded, it is a game engine. Its like asking to make a tool that would allow you to combine two different games just based on the fact that they are both written in C++.

Its possible to make a game of pac-man out of civ4, its possible to make a real-time game.

What we have seen so far from the mods are just the beginings of what is possible. Im very happy with Fall from Heaven, but its only scratching the surface of what is possible. As time goes on the mods being released will be more and more complex, not simplier.

What could be done is to come up with standard system for writing modpacks that includes:

1. A single hook in a common file and everything else in modpack specific files.

2. The ability to enable/disable the modpack from the custom game menu.
 
One thing that I've seen a little bit of, and that I really liked, is mod-specific flies. For example, Mods that add units sometimes have their own unit button atlas. What we really need is for each XML and Python file to have a mod-specific name, like ItalyModUnitInfos.xml.
In this way,information for each mod is compartmentalized, allowing one to have as many xml files of the same type as they want.

Anyway, I'll sign this in hopes that such a manager is possible, but if not, mod-specific files are the way to go if you have the time and expertise.

Signed, Robo Magic Man
 
@Robo: To be honest, I would settle for someone making proper templates for each "thingy" you can work with. I feel that that would help more than anything else... but again, I don't have the knowledge, just the desire :P

A lot of people, like me, don't know one thingy from the next in this 'new world' of c4. I loved how moron friendly c3 was to us lot, but I'm enjoying even more the modifications that the savvy among us can make with this new widget.

@Kael: I'm not asking you to write the magic program that will combine Pacman and AoE2 (If you can, though, I will worship you :P). I'm just asking for something that will let me meld a pair of mods for the vanilla c4 game (Like a european mod and a promotion mod) without a bunch of fiddly programming work.

I know for a fact it does not take Jesus to heal the rift between those two mods. ;p

... darn, I broke the rules and posted a discussion comment on my own petition...
 
I do agree with you in the sense that us mod component makers should follow some type of "standard" to make it easier for people to combine our components. I have been trying to do this by advocating the usage of Dr. Elmer Giggle's custom event manager since it only takes adding one line of code there to enable usage of a mod components own custom event handler.
 
Combining mods in Civ4 is not as easy as other games because every mod fights over the same files. If you make a new civ and I make a new civ, we both end up editing the same CIV4CivilizationInfos.xml. In other games, we can ADD a new file which we can name our own and put our new civs in there. Then there won't be any conflicts.

Like in World of Warcraft, each mod gets its own folder, thus its own files. It's best not to mess with the original files. (In a future WoW patch, modders will not be able to edit the original files.) Players can turn on or off any mod. This also means that mods that only change the interface are always on if you want. In Civ4, if you change mods, you will also lose any interface enhancements unless someone manually combines it into every mod.
 
This needs help and cooperation from both sides: Tool maker and mod authors.
I have attacked this problem and made some progress.

1. XML file should be distributed as diff file not whole file.
Tool will merge diffs automatically and generate new merged XML to merged MOD dir. It is easiest part to automate.
2. Automatic merging of python file is very hard or nealy impossible.
So You should never copy original and edit common python file like CvEventManager, CvEventInterface, CvScreenInterface, CvScreenUtils which are most frequently modded python files.
3. Other common resource file like "GameFont.tga".
4. Need some meta information file to give direction to the merging tool.

I made some progress in Python aspect. I wrote a truely automatic EventManger and ScreenInterface. If you use my EventManger and CvScreenUtils, modder don't have to add even single line to original CvEventManager, CvScreenInterface, CvScreenUtils file. All required change will be contained in the mod file itself without touch original files.
On "GameFont.tga". I have no idea but made some basic interface which make it easier to merge.
You should not access it by absolute unicode value. You should reference it symbolic name like string name.
Then it would be much easier to merge different GameFont.tga from two mods. See Exmple in thread below.

See this thread :
http://forums.civfanatics.com/showthread.php?t=147018

This version is somewhat dated. But you can get an idea how that was done. I wrote more updated version. That will be released soon after I update it for new SDK patch release.
 
Oh, well then, perfect. Thanks Simcutie! [Petition Closed] :P
 
SimCutie said:
1. XML file should be distributed as diff file not whole file.
Tool will merge diffs automatically and generate new merged XML to merged MOD dir. It is easiest part to automate.
What if you have made changes to different values in a unit, promotion, building, etc.?
SimCutie said:
2. Automatic merging of python file is very hard or nealy impossible. So You should never copy original and edit common python file like CvEventManager, CvEventInterface, CvScreenInterface, CvScreenUtils which are most frequently modded python files.
What about asking that people changing events in the game adopt Dr. Elmer Jiggle's event manager code? When people do it takes 2 lines of code to merge one mod's event manager code with another's
 
SimCutie said:
This needs help and cooperation from both sides: Tool maker and mod authors.
I have attacked this problem and made some progress.

1. XML file should be distributed as diff file not whole file.
Tool will merge diffs automatically and generate new merged XML to merged MOD dir. It is easiest part to automate.
2. Automatic merging of python file is very hard or nealy impossible.
So You should never copy original and edit common python file like CvEventManager, CvEventInterface, CvScreenInterface, CvScreenUtils which are most frequently modded python files.
3. Other common resource file like "GameFont.tga".
4. Need some meta information file to give direction to the merging tool.

I made some progress in Python aspect. I wrote a truely automatic EventManger and ScreenInterface. If you use my EventManger and CvScreenUtils, modder don't have to add even single line to original CvEventManager, CvScreenInterface, CvScreenUtils file. All required change will be contained in the mod file itself without touch original files.
On "GameFont.tga". I have no idea but made some basic interface which make it easier to merge.
You should not access it by absolute unicode value. You should reference it symbolic name like string name.
Then it would be much easier to merge different GameFont.tga from two mods. See Exmple in thread below.

See this thread :
http://forums.civfanatics.com/showthread.php?t=147018

This version is somewhat dated. But you can get an idea how that was done. I wrote more updated version. That will be released soon after I update it for new SDK patch release.

I would love to see this but I have a few questions:

1. How will you handle 2 mods that modify the same function (lets say onCombatResult or CannotTrain for example)?

2. How will you handle 2 mods that have both modified the source code and are providing compiled dlls?

3. Although its easy to merge 2 different difs into a common file what if they contain 2 versions of the same information (say one has added a new upgrade to the rilfleman, or what if one mod has removed a promotion the other uses?)?
 
Kael said:
I would love to see this but I have a few questions:

1. How will you handle 2 mods that modify the same function (lets say onCombatResult or CannotTrain for example)?
If people use Dr. Elmer Jiggles custom event manager code then this isn't a problem.

Kael said:
2. How will you handle 2 mods that have both modified the source code and are providing compiled dlls?
This is an excellent point and honestly I don't think there is a very good answer for it.

Kael said:
3. Although its easy to merge 2 different difs into a common file what if they contain 2 versions of the same information (say one has added a new upgrade to the rilfleman, or what if one mod has removed a promotion the other uses?)?
Well, I think this would have to be resolved by the person merging the two mods.
 
TheLopez said:
Well, I think this would have to be resolved by the person merging the two mods.

Yeah, but I thought the point was to come up with a way to do it that didnt require a person to manually do it.
 
Kael said:
Yeah, but I thought the point was to come up with a way to do it that didnt require a person to manually do it.
Exactly, so if both mods use it then the process to automate it is a lot easier, right?
 
TheLopez said:
Exactly, so if both mods use it then the process to automate it is a lot easier, right?

Definitly and Im all for a standard system for writing modpacks as I mentioned up in the 3rd post. But I think its always going to be a human driven process. Another example, what if one of the mods changes schema? If you were to copy a new promotion into the Fall from Heaven 1.0 promotions file it would error out because of invalid schema.

Aeon221 mentioned that other games have the ability to automatically run multiple mods together, and asked the very reasonable question "Why not civ4?". Because of the flexibility of the tool, because we aren't limited in what we can do, a tool in unable to predicate our changes and deal with them. So humans will have to be involved in most mod merges.
 
Kael said:
Definitly and Im all for a standard system for writing modpacks as I mentioned up in the 3rd post. But I think its always going to be a human driven process. Another example, what if one of the mods changes schema? If you were to copy a new promotion into the Fall from Heaven 1.0 promotions file it would error out because of invalid schema.
I assume you are referring to the changes to the schema that talchas proposed in this thread: http://forums.civfanatics.com/showthread.php?t=163839 right? If that is the case then look at my last posting in there suggesting a change to his code so this doesn't happen.

Kael said:
Aeon221 mentioned that other games have the ability to automatically run multiple mods together, and asked the very reasonable question "Why not civ4?". Because of the flexibility of the tool, because we aren't limited in what we can do, a tool in unable to predicate our changes and deal with them. So humans will have to be involved in most mod merges.
This is a very good point, honestly I am very weary when thinking about letting an application merge two codebases together, lets just say I have had very bad experiences. Personally, I rather do it by hand from the start to make sure that the merged code will work and contain the features I want.

All in all, when building my components for modmakers to use I always try to keep all changes as isolated from the core code as possible. When it isn't possible then I wrap them in some kind of start-end tags to easily identify the changes.
 
TheLopez said:
I assume you are referring to the changes to the schema that talchas proposed in this thread: http://forums.civfanatics.com/showthread.php?t=163839 right? If that is the case then look at my last posting in there suggesting a change to his code so this doesn't happen.


I hadn't seen that yet, VERY cool. I didn't know there was a way to make elements optional.
 
Sorry to resurrect an old thread, but can somone point me to Dr. Elmer Giggle's custom event manager? I found this thread because someone had referenced SimCutie's custom event manager. Which one is the "recommended" or "standard" one I should use when Python modding?
 
Dose anyone here remember ModSwitcher?

http://forums.civfanatics.com/showthread.php?t=140188

This little utility was showing a lot of promise untill the creator disapeared (without ever revealing any source code). It would convert an entire mod (including art and python files) into a single XML file which specified every deviation from default assets. The user would then select any number of compressed mod files and merge them together, any conflicts triggered an abort with a notification as to what when wrong.

Something along these lines could be created again from scratch and greatly improved upon. Some kind of conflict resolution needs to be worked out, I think we should just prompt the user for which mod should over-ride on a case by case basis. A strong system of dependencies also needs to be worked out both for what game version and what dll version are being used. Robust Python moduals like SimCuties provide a method for consistent merging of code by keeping everything in seperate files. I think Aeon's dream can be realized!!
 
Back
Top Bottom