Campaign Civilizations

tl;dr: what do I need to know to build off someone else’s mod that adds additional playable civs?

There’s a mod in the mod center that lets you play as several of the single-player only civs in skirmish and multiplayer. This has always seemed like a no-brainer to me, just off the intuition that “they’re already in the game.”

However, even the best version of this idea on the mod center feels incomplete. In total, the single player factions is includes are:

British East India Company, Canada, Falcon Company (from TWC Act II: Shadow, Euro version), Moroccans, Native Americans, Pirates, and The Circle.

Sadly missing from that list is the Knights of St. John (Malta) fan- and personal-favorite, as well Black’s Mercenaries, a native variant of Falcon Company, campaign versions of the TAD civs, plus maybe a few extra “reskins” from Historical Scenarios (Tatars, Barbary States, Somalis).

Additionally, a few of those included are missing features (e.g. Moroccans can’t advance to Imp) and they generally feel unpolished. Not to mention most are a spin-off of the British, though to varying degrees.

All this gives an intriguing mod that is fun to play around with but ultimately feels underwhelming and makes me want more. This is doubly frustrating because unlike the “real” game where I can only make suggestions and hope for the best, mods are something I and the rest of the playerbase can directly control. But the trouble is, I have no experience modding and have no idea where to start.

What do I need to know to modify the game or build off someone else’s mod? Where can I go to learn more? What’s the best way to make a mod that adds in new campaign civs?

4 Likes

I’ve started work on this and made decent progress, now with some more experience I can start to ask better questions.

I’m trying to add the card Blood Brothers to a civ that lacks it. So naturally, I copied the card’s information from one homecity and pasted it in the other. But it’s not showing up in game. What am I missing here? I set the level req to 0 and the prereqtech to -1, so there shouldn’t be any reason why it isn’t showing up.

1 Like

That is a very simple question that you have to solve by yourself, but here’s a hint: open the original homecity file and search every line with the word “HCXPBloodBrothers” and do the same with the new homecity. The “Search” tool is very important if you want to mod something, so you must use it all the time.

You are using some code editor like Notepad++ right?

There was a youtube guide somewhere of 1 hour or like. Other option are looking into similar mods and see how they work.

Right now I’m using another mod as a base, and I copied the Bloodbrothers card as exactly as I could.

I also want to say I can successfully alter some aspects of cards that already are in the homecity and which already work: the age, how many times it’s sent, etc. It’s specifically copy-pasting cards from one hc to another that I’m having trouble with

You have copied some line like this? (Because you’re supposed to, and two times)

  <tech x="0.7" y="6.0">HCXPBloodBrothers</tech>

no I hadn’t. Does this belong in the HomeCity file or TechTree file?

Ok the tech bit was the missing piece, now I can add cards from other home cities. Thanks for the help :slight_smile:

The problem is, I don’t have access to the home city files locally (as well as civdata, protoy, and techtree files), I think they’re stored on the cloud? what’s the best way to access them? I already tried the Resource Manager app, but I found that unhelpful.

Unrelated, but I was modifying a protounit and ran into the problem where it would only have one of the damage modifiers in game of the multiple I’d added. Even when I directly copy/pasted from another unit this issue persisted, it would only display the last one listed. Any suggestions?

Also I tried to get a unit to build Teepees. While the teepee icon showed up on the hud, it was greyed out and wouldn’t give a foundation to place when clicked.

(I don’t know if I’m understanding you right)
(Also, my english is not super good)

First, check these pages to learn more about AOE3 modding:
(Some of them are very old but still very useful)

With the resource manager open the Data file
if you are using Steam the path is: Steam\steamapps\common\AoE3DE\Game\Data

You can extract all .xmb files (and convert to .xml to be able to edit them)
But the more important files when you’re making a new civ in my opinion are:
civs.xml
politiciandata.xml
protoy.xml
stringtabley.xml
techtreey.xml
(and the homecities files that you are modifying or copying, etc.)

Check all these files to figure out how the AOE3 files work

If you are using Additive Data Mods https://support.ageofempires.com/hc/en-us/articles/360062106732
the names of the equivalent files are:
civmods.xml
politicianmods.xml
protomods.xml
stringmods.xml
techtreemods.xml

I recommend that you put all the mods.xml files of your project in a folder with the name “Data” and put that folder in another folder with the name of your project/mod
the stringmods.xml file goes into:
Data → strings → english (or another language folder) → stringmods.xml

In order to work, the folder with the name of your project goes into:
C:\Users(your username)\Games\Age of Empires 3 DE(many numbers depending of your id I guess)\mods\local (make a shortcut to this folder)

If you are doing this right, then you mod must appear in the mods section of you game:
Tools → Mods

Disable the steam cloud of AOE3 if you have conflicts (with the savegame of your homecities or whatever, because the steam cloud restores the last data files saved in game)

The path of your savegames is (if you want to know for some reason)
C:\Users(your username)\Games\Age of Empires 3 DE(many numbers)\Savegame
The data of the selected cards of your decks is saved in this folder

