Summary
Shared foundation for ATG's mods: settings, server messages and logging, without Workbench
Description
ATG Core carries the parts more than one ATG mod needs, so they are written
and fixed once rather than copied. It is not a gameplay mod - loading it on
its own changes nothing you can see.
SETTINGS
Every ATG mod's settings become readable from a plain JSON file in the
server's profile directory: no mod of your own, no Workbench, no rebuild, and
one server's tuning is a file you can copy to another.
With ATG Commands loaded too, /atg reload re-reads those files and applies
them to the running server without a restart, and every connected player is
sent the new values in the same step.
The dependency is soft in both directions. An ATG mod runs normally without
Core and falls back to its own config; Core does nothing on its own.
SETTINGS DELIVERY
A joining player is sent the ATG settings through a queue of their own rather
than in one burst: the server sends a block, waits for that player's game to
confirm it, and only then sends more. A struggling connection is given
smaller blocks with a gap between them, judged on packet loss and round-trip
time, and is never sped up. The pacing dials are in atg-core.json.
The Deploy button is held until the settings a player needs in order to spawn
correctly have arrived, and says so on the button. It opens when they land,
never on a timer. Settings a mod marks as server-only are never sent to a
client at all.
With ATG Commands loaded, /atg rplprobe measures how much one player's
connection will actually carry - the tool for a server where players drop on
join and nobody can say whose connection is at fault. Testing somebody else
asks them first.
THE ATG TAB
Preferences each player answers for themselves sit on an ATG tab in the
game's settings menu, built from the rows the loaded ATG mods contribute.
Nothing on it reaches the server, and it appears only once a mod has put
something on it.
SERVER MESSAGES
Core can post messages to every player's chat on a schedule, configured the
same way as everything else. Rotating messages share a pool posted one at a
time on an interval; daily messages are posted once a day at a fixed time,
for a restart warning or an event. Core ships with an empty list, so loading
it adds no chat traffic.
LOGGING
One verbosity level that every ATG mod inherits, so a noisy server is
quietened in one place rather than mod by mod. Four levels, from warnings
and errors only up to a full survey of what each mechanic is doing.
Warnings and errors are never suppressed at any level. Each mod can still
set a level of its own while you are diagnosing that one mod.
LOAD ORDER
Load ATG Core BEFORE any mod that uses it. Getting this wrong produces no
error message - the dependent mods silently drop to their own config files,
and because server and clients can then disagree, the symptom is players
being rejected for a content mismatch rather than anything pointing at load
order.
-addons ATG-Core,<everything else>
Documentation: https://atg-milsim.org/wiki/atg-core
LICENCE
Azzholes Tactical Group Arma Reforger Content License (Non-Commercial, No Derivatives). Stricter than APL-ND: no commercial use, and no re-upload or mirroring outside ATG's own Workshop listings.
Permission requests: https://discord.gg/M5ehKnEnQs
License
Arma Public License No Derivatives (APL-ND)