Ground of Aces Modding
Loading...
Searching...
No Matches
How mods work

A mod is a folder. The game looks inside it for a handful of fixed subfolders, and whatever those subfolders contain is what the mod changes. There is no packaging step, no manifest you have to write, and nothing to compile: you edit files, load a level, and see the result.

This page covers what every mod has in common - where it lives, how the game finds it, how it is switched on and off, and how it gets to other players through the Steam Workshop. What goes into the subfolders is on the category pages: Changing game data with a CSV mod, Missions, Quests and Scripting.


Where mods live

The game reads mods from two places: the items you are subscribed to on the Steam Workshop, and your own Mods folder. Anything you make yourself goes into the second one.

Platform Mods folder
Windows USERPROFILE%\AppData\LocalLow\Blindflug Studios\Ground Of Aces\Mods\
macOS ~/Library/Application Support/Blindflug Studios/Ground Of Aces/Mods/
Linux ~/.config/unity3d/Blindflug Studios/Ground Of Aces/Mods/

The folder is created the first time the game starts. The quickest way to reach it is the Open folder button in the Mods window (see below). The game also keeps a small mod_state.json in this folder - that is its own bookkeeping of which mods you switched on or off, not part of any mod.

One mod is one folder

Inside your mod's folder, each kind of content has a fixed subfolder. Only the ones you need have to exist:

Mods/
my_mod/
config.json optional - name, id, load order
preview.png optional - the picture shown in the Mods window and on the Workshop
CSV/ data tables - see @ref csvdata
Missions/ mission .json files and Python .py scripts - see @ref missions_modding and @ref scripting
Quests/ quest .json files - see @ref quests_modding
Maps/ .goamap files - see @ref quests_maps
Objects/ replacement models for buildings and objects
TerrainObjects/ replacement models for trees, rocks and other map objects
Biomes/ biome definitions

Three rules decide whether the game notices the folder at all:

  • A subfolder only counts when there is something in it. An empty CSV/ folder is the same as no CSV/ folder.
  • A mod folder with none of the subfolders above (or only empty ones) is ignored without a message.
  • Symbolic links and junctions are never followed, neither as the mod folder nor as one of its subfolders. The game skips them with a warning in the log.

For CSV, Missions, Quests and Maps only files directly inside the subfolder are read; anything deeper is ignored. Objects, TerrainObjects and Biomes work the other way round: each object gets its own subfolder named after the object it replaces. Those three have no guide on this site yet.

config.json

Optional. Without it the folder name is shown as the mod's name, its id is derived from the folder name, and the load order is 100.

{
"Id": "my_mod",
"Name": "My Mod",
"Author": "Your Name",
"Version": "1.0.0",
"LoadOrder": 100
}
  • Id is what the game uses to tell mods apart and to break load-order ties. It must be 3–64 characters of lower-case letters, digits, _, . or -, starting with a letter or digit. An Id that breaks this rule is ignored without a message and the folder name is used instead - lower-cased, with every other character replaced by _. Log lines about your mod are labelled with this id, so a rejected id shows up as a label you did not expect.
  • Name is what players see. Any text.
  • LoadOrder decides the order in which mods are applied (see below). Lower numbers are applied first.
  • Author and Version are kept for you and for the Workshop page; the game does not read them.
  • A config.json the game cannot parse is reported in the log and treated as if it were absent.

preview.png

Optional. A PNG at the root of the mod folder, at most 1 MB. The Mods window shows it next to the mod's name, and it becomes the item's picture when you upload the mod to the Workshop. Without one the Mods window shows a placeholder, and the Workshop item has no picture until you add one on its Steam page.


The Mods window

Main menu → Mods lists every mod the game found - Workshop subscriptions and your own folders - with its preview picture, a marker that says whether it came from the Workshop or from your Mods folder, and one badge per kind of content it carries.

