Publishing a mod on GameBanana
Imperivm Resurrected mods are published at https://gamebanana.com/games/26069. The Browse content tab in the content manager reads that page: search, filter, view a mod's page and install with one click. To make your mod show up under the right type and filters, follow these steps.
Before you upload
Set the category in your
mod.json(one from the table below). If it's a map, a campaign, a translation or an audio pack, add its tags too:{ "id": "duelo-en-el-nilo", "name": "Duelo en el Nilo", "version": "1.0", "authors": ["Your name"], "category": "Maps", "tags": ["2 players"] }Run it through the validator. It warns you if the category isn't one the game recognizes or uses an old name, if a map has no players tag, and if a campaign, translation or audio pack has no language tag.
Zip the mod folder, with its
mod.jsoninside. Don't include executables or system scripts (.exe .dll .asi .bat .cmd .com .scr .ps1 .vbs .js .msi .sys .cpl .lnk .reg .jar .hta .wsf .pif): a mod containing any of them won't load.
On GameBanana
- Go to Add → Mod from the game's page (
https://gamebanana.com/mods/add?_idGameRow=26069). Always Mod: anything uploaded as Sound, Tool or Script won't show up in the game. - Category: the same one as in your
mod.json. - Tags: the same tags, written the same way.
- Files: your
.zip, and in the Version field the same version as inmod.json. Every new version is a new file: don't replace the old one, because anyone playing online with the old version still needs it. - Requirements: if your mod needs another one, link its page (
https://gamebanana.com/mods/...). The game installs it along with yours. - At least one screenshot. The first one is the image shown in the game.
- For the changelog, post an Update with the version as its title (for example
1.1). The game shows it next to that version.
Only people who installed the mod from Browse content (that writes sources.gamebanana into their mod.json) get the new-version notice, or people with a mod that has the same id as the entry. If someone downloads the zip by hand and unzips it, they get no notice.
Categories
One per mod: pick the one it does the most for. There are nine, in the three kinds the game tells apart. The kind isn't decided by the category but by the mod's files (see What counts as gameplay?); the category is how people find it in Browse content.
| Category | In the game | What goes here | Where its files go | Example |
|---|---|---|---|---|
| Change gameplay | Everyone online must have them | |||
| Gameplay & Balance | Rules and balance | Rules, stats, costs, AI; also big mods that change the whole game | data\, patches |
patches-example, scripts-example, custom-orders |
| Units & Heroes | Units & Heroes | New or changed units and heroes | data\classes\, specials\ |
ability-example, specialty-example |
| Civilizations | Civilizations | New or reworked civilizations | civs\, data\ |
civilization-example |
| Content to play | Only whoever plays it needs it | |||
| Maps | Maps | Maps for skirmish and multiplayer | scenarios\MiMapa.bfhp |
random-map-example |
| Campaigns | Battles and campaigns | Single-player battles with a story and objectives, on their own or chained | adventures\ |
|
| Conquest | Conquest | Conquest maps and games | conquests\ |
|
| Cosmetic | Each player has their own | |||
| Graphics | Graphics and interface | Textures, unit looks, terrain, menus, icons, fonts | the game's package paths, menuini\ |
|
| Audio & Voices | Audio & Voices | Music, sounds and voices | sounds\, currentlang\voices\ |
|
| Translations | Texts and translations | The game or a mod in another language, changed texts | loc\ |
french-language, custom-texts |
For the categories without an example (maps, campaigns, graphics, sound), just copy the file into its folder, with the same name if it replaces a game file.
Old names. GameBanana still has a Scenarios category: don't use it (the game shows it as Maps). A mod.json with Scenarios, Interface or Total Conversions still works as Maps, Graphics and Gameplay & Balance, but the validator asks for the new name.
Tags
They're only needed in two cases: they are the players and language filters of Browse content.
| Category | Tag | Filter in the game |
|---|---|---|
| Maps | 4 players, or a range like 2-4 players (2 to 8) |
Players |
| Campaigns, Audio & Voices, Translations | Spanish, English, Italian, German, French, Polish or Multilingual (you can add several) |
Language |
Write them exactly as shown, in English, in the tags of your mod.json and in GameBanana's Tags field: the game displays them in each player's language. It also understands other common forms (2v2, 4 jugadores, Español), but this way you're sure. A map without a players tag doesn't show up when filtering by players, and a campaign, translation or audio pack without a language doesn't show up when filtering by language.
The Gameplay, Cosmetic and Online tested tags of earlier versions are no longer needed: whether a mod changes gameplay, the game knows from its files.
Mods made before Imperivm Resurrected
Older mods were installed by copying them over the game: they ship whole .pak packages that replace the game's ones, and most of what's inside is untouched game files. Convert them so they contain only what they change or add:
node tools/shrink-mod.js <old mod> <game folder> <new folder> --id mi-mod --name "Mi mod" --version 1.0 --category "Gameplay & Balance"
The tool works out what the game sees with the mod copied over it and what it sees without it, and keeps only the difference:
- From the packages, the files that differ from the game's, keeping their order (in a folder the package with the greater name wins, like
zzMod.pakoverData.pak). - The texts and sounds of each language in
Local\<language>\(or incurrentlang\if they are the same in all), and the rest of a language package inLocal\<language>.pak. - What the old mod removed from the game by replacing its packages, in
hidden.txt, so that the game doesn't see it either. data\const.inias a patch and without the[Resolutions]section: the player picks the resolution in the options.- If the mod ships an
rle.mmpthat is the game's with graphics appended, only what is appended, inrle.mmp.tail. - It leaves out
.bakcopies,Config.iniandSettings.ini(install settings) and executables, with which the mod wouldn't load.
Options:
--exclude <patterns>leaves more files of the old mod out, like install guides (paths with*and?, separated by commas).--hide <patterns>hides loose game files that the old mod's readme said to delete (for examplecurrentlang/*,units/*).--paths, instead of the output folder, only shows which folders are inside the packages, without writing anything.
The output folder has to be empty. If the old mod already has a mod.json, the tool keeps it, except sources (where the original mod is downloaded from), so that version notices don't point to someone else's page. At the end it says what it left out and what it hides.
Test it in the game before uploading it.