What the mod does
ATG Commands adds a single chat command, /atg, and lets the other ATG mods put
their controls underneath it. Instead of learning a different command per mod, an
administrator learns one word.
On its own it does very little — it answers /atg and three small built-in commands,
with two more appearing when ATG Core is loaded alongside it. Its value is that
everything else lives in one place: install it alongside other ATG mods and their
commands appear automatically under /atg.
Installing it
Load ATG Commands before any ATG mod that uses it. Mods find it by load order rather than by declaring it as a dependency, so a mod ordered ahead of ATG Commands will silently come up with no chat commands at all.
If you run a server with ATG Scenario, the order in your mod list should read ATG Commands, then ATG Scenario.
Nothing else is required, and there is nothing to configure.
Using it
Type /atg on its own to list every command available on that server, including
ones added by other mods. The list is generated from what is actually loaded, so it
is always accurate for that server.
| Command | What it does |
|---|---|
/atg | List every available command |
/atg status | Report what each ATG mod is currently doing, one line per topic |
/atg whoami | Report which server roles you hold |
/atg altitude | Report the Game Master camera height, or set it |
/atg reload | Re-read every ATG mod’s settings file. Needs ATG Core loaded too. |
/atg rplprobe | Measure what a player’s connection will carry. Needs ATG Core too. |
Everything else comes from other mods. With ATG Scenario loaded you also get op and
combat, for switching the server between rolling objectives and an authored operation
— see Narrative ops — and zone, for marking out
where objectives may be placed from inside the running game — see
Objective placement.
/atg status
Each mod contributes its own labelled lines, printed separately so they stay readable as more mods are added:
ATG: mode - combat ops, tier may rise, op in 12 minutes
ATG: score - 1240, tier 3, +85 since the last switch
ATG: narrative - 4 root(s)
ATG: settings - 2 of 9 client(s) still receiving - 6 config(s), 21813 bytes, slowest about 4s
ATG: slowest - Jolyon - 4 config(s), 18422 bytes, about 3s to go
A mod with nothing to report stays quiet rather than printing an empty line. If
nothing at all is registered, /atg status says so.
The last two lines come from ATG Core and are about settings reaching players as they
join. settings always answers; slowest names whoever is worst off and is silent
when nobody is waiting on anything. A player who is not acknowledging at all, rather
than merely slow, is reported as such — that is the one to reach for /atg rplprobe
with. See ATG Core configuration.
/atg whoami
Prints which roles the server thinks you hold. This is the first thing to reach for when a command refuses somebody it shouldn’t — it distinguishes “you don’t have the role” from “the command is broken”.
/atg altitude
Reports how high the Game Master camera is sitting, in metres above the ground beneath it and metres above sea level. Give it a number and it moves the camera to that height above the ground:
/atg altitude Report where the camera is
/atg altitude 400 Put the camera 400 m above the ground below it
Open Game Master first — with no camera open it says so rather than doing nothing. The engine’s own ceiling is 8000 m above sea level; a request above that is clamped, and the reply says which height it settled at.
/atg reload
Re-reads every ATG mod’s settings file from the server’s profile directory and applies it over the settings that mod is already running, without restarting the server.
/atg reload
/atg reload atg-scenario
With no argument it reloads every ATG mod that has registered settings. With a mod name it
reloads that one, and the name is the whole file name without its extension —
atg-scenario for ATG/atg-scenario.json, not scenario. A name nothing is registered
under is refused with the list of names that are.
Each mod replies with one line saying which keys moved, and every connected player is sent whichever of the new values reach clients at all, in the same step, so nobody has to rejoin to pick them up.
This verb comes from ATG Core, which owns the settings file and the reload itself, so it only appears on a server running both mods. If no ATG mod has registered settings there is nothing to reload, and it says so rather than reporting success.
It needs the administrator role, because it changes what the whole server is doing.
Two limits are worth knowing before you rely on it. Deleting a key, or the whole file, does not put the shipped default back — the value stays where the last read left it until the server restarts. And a setting that a subsystem reads once while starting up cannot always be moved by a reload; where that is true the mod’s own page says so. Both are covered on ATG Core configuration.
/atg rplprobe
Finds out how much replicated traffic one player’s connection will actually carry. It is the tool for a server where players are being dropped on join and nobody can say whose connection is at fault.
/atg rplprobe Test your own connection
/atg rplprobe Jolyon Ask that player, then test theirs
/atg rplprobe stop Stop a running test, or withdraw a standing request
/atg rplprobe status Say what is running
The server sends that player a rising amount of filler — doubling every few seconds — until one of two things happens: their connection gives up, or the rate reaches a level comfortably beyond anything the server would ever need to send them. Either way the result is written to the server log and returned to whoever asked for it, as a multiple of what that server’s real settings weigh. A player whose connection drops during the test is given their own result when they come back.
Testing somebody else asks them first. They see a dialog naming who asked, warning that it may disconnect them, and they may refuse — a refusal is reported back to the requester. Testing yourself asks nobody, because you asked.
Two things it declines to do rather than reporting a meaningless number. It will not test the player sitting at a listen host’s own keyboard, because nothing is sent over a connection there. And it stands down partway through if the test is costing the server frame time, reporting what it measured up to that point.
It needs the administrator role, because it can disconnect somebody on purpose. Only one test runs at a time on a server.
This verb comes from ATG Core, which owns the settings replication it measures, so it only appears on a server running both mods.
Who can run what
Every command declares how much authority it needs, and a higher role satisfies a lower requirement — an administrator can run everything without also being flagged as a Game Master.
- Game Master — any server role at all. Used for commands that only read
state, such as
status. - Session administrator — used for commands that change what the whole server is doing.
- Administrator — the highest level.
A player without the required role is told which role the command wants, rather than being ignored, because the usual cause is holding a role one rung below.
These roles describe the chat command only. An RCON caller holds no in-game role, so the roles above are not consulted at all and access is decided by the keyword instead — see below.
Over RCON
The commands are reachable from an RCON client as well as from chat, through two keywords:
| Keyword | Reaches |
|---|---|
#atg | Every command exposed over RCON |
#atgmonitor | Only the commands that read state without changing it |
Send the keyword that matches your server’s rcon permission. A keyword carries a
permission level of its own, and that level has to match the listener rather than be
outranked by it — admin is not a superset of monitor. So a server configured
"permission": "admin" answers #atg and refuses #atgmonitor; one configured
"permission": "monitor" answers #atgmonitor and refuses #atg. The refusal reads
missing permission, which is the same answer a genuine permission failure gives, so a
client sending the wrong keyword looks like one that is not allowed in.
A command is reachable over RCON only if it asked to be, and the default is not
reachable — so installing this mod exposes nothing that was not written to be exposed.
Of the built-in commands, status is reachable through either keyword, and reload and
rplprobe through #atg alone, since both change what the server is doing. whoami and
altitude both need a player at a keyboard, so neither is offered.
rplprobe over RCON has no connection of its own to test, so it has to be given a player
name rather than run bare.
#atg on its own lists what is reachable through the keyword you used, so the list is
accurate for the connection you are on rather than for the mod in general.
Arguments reach a command exactly as typed. Only the command word itself is case-insensitive, because names, identifiers and keys are not.
Typing #atg into in-game chat answers with a note to use /atg instead. The #
namespace belongs to the engine’s own administrator commands and is not the chat one.
Extending it
Other ATG mods register their own commands and status lines automatically when
loaded in the right order; nothing needs wiring up by hand. If you are building a
mod of your own and want it to appear under /atg, get in touch — the registration
interface is small, but it is not documented here.