settings/ directory. Every setting is attached to the global xi.settings object, which is accessible from both C++ and any Lua script running on the server.
Settings files
Each file covers a specific area of the server:Main settings
Gameplay rates, expansions, character config, content toggles
Network settings
Database credentials, port bindings, TCP/IP rules
Map settings
Zone behavior, combat, crafting, mob tuning
Login settings
Account creation, version locking, maintenance mode
The xi.settings object
All settings files populate sub-tables on xi.settings:
xi.settings is a global, any script can read these values at runtime.
How to customize settings
You have two ways to change a setting.1. Override file
Copy the relevant file fromsettings/default/ into settings/ and edit it there. The server loads settings/<file>.lua first, and falls back to settings/default/<file>.lua if no override exists.
2. Environment variables
For Docker deployments (or any environment where you don’t want to mount files), individual settings can be injected as environment variables using the format:{FILE} is the settings file name in uppercase and {SETTING} is the key name. For example:
MariaDB credential environment variables also accept the
MARIADB_DATABASE, MARIADB_USER, and MARIADB_PASSWORD aliases used by the official MariaDB Docker image.Setting precedence
When the server starts, settings are resolved in this order (highest priority first):- Environment variables —
XI_{FILE}_{SETTING}=value - Override files —
settings/<file>.lua - Defaults —
settings/default/<file>.lua