RE:NODE

ConfigurationManager (F1) в Valheim на сервере с модами

Автор Команда RE:NODE
10 мин чтения


BepInEx ConfigurationManager - это клиентский мод, который рисует настройки каждого установленного плагина в окне, открываемом в игре, по умолчанию клавишей F1. Изменение значения там сразу записывается в .cfg этого плагина на вашем собственном ПК. На выделенном сервере именно это люди понимают неправильно: меню правит клиент, а не сервер. Исключение - настройки, которые мод синхронизирует с сервера через ServerSync или Jotunn: пока вы подключены, они показывают значения сервера, доступны только для чтения, если вас нет в списке администраторов сервера, а правка администратора отправляется на сервер и сохраняется там. Всё остальное на сервере, включая любой мод, работающий только на сервере, меняется правкой файла в папке BepInEx/config сервера. Самому серверу ConfigurationManager не нужен никогда.

Что такое ConfigurationManager#

BepInEx хранит настройки каждого плагина в INI-файле в BepInEx/config, который создаётся при первой загрузке плагина. Эти файлы читаемы, но утомительны: у крупного мода может быть сотня настроек в десятке секций, и чтобы увидеть большинство изменений, нужно выходить из игры. ConfigurationManager читает те же настройки из памяти и показывает их формой: переключатели как флажки, числа как ползунки или поля, списки как выпадающие меню, привязки клавиш как кнопку, после нажатия на которую нужно нажать новую клавишу.

Оригинал написал ManlyMarco в рамках проекта BepInEx для BepInEx вообще. Игроки Valheim в основном ставят его сборку для Valheim с Thunderstore; на момент написания та, на которую чаще всего ссылаются страницы модов, - "Official BepInEx ConfigurationManager" от Azumatt, и есть форки с дополнительными возможностями для Valheim. Все они читают одну и ту же систему конфигурации, поэтому инструкции ниже подходят к каждому из них; точный вид окна различается.

Устанавливайте его как любой клиентский мод, через менеджер модов или поместив в BepInEx/plugins. Зависимостей, кроме BepInExPack, у него нет.

Как открыть и найти настройку#

Нажмите F1 в главном меню или в игре. В окне перечислены плагины, у которых есть настройки, в свёрнутом виде по именам; щёлкните по имени, чтобы развернуть, или введите текст в поле поиска сверху, чтобы отфильтровать сразу все плагины.

Элементы управления, которые стоит знать:

ЭлементЧто делает
Поле поискаФильтрует настройки по имени во всех плагинах
Show settingsВключает или отключает обычные настройки
Show keyboard shortcutsВключает или отключает привязки клавиш
Show advancedПоказывает настройки, помеченные автором как расширенные и скрытые по умолчанию
Кнопка сброса / значения по умолчаниюВозвращает отдельную настройку к значению по умолчанию, объявленному модом

Наведите курсор на настройку, чтобы увидеть описание, написанное автором, - тот же текст, что стоит над ключом в .cfg. Прочитайте его, прежде чем что-либо менять: часто там сказано, нужен ли для изменения перезапуск и синхронизируется ли настройка с сервером.

Если F1 конфликтует с другим модом или с чем-то, что вы назначили, поменяйте клавишу. У ConfigurationManager есть свой файл конфигурации, обычно BepInEx/config/com.bepis.bepinex.configurationmanager.cfg, а горячая клавиша лежит в секции [General]:

com.bepis.bepinex.configurationmanager.cfg
[General]## The shortcut used to toggle the config manager window on and off.# Setting type: KeyboardShortcut# Default value: F1Show config manager = F1

Имя ключа и секции давно стабильны, но форки могут их переименовывать. Если ваш файл выглядит иначе, горячая клавиша всё равно находится в собственных настройках ConfigurationManager, так что её можно поменять и из самого окна.

Что на самом деле меняет правка в игре#

Каждое изменение в окне сразу записывается на диск, в .cfg плагина на машине, где запущена игра. BepInEx сохраняет файл конфигурации всякий раз, когда в нём устанавливается значение, поэтому отдельного шага сохранения нет.

Делает ли новое значение что-нибудь немедленно, решает мод:

  • Применяется сразу. Многие настройки читаются при каждом использовании: положение HUD, проверка размера стопки, цвет. Они меняются в ту же секунду, как вы их правите.
  • Применяется при следующей загрузке. Настройки, которые читаются при запуске мода (рецепты предметов, регистрируемые постройки, описания существ), сохраняются, но действуют только после перезапуска игры. Обычно об этом сказано в описании.
  • Применяется при следующем входе в мир. Некоторые настройки читаются при загрузке в мир, так что достаточно выйти в главное меню и зайти заново.

