Running game servers
Mod manager
The mod manager edits a service’s Steam Workshop mod lists: which mods, in which load order. It
works for games whose definition has a workshop section and one or more modlist variables
(ArmA 3 among the shipped games). For how mods are downloaded and laid out on the node, see
Steam and the Workshop.
The mod manager is the service’s Mods tab (shown for games with Workshop support) and needs
the service permission mods. Administrators curate each game’s catalog on the game’s
Mod catalog tab (Games -> the game).
Mod lists
Each modlist variable of the game is one list. ArmA 3 has two:
| Variable | Label | Becomes |
|---|---|---|
mods |
Mods (-mod) | -mod= on the server and on headless clients |
server_mods |
Server mods (-serverMod) | -serverMod= on the server only |
A list holds Workshop item ids in load order: the first mod loads first. Each list holds at most 200 mods; duplicates are dropped.
Adding mods
You can add a mod by its Workshop id (450814997) or its Workshop link
(https://steamcommunity.com/sharedfiles/filedetails/?id=450814997).
Workshop collections are resolved into their items first, in the collection’s order. Nested collections are followed (up to three levels) and an item that appears twice is kept once. The panel shows each item with its title, so you can check the list before saving.
Through the API this is two steps:
-
Resolve the id or link (a collection becomes its items, with titles):
curl -s -X POST https://panel.example.com/api/v1/services/12/mods/expand \ -H "Authorization: Bearer ngcpk_..." -H "Content-Type: application/json" \ -d '{"ref": "https://steamcommunity.com/sharedfiles/filedetails/?id=1234567890"}' -
Save the whole list, in load order:
curl -s -X PUT https://panel.example.com/api/v1/services/12/mods/mods \ -H "Authorization: Bearer ngcpk_..." -H "Content-Type: application/json" \ -d '{"ids": ["450814997", "463939057"]}'
Saving a list does not expand collections: always resolve a collection first and save its items.
Saving and downloading
Saving tells you whether the mods changed (mods_changed in the API). Changed mods are not
downloaded at once: run the service’s Update action to download them and rebuild the mod
folders, then (re)start the server. Update stops a running server while it works.
To keep mods current automatically, schedule an update task (see Scheduled
tasks), for example every night with only when empty.
Removing a mod from a list removes it from the command line at the next start.
The mod catalog
Administrators can keep a catalog of recommended mods per game, so users pick from a known list instead of searching the Workshop. A catalog entry is a Workshop item or a Workshop collection with a name and an optional description (up to 500 characters).
- Reading a game’s catalog needs
games:read; changing it needsgames:write(Admins and SuperAdmins). - An item must exist on the Workshop; its name defaults to the Workshop title. A collection must be public and needs a name. The kind cannot be changed later.
- The service’s mod manager shows the catalog of its game next to the lists.
- Removing a catalog entry does not remove the mod from services that already use it.
curl -s -X POST https://panel.example.com/api/v1/game-definitions/arma3/mods \
-H "Authorization: Bearer ngcpk_..." -H "Content-Type: application/json" \
-d '{"kind": "workshop", "workshop_id": "450814997", "name": "CBA_A3", "description": "Community Base Addons, needed by most mods"}'
The catalog is a convenience: users with the mods permission can still add any Workshop item
by id.