If you want to know everything about the teepee, you must search for it!
With Notepad++ open the techtreey.xml
(then use the tool) Search → (ctrl + f) Find → (Write down) Teepee

Find this:

  <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
    <target type="ProtoUnit">Teepee</target>
  </effect>

If you want to train or build something, in the techtree of your civ that unit/building must be enabled.
(So you must copy this into the techtree of the civ of your project…) (also, check the syntax, it must be well written)
I suggest you spend some time analyzing the techtreey file to learn more about.

Lastly, I’m not very good at modifying protounits, so… good luck.

3 Likes

Thank you for your response, I appreciate all the feedback and help I can get. I think I’ll hold off on using the extractor as long as I can, but I’ll gladly refer back to this when I need it.

I already have the mod working in game for testing, I managed to figure out the file locations by myself.

With the Teepee issue, it was already enabled and vils can build it just fine. I cross-referenced with the War Club, turns out the issue was the location I.D. for the Teepee was wrong. idk if such a thing exists, but a spreadsheet or matrix that lists all the location ids for buildings/techs/cards could be a helpful resource.

I still haven’t solved the damage modifications oversight. No matter how many units attack protounits I compare with, it only counts one of the multipliers I list. Is there another value elsewhere in the protounit that I’m missing? Maybe something that controls how many multipliers a unit can have?

Another issue I’ve come up with: you may have gathered I’m currently working on a Native American civ. As such, I wanted to give them the feature to see TPs on the map when the game starts. Turns out, that’s controlled by

[civtype]1[/civtype]

Which also solve some other minor issues (techs properly conforming to Big Buttons on the UI, disables Hero ransom). However, it also disables the Age Up button. No idea what’s causing it. Looking at the Haude civ data and techtree, I didn’t see a parameter that controls for this, and the custom civ uses Haude age up options already. It also has the “AANativeStartingTechs” tech activated, so I don’t think that’s the issue. Any ideas?

For the feature to see TPs on the map when the game starts:
You can use the USA card “TEAM Lewis & Clark Expedition” as a reference (Reveals all treasures, resources, Trade Routes, and Native settlements, and sees what enemies can see for 20 seconds) and add that data to the “Age0…” tech of your civ.
The name in the techtreey.xml is “DEHCUSExpedition”

As far as I know, some features of each civ are hardcoded and depend of the civtype
(The European Nations doesn’t have a civtype)
1: Native Americans (Allows Community Plaza and Tribal Council age up system, DISABLES the normal Age Up button system)
2: Native Americans (campaign)
3: Asians (Allows export and Wonder age up system, DISABLES the normal Age Up button system)
4: Asians (campaign)
5: (Some campaign civs)
6: Africans (Allows influence and Alliance age up system)
7: Americas (Allows Federal State age up system)
(It’s something like that, maybe I missing some things…)

-Fun Fact: The extended Deck of USA/MEX is activated in the civ data of the civs.xml file with this:

<useextendeddeckui>
</useextendeddeckui>

If I find out anything about your protounits multipliers problem, I’ll let you know.

1 Like

Thanks. Actually it’s the Native Americans I’m modifying atm. Like I said, I’m trying to complete an existing mod for campaign civs in multiplayer. I should keep them on Type 2 then right? I guess that means I’d have to activate it manually somehow. I want the better formatting that comes with Type 1, otherwise the Big Buttons obscure some techs. Plus the plaza workers don’t display on the HUD otherwise. But I don’t understand why it should be disabling the age ups, it already uses tribal age ups. Where is the age up system defined, in the tech tree or in the civ data? Can it even be changed to fit?

I’ve been struggling to get some of the type 5 civ to show up (Knights of St. John, Black’s Mercenaries). Even though I have civ data, home cities, and tech trees defined for them they aren’t selectable in game. This is doubly frustrating because the data for Malta I took from another mod where it was working but now it isn’t. For that I guess I failed to copy something but I have no idea what. What more do you need to “activate” a civ in skirmish/multiplayer?

This is a total mystery to me, I guess it’s hardcoded in the base code of AOE3 because the original devs found that way to do it…

For your second question remember this:

Maybe the saved homecity files (in which you are working, inside the savegame folder) are causing a conflict, so you can delete (or move if you prefer) those homecity files, and disable the steam cloud of AOE3 because if you don’t, the steam cloud will restore that homecity files to the last saved in-game. If a “bad” (incomplete, with errors, etc.) homecity file is in the savegame folder, that civ won’t show up in-game.

The issue is the saved homecity files, as far as I can tell, don’t store the whole Homecity but just playermade decks. I’m not sure why those would control whether a civ is selectable or not, but I can delete them to be sure. I can also take a closer look at the SPCact1 and SPCact2 homecity files (Malta & Black’s Mercs) to see if there are any contradictions which might be stopping it.

But again, I copied the civdata, techtree data, and homecity data for Malta from another mod where (even tho it was hilariously unpolished) it was seletable and playable in skirmish. so either I copied something incorrectly or I failed to copy something. But the problem there is that mod included all civ data, techtree data, and protoy data for all civ (circa Nov 2020 when DE released, so it’s out of date) so that’d be a lot to comb thru and I’d have no idea what I’m even looking for :frowning:

Also doubly frustrating the mod didn’t include homecity data for all the other civs. If those were included, I might not need to extract files from the game at all.

Also also, is there an easy way to activate the campaign Asian civs (civ type 4) in multiplayer? I don’t want to put them over the main versions of the civs but have them selectable alongside them.

Because the game needs to read the saved homecity file in the savegames folder for a civ to work. If there is no saved homecity file, the game automatically generates a default one using the data of the game/mod. The original homecity data is used to generate the savegame homecity file that stores not only the cards that belong to a civ or selected cards/decks, but also the name of the city in the ui (this changes depending of the language), the name of the explorer, and other custom changes. Both the original homecity.xml file and the savegame homecity file needs to work well.

So, the conflicts can be, for example, if the name of the homecity file of your mod and the name of the homecity inside the savegame homecity file do not match, then the civ will not appear in game.

e.g. the name of the homecity in your mod is “homecitynativesAAAA.xml”, so the name of the saved homecity in the savegame folder will be something like “sp_nativesAAAA_homecity”, but if the name inside that file is:

<defaultfilename>homecitynativesBBBB.xml</defaultfilename>

Then the civ will not appear.

You can copy and try to recreate the campaign civs, for example, I’m working in a Korean civ (that is almost done and works well), first copying the Chinese civ and then modifying it to be a standalone civ. I had to use the same Wonders and Consulate nations of the Chinese, because those things are very hard to modify, but many other things are not a problem.

You can send by PM a link or something of your project or the original mod (only if you want) and I can check it and see how I can help you.

Good news: I can copy cards from savegame homecity decks and get them to work in the mod. I’ve been doing a lot of “busy work” so I haven’t had a chance to look over the Malta and Black’s Mercs homecities yet.

I think once I’m much further on I can send it over so you can give your advice, but there’s a ways before that tho.

I appreciate all your help, if I run into any more problems with the civs I’ll make sure to post about it.

Actually, one minor problem I’ve been having is the flag textures. For most circumstances the flags look fine. Buildings, Ships, and the main Homecity Button all use the correct flag. (Or close enough: the Native Americans currently use the Circle’s flag, and I’m thinking about a replacement but haven’t actively looked for one yet).

However, the flag in the tribute menu for several of the civs doesn’t appear at all. This is actually big for gameplay, because it prevents opponents from “deck checking” which wouldn’t be fair. I probably can compare them pretty quickly to figure out the parameters that control that flag, but I was wondering if you knew what code controlled that off hand. And also if it mattered what kind of flag image is used there; i.e. if I could reuse flag images that work elsewhere, or if that formatting wouldn’t work correctly.

I think the tribute flag is the same as the post game flag, so, for example in civs.xml it will be something like: (In the case of the Chinese)

<postgameflagiconwpf>resources/images/icons/flags/postgame_flag_chinese.png</postgameflagiconwpf>

As you can see, png is the format. Also make sure that the path is well written.

1 Like

Progress is going smoothly. Been putting off looking at Malta, but there’s still lots to get thru so I don’t feel so bad about it. So far 3 civs are basically in a state I’m satisfied with, with another 4 not far behind.

Some more minor problems:

  • I’ve noticed the starting resource crates are somewhat random. They vary in number and type. This despite I’ve set the starting crates, and the starting vils aren’t random.

  • Not only has the missing bonus damage issue persisted, I’ve noticed similar problems elsewhere. It seems that when you list too many of the same kind of effect under a unit or a tech it only registers some of them. It’s given me the impression that some units/techs have a hard coded limit to how many effects it can have, but I have no idea how.

  • I had an issue where the crossbow upgrades cause weird spacing issues with the other techs, where they spread out on. I’ve really only noticed this with The Circle, but even in real civs I’ve seen similar issues with other upgrades. I tried setting the infantry upgrades in place with:

    <effect mergeMode='add' type="CommandAdd" tech="VeteranCrossbowmen" page="1" column="0">
      <target type="ProtoUnit">Barracks</target>
    </effect>
    

    but it didn’t work.

That’s all I can think of atm. Like I said, it’s going well. Hopefully I can get Malta and Black’s Mercs working soon.

Edit: I just remembered one more: Some of the pit ceremonies don’t function properly. Namely the resource trickles (xp, wood). If I had to guess the issue it’s probably the Civ Type, however that’s basically a non started until the age up issue is solved. Just thought I’d share. btw dances that spawn units or give stat buffs work just fine.

Edit: Kinda fixed the random starting res issue. Turns out theres a line of data that controls random starting res that which was missing. However, it also has the problem of variables only being counted once. Here, I can’t get more than 1 of each type of crate to spawn (for Native Americans). It also locked the number of starting vils. Those never varied, but I could edit their number.

I uploaded my mod, but it’s not working. When it’s active none of the civs are selectable. What did I do wrong?

Feeling pretty defeated about this ngl. I don’t know what information I lack here or where to begin looking, the problem is completely inscrutable to me.

I’m going through your mod files to see how I can help you.

1 Like