Если изменение, похоже, ничего не делает, определите, какой из трёх случаев ваш, прежде чем решать, что мод вас проигнорировал.

Подключение к серверу: синхронизируемые, заблокированные и локальные настройки#

Когда вы заходите на выделенный сервер с модами, смысл окна меняется. Настройки делятся на три группы, и окно не всегда подписывает их чётко.

Вид настройкиВиден ли в вашем F1Кто решает значениеПравка игроком
Локальная (не синхронизируется)ДаВыМеняет только вашу игру
Синхронизируемая, заблокированнаяДа, со значением сервераСерверТолько чтение, если вы не администратор
Синхронизируемая, без блокировкиДаЗависит от модаПо-разному; не полагайтесь на это
Мод только для сервераНет, у вас нет этого модаФайл сервераС клиента невозможно

Локальные настройки ведут себя точно так же, как в одиночной игре. Ваш HUD, привязки клавиш и параметры модов, связанные с графикой, принадлежат вам, и сервер их никогда не видит.

Синхронизируемые настройки - те, которые мод передаёт с сервера через ServerSync или через синхронизацию Jotunn только для администратора. Пока вы подключены, окно показывает значение сервера. Если у мода включён Lock Configuration (для модов с ServerSync это обычное значение по умолчанию), не-администратор не может их менять; большинство модов показывают их как недоступные. Когда вы отключаетесь, ваши собственные значения обычно возвращаются. Механизм и блокировку подробно объясняет статья ServerSync и принудительная синхронизация конфигов.

Моды только для сервера не появляются совсем. Мост с Discord, мод для backup или серверный инструмент администратора работают только на сервере, поэтому на вашем клиенте нет плагина, который можно было бы показать. ConfigurationManager не может дотянуться через сеть и настроить мод, которого у вас нет.

Администраторы правят сервер из F1#

Игроки из adminlist.txt сервера получают одну дополнительную возможность: для синхронизируемых настроек их правки отправляются на сервер. Порядок такой:

  1. Администратор меняет синхронизируемое значение в окне, пока подключён.
  2. Мод отправляет новое значение на сервер, который сверяет отправителя со своим списком администраторов.
  3. Сервер применяет его, записывает в собственный .cfg и рассылает каждому подключённому клиенту.

Это самый быстрый способ балансировать работающий сервер: подкрутите урон врагов или шанс выпадения предметов прямо во время сессии, и все увидят изменение. У этого есть цена. Нет ни подтверждения, ни отмены, поэтому случайное движение ползунка действует сразу для всех. Изменение попадает в файл сервера, так что переживает перезапуски, и записывать его никому не нужно. И нет никакой истории, кроме того, что пишет лог сервера, а для большинства модов это ничего.

Безопасными это делают два правила:

  • Держите список администраторов коротким. Любой ID в adminlist.txt может со своего ПК переписывать синхронизируемые настройки баланса, а также кикать и банить. Форматы, включая ID с префиксом платформы, нужные серверам с кроссплеем, описаны в статье три списка: adminlist, bannedlist и permittedlist.
  • Скопируйте папку конфигурации сервера после сессии настройки. Скачайте BepInEx/config, когда группа довольна результатом, и храните её рядом с backup. Это ваша запись о том, что изменилось.

Если правки администратора ничего не делают, обычные причины таковы: его ID отсутствует или записан в неверном формате, мод не поддерживает правку администратором (некоторые синхронизируют значения только из файла) либо настройка вообще не синхронизируется - тогда правка изменила только игру самого администратора и ничью больше.

Вместо этого - правка файла#

Для всего на сервере, что не является синхронизируемой настройкой, и для любых изменений, которые вы хотите внести обдуманно, а не на лету, правьте файл. Для модов только для сервера это и единственный вариант.

  1. Корректно остановите сервер и дайте миру сохраниться.
  2. Откройте BepInEx/config/<plugin GUID>.cfg на сервере.
  3. Измените значение после =. Имя ключа, секцию и формат сохраняйте точно как написано.
  4. Запустите сервер и найдите в его консоли строку Loading этого мода.

Сначала остановить сервер важнее, чем кажется. BepInEx держит каждую конфигурацию в памяти и перезаписывает файл целиком, когда значение устанавливается или мод сохраняется. Если вы отредактируете файл работающего сервера, а затем что-то на сервере установит значение (правка администратора через F1, мод, сохраняющий своё состояние), копия в памяти перезапишет вашу правку. Некоторые моды следят за своим файлом и перечитывают его при сохранении, так что для такого мода правка на ходу безопасна; если мод не говорит об этом прямо, считайте, что не следит.

