Mapping dependencies of Vox Populi

Merri

Warlord
Joined
Aug 18, 2007
Messages
231
The past few days I've spent my time making a language parser that can take in Vox Populi's folder and generate a JSON with all Language_en_US strings that could later on be used to generate localized non-English files to Text directory and have it so that these localized files contain changes of Vox Populi even if they're not translated yet (because the issue is that mods mostly ever change en_US and as a result any other language shows incorrect information).

I chose Vox Populi as it is a complex beast and as I don't like creating tools for only one thing I'm attempting to create something that can be used for any mod. I now have a working parser, but as can be expected there are a lot of internal conflicts (duplicates of same string, many occurances of the same TXT_KEY) so if I just try to read whole Vox Populi I can't get to my goal of being able to generate a single localized Text file that shows the right strings for the right combination of installed VP mods.

So I figured out Vox Populi has it's own internal dependency tree, and that I need a dependency tree for the original game files as well, so I went ahead and wrote a JSON representation of what I think would work for Vox Populi:

Code:
{
   "sources": [
       {
           "id": "CommunityPatch",
           "dependencies": ["BraveNewWorld"],
           "path": "4.2.17/(1) Community Patch",
           "name": "Community Patch",
           "version": "4.2.17"
       },
       {
           "id": "CommunityBalancePatch",
           "dependencies": ["CommunityPatch"],
           "path": "4.2.17/(2) Community Balance Patch",
           "name": "Community Balance Patch",
           "version": "4.2.17"
       },
       {
           "id": "CSD_CBP",
           "dependencies": ["CommunityBalancePatch"],
           "path": "4.2.17/(3) CSD for CBP",
           "name": "City-State Diplomacy for Community Balance Patch",
           "version": "4.2.17"
       },
       {
           "id": "C4DF",
           "dependencies": ["CommunityBalancePatch"],
           "path": "4.2.17/(4) Civ IV Diplomatic Features",
           "name": "Civilization IV Diplomatic Features",
           "version": "4.2.17"
       },
       {
           "id": "MoreLuxuries",
           "dependencies": ["CommunityBalancePatch"],
           "path": "4.2.17/(5) More Luxuries",
           "name": "More Luxuries",
           "version": "4.2.17"
       },
       {
           "id": "VoxPopuli",
           "dependencies": ["CSD4CBP", "C4DF", "MoreLuxuries"],
           "path": "4.2.17/(6b) Community Balance Overhaul - Compatibility Files (No-EUI)",
           "name": "Vox Populi",
           "version": "4.2.17"
       },
       {
           "id": "VoxPopuli_EUI",
           "dependencies": ["EUI", "CSD4CBP", "C4DF", "MoreLuxuries"],
           "path": "4.2.17/(6a) Community Balance Overhaul - Compatibility Files (EUI)",
           "name": "Vox Populi for Enhanced User Interface",
           "version": "4.2.17"
       },
       {
           "id": "CommunityPatch_43Civs",
           "dependencies": ["CommunityPatch"],
           "path": "4.2.17/(6c) 43 Civs CP/CP Only",
           "name": "Community Patch with 43 Civilizations",
           "version": "4.2.17"
       },
       {
           "id": "VoxPopuli_43Civs",
           "dependencies": ["VoxPopuli"],
           "path": "4.2.17/(6c) 43 Civs CP/No-EUI",
           "name": "Vox Populi with 43 Civilizations",
           "version": "4.2.17"
       },
       {
           "id": "VoxPopuli_EUI_43Civs",
           "dependencies": ["VoxPopuli_EUI"],
           "path": "4.2.17/(6c) 43 Civs CP/EUI",
           "name": "Vox Populi for Enhanced User Interface with 43 Civilizations",
           "version": "4.2.17"
       },
       {
           "id": "PromotionTreeUI_VoxPopuli",
           "dependencies": [],
           "mergeTo": ["VoxPopuli", "VoxPopuli_EUI"],
           "path": "4.2.17/(7b) UI - Promotion Tree for VP",
           "name": "Promotion Tree User Interface for Vox Populi",
           "version": "4.2.17"
       }
   ]
}

The above explained in words would result to 6 final outputs:
  1. Community Patch (4.2.17)
  2. Community Patch with 43 Civilizations (4.2.17)
  3. Vox Populi (4.2.17)
  4. Vox Populi with 43 Civilizations (4.2.17)
  5. Vox Populi for Enhanced User Interface (4.2.17)
  6. Vox Populi for Enhanced User Interface with 43 Civilizations (4.2.17)
And now I get to the meat of this post, because as can be seen I've "renamed" the Compatibility Files mod as Vox Populi. I also assumed 43 civs is completely optional, thus doubling outputs from 3 to 6 possible. Is my understanding of these dependencies correct? Is 43 civs incompatible with the Compatibility Files?


Additional thoughts

This dependency model might also be useful if one made a tool that auto-generated merged mods, to reduce clutter for the players. I noticed there is a lot of "delete these files if you also have this" and that this has been solved with a separate installer. It could make sense to swap from installer route to a tool that is able to create merged mods, but this would of course need someone to see the trouble and write tool and standards on how this could be accomplished. In the other hand dependencies is one thing that has been solved many times so there might actually be an existing solution that could be used or adapted to help solve the issue.
 
I also assumed 43 civs is completely optional, thus doubling outputs from 3 to 6 possible. Is my understanding of these dependencies correct? Is 43 civs incompatible with the Compatibility Files?
Not exactly.

Yes, the 43 civ is completely optional (it changes few mecanics, like allowing multiple civs to take the same pantheon, and maxing the number of city states to 20)

However, from my understanding, if you select a 43 civ option in the auto-installer, you will have multiple folders:
+ An alternative version of the "(1) Community Patch", which has the same name and everything the same, because we want other mods to consider it as if it was the normal version "(1) Community Patch". However, the content of the .dll file is different.
+ An "(6c)" folder, including and replacing the "(6a)" (for VP with EUI), the "(6b)" (for VP without EUI), or nothing (for CP). The content and the exact name of the "(6c)" folder is different in those 3 situations.
+ In the case of VP, the usual folders "(2)", "(3)", "(4)" and "(5)" (and now "(7a)" and "(7b)"). In the case of CP, no other folders.
 
Top Bottom