Control What it does
Enabled switch (per mod) Switches the mod on or off. A mod that is off contributes nothing: its tables, quests, missions, scripts and maps are all skipped. Maps take effect at once; everything else the next time a level is loaded. New mods are on by default.
Upload button (per mod, local mods only) Publishes the mod to the Steam Workshop - see below.
Refresh Scans the Workshop items and your Mods folder again. Press it after you create a new mod folder, rename one, change a config.json, or subscribe to something on the Workshop while the game is running.
Open folder Opens your Mods folder in the file browser, creating it if it does not exist yet.

The window also has a Scripting switch per mod. It is reserved for a coming opt-in and has no effect on what is loaded at the moment - a mod's scripts run whenever the mod is enabled.

Which mod wins

Mods are applied Workshop items first, then the ones in your Mods folder, and inside each group in LoadOrder order - lower numbers first, ties broken by id. When two mods provide the same thing - a row in the same table, a quest with the same file name, a mission with the same id - the one applied last wins. Two consequences:

  • Your own copy of a mod always beats the Workshop copy of the same mod, so you can keep working on a mod you have already published and test your changes with the published version still subscribed.
  • Two mods from the same source with the same id are not both loaded - the second one found is skipped with a warning in the log.

The practical rule that follows: prefix every id you invent with your mod's name, so you never replace something by accident.

Your own Missions and Maps folders next to Mods - where the in-game Mission Editor and the map editor save - are read after every mod and win over all of them.

Seeing your changes

Everything a mod contains is read when a level is loaded. Return to the main menu and load a save or start a map, and the game picks up whatever you changed in the meantime - tables, quests, missions, scripts and maps alike. Only the list of mods is scanned once, when the game starts:

You changed… To see it
A file inside a mod the game already knows Load a level (loading a save is enough)
A map inside a mod Also at once, when you toggle the mod's Enabled switch
A new mod folder, a renamed folder, a changed config.json, a subfolder that was empty when the game started Refresh in the Mods window, then load a level - or restart the game
A new Workshop subscription while the game is running Refresh in the Mods window once Steam has finished downloading it

The game writes what it accepted and what it refused to its log file, Player.log. On Windows and Linux the file sits in the same folder as Mods; on macOS it is in ~/Library/Logs/Blindflug Studios/Ground Of Aces/. The previous run's log is kept as Player-prev.log. The shipped game logs errors only; the detailed [Mod …] lines described on the category pages appear in development builds and in the Unity editor.


Sharing a mod

Uploading to the Steam Workshop

The Workshop is how a finished mod reaches other players, and the upload happens from inside the game. You need the Steam version of the game, started through Steam.

  1. Make sure the folder is exactly what you want to ship. The whole mod folder is uploaded as it is - config.json, preview.png and every content subfolder. Remove test files first.
  2. Give it a Name in config.json (this becomes the Workshop title) and a preview.png (this becomes the Workshop picture).
  3. Open Main menu → Mods and press Upload on the mod.
  4. A window lists New Workshop item followed by every item you have published before. Pick New Workshop item for a first upload, or the existing item to replace its contents with this version. Confirm.
  5. Wait for the progress bar. When the upload is done, the window shows the item's Workshop link.

The item is published with public visibility and the Workshop tag Mod. Steam may ask you to accept the Workshop legal agreement the first time you publish; do that on the item's Steam page and the item becomes visible.

Updating an existing item replaces its files but leaves its title, description and picture alone - edit those on the item's Steam page. The description is always written there; the game does not send one.

Installing a mod from the Workshop

Subscribe to the item on the Steam Workshop. Steam downloads it into its own Workshop folder - nothing lands in your Mods folder - and the game lists it in the Mods window the next time it starts, or after Refresh. It is switched on by default and marked as a Workshop item.

Unsubscribing removes it again. Saves that used the mod keep working; what happens to the content the mod added is described on each category page (for quests, see Quests).

Installing a mod by hand

Copy the mod's folder into your Mods folder so that its config.json or its content subfolders sit directly inside it (Mods/some_mod/CSV/…, not Mods/some_mod/some_mod/CSV/…). Press Refresh in the Mods window or restart the game.