Skip to main content
LandSandBoat stores all server configuration as Lua files in the 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:
Because 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 from settings/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.
Only copy the files you need to change. The default/ files serve as the authoritative reference and are updated with new settings as the project evolves.

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:
Where {FILE} is the settings file name in uppercase and {SETTING} is the key name. For example:
In a Docker Compose file:
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):
  1. Environment variables — XI_{FILE}_{SETTING}=value
  2. Override files — settings/<file>.lua
  3. Defaults — settings/default/<file>.lua
The precedence listed here means environment variables override file-based settings. If you have both a settings/main.lua file and an XI_MAIN_EXP_RATE env var, the env var wins.