Справочник по файлам конфигурации
В качестве файлов конфигурации используется TOML, относительно современный и простой формат конфигурационных файлов.
По умолчанию сервер загружает файл конфигурации из server_config.toml рядом с исполняемым файлом. Клиент загружает его из GameControllerOptions.ConfigFileName (по умолчанию client_config.toml) в каталоге пользовательских данных.
В файлах конфигурации хранятся “CVar”, что является сокращением от “console variable” (консольная переменная), но также может означать “config variable” (переменная конфигурации), в зависимости от того, насколько вам важно быть точным по отношению к Quake или чему-то подобному. Это не имеет особого значения. Эй, зато коротко писать.
Ускоренный курс по TOML
TOML по сути просто INI, но немного более строго специфицированный и хипстерский. Вы пишете заголовки в квадратных скобках и ключи под ними. Мы не используем более продвинутые возможности TOML, чем показано здесь (поскольку они отстой):
[net]
port = 12345
[game]
hostname = "honkhonk"
maxplayers = 64
[log]
enabled = true
Когда CVar упоминается как net.port, это означает, что нужно поместить port = foo под заголовок [net]. В случаях, когда вы обращаетесь к cvar напрямую целиком (например, в команде cvar), вы пишете полное имя (например, cvar net.port).
Справочник по CVar
Если вы хотите найти справочник всех CVar, доступных в игре/движке, лучше всего заглянуть в код игры и движка: CCVars.<category>.cs для Space Station 14, CVars.cs для Robust. Читаться должно довольно легко.
Способы задания CVar
- Вы можете поместить их в файл конфигурации сервера или клиента, и они будут загружены автоматически.
- Вы можете использовать команду
cvar, чтобы просматривать и задавать CVar во время выполнения. Учтите, что не все CVar поддерживают изменение на лету: последствия могут варьироваться от нормальной работы до взрыва сервера или полного отсутствия эффекта. - Вы можете передать
--cvar foo.bar=123в качестве аргумента командной строки клиенту или серверу, чтобы переопределить CVar при запуске. Это также переопределяет любые значения, заданные в файлах конфигурации. - Вы можете использовать переменную окружения
ROBUST_CVARS, которая разделяется точкой с запятой, вот так:ROBUST_CVARS=foo.bar=1234;foo.baz=hello there. Вряд ли вы захотите принимать в неё небезопасный ввод, поскольку она довольно примитивна и не может быть корректно экранирована. - Вы можете задавать CVar через несколько переменных окружения с префиксом
ROBUST_CVAR_(обратите внимание на отсутствие множественного числа по сравнению с предыдущим). Например,ROBUST_CVAR_game__hostname=foobar. Двойное подчёркивание (__) заменяется на..