То же относится к вашему собственному ПК. Если править .cfg в текстовом редакторе при запущенной игре, а затем зайти в этот мод через F1, ваша текстовая правка может незаметно пропасть. За одну сессию пользуйтесь чем-то одним.

Есть и третий способ, через менеджеры модов. r2modman и Gale включают редактор конфигов, который открывает файлы профиля без поиска папки; это удобно для клиентских настроек и бесполезно для сервера, чьи файлы лежат на сервере. На RE:NODE папка BepInEx/config сервера открыта в файловом менеджере панели, который правит файлы .cfg в браузере с подсветкой синтаксиса, так что цикл "остановить - править - запустить" не требует скачивания.

Пример: настройка сервера для группы#

Группа из шести человек хочет более щедрый переносимый вес и более медленный таймер роста культур, используя один мод с ServerSync и один контентный мод на Jotunn. Аккуратный порядок:

  1. Задайте базовые значения в файлах. При остановленном сервере отредактируйте .cfg обоих модов на сервере до согласованных значений. Убедитесь, что в моде с ServerSync стоит Lock Configuration = On.
  2. Запустите и проверьте. Зайдите обычным игроком, откройте F1 и убедитесь, что синхронизируемые настройки показывают значения сервера и недоступны для правки. Если их можно править, вы администратор или блокировка выключена.
  3. При необходимости подстройте на лету. Один администратор правит значения в F1 во время первой сессии, пока группа играет. Все сразу видят изменение.
  4. Зафиксируйте результат. После сессии скачайте BepInEx/config сервера и сохраните вместе с backup мира. Запишите изменившиеся значения в список модов группы.
  5. При необходимости поставьте клиентские значения по умолчанию. Локальные настройки, которые должны совпадать (например, общая раскладка меток на карте), попадают на клиентскую сторону через экспортированный профиль или сборку с папкой config.

Типичная ошибка - обратная: каждый игрок правит свой F1, на сервере ничего не задано, и через несколько недель группа обнаруживает, что синхронизировалась лишь половина настроек.

Устранение неполадок#

F1 ничего не делает. Мод не загружен, или клавишу занял другой мод. Найдите в BepInEx/LogOutput.log клиента строку Loading с названием ConfigurationManager; если она есть, измените горячую клавишу в его собственном конфиге.

Настроек мода нет в списке. У мода нет настроек, он использует отдельный файл вроде YAML или не установлен на вашем клиенте. Моды, хранящие конфигурацию в YAML, часто показывают в F1 лишь несколько переключателей.

Настройки неактивны. Они синхронизируются и заблокированы сервером, а вы не администратор. Попросите администратора или отредактируйте файл сервера.

Моё изменение сбросилось, когда я зашёл на сервер. Настройка синхронизируется, и значение сервера заменило ваше на время сессии.

Изменение администратора в F1 откатилось после перезапуска. Мод применил его в памяти, но не сохраняет правки администратора, либо файл сервера заменили из backup или при деплое. Задайте значение в файле сервера.

Окно закрывает экран, или текст мелкий. Форки различаются; у большинства есть настройки размера окна или масштаба шрифта в собственной секции конфигурации. Ищите под ConfigurationManager в самом окне.

Если похоже, что мод не загружается, а не что настройка не применяется, начинайте с лога - его разбирает статья чтение логов BepInEx.

FAQ#

Нужен ли ConfigurationManager на сервере?

Нет. У выделенного сервера нет ни экрана, ни ввода, поэтому нечем рисовать окно. Устанавливайте его только на клиентах. Администраторы правят синхронизируемые настройки со своего клиента, а всё остальное на сервере правится в файлах сервера.

Является ли ConfigurationManager читом, если у других игроков его нет?

Нет. Он лишь правит настройки, которые уже есть на вашем клиенте. Синхронизируемые заблокированные настройки он не может переопределить поверх сервера, а локальные настройки любой может изменить так же в текстовом редакторе.

Почему я не нахожу настройку, о которой говорил владелец сервера?

Либо она принадлежит моду, работающему только на сервере, и поэтому никогда не появляется в вашем окне, либо скрыта за Show advanced. Попробуйте поле поиска при включённых расширенных настройках.

Применяются ли изменения в игре для всех на сервере?

Только если настройка синхронизируется, а тот, кто её меняет, есть в списке администраторов сервера. Любая другая правка в F1 влияет лишь на игру этого игрока.

Можно ли править конфиги из главного меню?

Да. Окно открывается и в главном меню, и в игре. Настройки, которые читаются при запуске, вступают в силу только после перезапуска игры, где бы вы их ни изменили.