Content engines

An engine describes which maps, mods and plugins a game has, where their files go and which server settings to change on install. It's what makes one-click add-ons possible (see Maps and mods). Engines are listed under Content engines.

Usually there's nothing to change here. The built-in engines cover popular games. To give a game maps and mods, just pick its engine: Games → the game → the Maps and mods block → Engine and Game directory. Come here only when a content type is missing or you're adding a game that isn't on the list.

Built-in engines

  • GoldSrc — CS 1.6, Half-Life, TFC, DoD, Sven Co-op: maps with resources, AMX Mod X plugins and frameworks / Metamod. Counter-Strike 1.6 — the same plus map import from GameBanana.
  • Source — CS:S, TF2, L4D2, DoD:S, HL2DM: maps with resources, SourceMod plugins and frameworks / Metamod:Source. Counter-Strike: Source — plus GameBanana.
  • Source 2 — CS2: Metamod:Source 2, CounterStrikeSharp and its plugins. Counter-Strike 2 — plus Steam Workshop maps.
  • Minecraft Java — plugins, mods and datapacks, import from Modrinth, and game version and loader checks.
  • Minecraft Bedrock — behavior and resource packs, worlds.
  • Rust (Oxide/uMod) — Oxide and plugins, import from uMod.
  • BepInEx, Valheim, V Rising, Risk of Rain 2 — the BepInEx loader and mods; the last three import from Thunderstore.
  • Terraria (tModLoader) and Terraria (TShock) — mods or plugins, and worlds.
  • Factorio — mods and saves, import from Factorio Mod Portal.
  • Arma 3, DayZ — Steam Workshop mods via the steamcmd installer (see "Installers" in Maps and mods).
  • Project Zomboid, Space Engineers, Unturned, Garry's Mod — Steam Workshop mods the server downloads itself.
  • SA-MP — gamemodes, filterscripts and plugins.
  • No preset — an empty engine: content types are set right in the game's settings.

Which engine to pick for a given game and what to put in Game directory is on Games → Game setup guide.

The engine list

Filters above the list: All, In use (picked by at least one game), Custom and Modified (built-ins you've edited). Each engine shows the games using it, the engine it's based on, the game folder and its content types — with a description of where things go and what changes in configs.

Add a content type

Say CS 1.6 is missing a "Sounds" or "Custom models" type. Rather than editing the built-in engine, make your own based on it:

  1. Click Create based on on a suitable engine. The new engine takes all of the original's content types.
  2. Set the Name, Code (Latin letters, digits, _ and -, e.g. rehlds; it can't be changed later) and Description.
  3. Add a type under Custom content types. A template is a handy start: File to folder, Map archive or Steam Workshop. A type with the same code as one in the base engine replaces the inherited one.
  4. Save and pick the new engine in the game's settings.

An example — sounds as an archive into the game folder:

{
  "sound": {
    "label": "Sounds",
    "delivery": "archive",
    "files": [{ "from": "", "to": "" }],
    "allowed_ext": [".wav", ".mp3"],
    "on_conflict": "keep",
    "hot": true
  }
}

If the type is needed by one game only, there's no need for an engine: the game's settings have Add custom types, which add to or replace the chosen engine's types.

Type fields

The form has a field reference too — What the fields mean.

  • label — the type's name in the panel ("Maps").
  • delivery — how it's installed: file — a single file; archive — an archive with folders; directory — a whole folder (a world); workshop — by Steam Workshop ID, the server downloads the files; installer — an installer on the node produces the files.
  • target_dir — for file and directory: where to put it, relative to the game folder.
  • files — for archive: [{from, to}] rules saying which archive folder goes where ("" — the root).
  • allowed_ext — allowed file extensions.
  • primary — {dir, ext}, the main file (e.g. .bsp in maps). The add-on is named after it.
  • register — config edits on install. They're rolled back when the add-on is removed.
  • hot — true if the add-on works without a server restart.
  • requires — codes of add-ons that must be installed first (["amxmodx"]).
  • selectable_by_variable — the server setting where the customer picks an installed option (e.g. map).
  • preserve — settings files left alone on update.
  • on_conflict — if the file is already on the server: keep — leave it, overwrite — replace it.
  • provider — an external catalog to import from: modrinth, thunderstore, umod, gamebanana, factorio.
  • installer — for installer: the installer's code from Installers.
  • lowercase — for archive and installer: lowercase file names (Arma mods on Linux).

Values can use {{name}} (map or plugin name), {{file}} (file name), {{slug}} (add-on code) and {{workshop_id}}.

Config edits (register)

  • ensure_line — add a line to a file, e.g. a map name to mapcycle.txt. With before the line goes above the given line instead of at the end.
  • set_kv, list_kv — a key or a list in key=value files (ini, properties).
  • json_set, json_upsert, json_list — a value, an object or a list item in a JSON file.
  • xml_list — an element in a list of an XML file.
  • copy_glob — copy the add-on's files matching a pattern into another folder, e.g. *.bikey keys into keys for Arma.
  • set_var, list_var — don't touch files but change a server setting (e.g. Arma's -mod=@a;@b). The server then restarts with the new value.

An example — an AMX Mod X plugin that needs a line in plugins.ini:

{ "action": "ensure_line", "file": "addons/amxmodx/configs/plugins.ini", "value": "{{file}}" }

Compatibility

The Compatibility field is only for games with versions and loaders, like Minecraft. It names the server settings that hold the game version and the loader, e.g. { "game_version_var": "version", "loader_var": "type" }. The panel then warns when a mod doesn't fit the server.

Changes and rollback

Saving an engine applies at once to every game using it. The new rules apply to new add-on installs and updates. Add-ons already installed are removed by the records made when they were installed.

If an engine is built wrong, its card shows The engine doesn't build: with the reason.

  • Restore original — roll back your edits to a built-in engine.
  • Only your own engine can be deleted, and only if no game uses it and no other engine is based on it. Built-in engines can't be deleted.

Test a new type on a test server: install an add-on, restart the server and make sure it loaded.