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) and, if needed, its tags: more categories if your mod does several things, the players if it's a scenario and the language if it's an adventure, a translation or an audio pack:{ "id": "duel-on-the-nile", "name": "Duel on the Nile", "version": "1.0", "authors": ["Your name"], "category": "Scenarios", "tags": ["Players: 2"] }Run it through the validator. It warns you if the category isn't one the game recognizes or uses an old name, if a tag is badly written, if a scenario has no players tag, and if an adventure, 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). Audio is the exception: it goes in Add → Sound (https://gamebanana.com/sounds/add?_idGameRow=26069). Anything uploaded as Tool or Script won't show up in the game. - Category: the same one as in your
mod.json. - Tags: the same tags. Each one has a title and a value: in
Type: Civilizationsthe title isTypeand the valueCivilizations. You don't have to create them first: they are written in each mod. - 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/..., orhttps://gamebanana.com/sounds/...for audio). 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, or sources.gamebananaSound if it comes from Sounds) 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
In short: on GameBanana you pick one category, the one that best describes the mod overall. Everything else it brings goes in tags Type, Players and Language: add all the ones that apply, and only those.
GameBanana allows only one per mod: pick the one it does the most for. If your mod does more, for example a large one that brings civilizations and maps, add the others with Type tags (see Tags) and it will show up in all of them. 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 | Gameplay & 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 | |||
| Scenarios | Scenarios | Maps for skirmish and multiplayer | scenarios\MyMap.bfhp |
random-map-example |
| Adventures | Adventures | Great battles, challenges and single-player campaigns, with a story and objectives | adventures\ |
|
| Conquests | Conquests | Conquest maps and games | conquests\ |
|
| Cosmetic | Each player has their own | |||
| Graphics | Graphics | Textures, unit looks, terrain, menus, icons, fonts | the game's package paths, menuini\ |
|
| Audio & Voices | Audio & Voices | Music, sounds and voices. Published in GameBanana's Sounds section, not in Mods | sounds\, currentlang\voices\ |
|
| Translations | Translations | The game or a mod in another language, changed texts | loc\ |
french-language, custom-texts |
Every category has a template with its folder layout. For scenarios, adventures and conquests and for audio there are also short guides.
Loose maps. If the .zip only holds the .bfhp, with no folders, the game places it by itself when installing, by the kind the map itself states (what its author chose in the editor): an adventure goes to adventures\ (with its .bmp of the same name), a conquest to conquests\ and a skirmish map to scenarios\, or to adventures\ if the category is Adventures (single-player missions made as a normal map). Even so, it is better to upload it already inside its folder; the validator warns when a map is in the wrong one, for example an adventure in scenarios\, which the Scenarios list doesn't show.
Scenario preview. When a scenario is chosen in the room, the game draws a preview from the map's own terrain, with its players and their civilizations, and where it comes from: you don't need to upload any image. The colors come from the game's minimap tiles, so a new terrain looks right if it brings its tile in minimapzoom8\terrain.
Old names. Scenarios, Adventures and Conquests are named after the game's folders (scenarios\, adventures\, conquests\). They used to be Maps, Campaigns and Conquest: a mod.json with those names, or with Interface or Total Conversions, still works, but the validator asks for the new name.
Tags
Each tag has a title and a value. The game uses three:
| Tag | What for | Example |
|---|---|---|
Type: <category> |
More categories, besides the main one. One tag per category | Type: Civilizations, Type: Scenarios |
Players: <players> |
Players of a scenario, from 2 to 8. You can add several | Players: 4, Players: 2-4 |
Language: <language> |
Language of an adventure, a translation or an audio pack: Spanish, English, Italian, German, French, Polish or Multilingual. You can add several |
Language: English |
Write them exactly as shown, in English, in the tags of your mod.json (for example "tags": ["Type: Scenarios", "Players: 2-4"]) and in GameBanana's Tags field: the game displays them in each player's language. Use only these three: the game uses no other, and the validator warns you if there is any other.
A scenario without Players doesn't show up when filtering by players, and an adventure, translation or audio pack without Language doesn't show up when filtering by language. The same goes for the categories in Type: a mod with Type: Scenarios needs Players to show up when filtering by players.
The forms without a title from earlier versions (4 players, Spanish) still work, but the validator asks for the new one. The Gameplay, Cosmetic and Online tested tags 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 my-mod --name "My 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 its own
rle.mmp, only what it changes in or adds to the game's, inrle.mmp.tail; the game's is left as it is. - 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.