Epic Loot отлично работает на выделенном сервере, но только одним способом: у сервера и у каждого игрока должна быть одна и та же версия мода и двух его библиотек, Jotunn и JsonDotNET, поверх BepInEx. В силе остаётся серверная копия данных о луте и зачаровании, и она отправляется игрокам при подключении, так что баланс определяется в одном месте. Решения, важные для группы, принимаются до первого босса: какой шаблон баланса использовать, как добыча привязана к убийствам боссов и выпадает ли трофей босса по одному на каждого игрока. Если определиться с этим в первый же день, мод доставляет одно удовольствие; а если менять настройки уже на Равнинах, кто-нибудь почувствует себя обманутым.
Эта статья о том, как запускать Epic Loot для группы на сервере: установка, где лежат его файлы, что синхронизируется, а что нет, и настройки, меняющие общий мир. Это не список всех зачарований: вики самого мода делает это лучше и успевает за изменениями.
Что Epic Loot добавляет в мир#
Epic Loot, созданный RandyKnapp и небольшой командой сопровождающих, превращает фиксированное снаряжение Valheim в лут в духе Diablo. На момент написания актуальна версия 0.14; мод развивается быстро, и несколько описанных здесь систем появились в релизах 0.13 и 0.14, поэтому сверяйтесь с журналом изменений для своей версии.
- Редкости: Magic, Rare, Epic, Legendary, Mythic и Ancient. Чем выше редкость, тем больше магических эффектов и тем больше их значения.
- Магические эффекты: бонусы, действующие, пока предмет надет, - добавленный стихийный урон, уровни навыков, скорость передвижения, грузоподъёмность, сопротивления и длинный хвост необычных эффектов.
- Легендарные и мифические предметы с фиксированными названиями и эффектами, а также легендарные наборы, дающие бонус, когда надето несколько частей.
- Добыча: магические предметы, материалы для зачарования, шардстоуны и неопознанные предметы из существ и сундуков, по биомам.
- Стол зачарования - строимая станция крафта с вкладками: жертвование предметов ради материалов, преобразование и улучшение материалов, зачарование обычного снаряжения, усиление существующего эффекта, расчарование, опознание и нанесение рун.
- Шардстоуны и сокеты: у предметов могут быть слоты для осколков; шардстоуны вставляются в них ради дополнительных эффектов.
- Приключения у торговцев: Haldor продаёт карты сокровищ и заказы на охоту, а также предлагает азартные игры; Hildir предлагает закалку, которая пересчитывает значение зачарования.
Всё это - контент и правила, поэтому мод должен стоять с обеих сторон. Три вида модов - серверные, клиентские и те, что нужны с обеих сторон, - определяют большую часть возможных проблем, а Epic Loot относится именно к последней группе.
Установка на сервер и на каждый клиент#
Набор зависимостей, как он опубликован на Thunderstore для 0.14.x:
| Пакет | Зачем |
|---|---|
denikson-BepInExPack_Valheim | Загрузчик модов |
ValheimModding-Jotunn | Библиотека для предметов, построек, локализации и проверки версий |
ValheimModding-JsonDotNET | Разбор JSON для файлов данных |
RandyKnapp-EpicLoot | Сам мод |
На клиентской стороне менеджер модов - единственный разумный способ держать группу в одной версии. Установите Epic Loot в один профиль r2modman, и он подтянет зависимости нужных версий, затем экспортируйте код профиля и попросите всех его импортировать. Как это сделать и как зафиксировать версии, чтобы чей-то менеджер не "помог" и не обновил один из модов за ночь, описано в статье профили r2modman для группы.
На сервере сначала должен быть установлен и проверен BepInEx. Затем:
- Остановите сервер.
- Загрузите Jotunn и JsonDotNET в
BepInEx/plugins, каждый в отдельную папку, как они поставляются в своих пакетах. - Создайте
BepInEx/plugins/EpicLootи скопируйте туда содержимое папкиpluginsмода - именно так просит делать инструкция самого мода, и файлы остаются вместе для следующего обновления. - Запустите сервер и читайте лог, пока не увидите загрузку Jotunn и Epic Loot, а затем загрузку мира.
- Снова корректно остановите его. При первом запуске были записаны файлы конфигурации, и сейчас самое время их править.
Проще всего сделать так, чтобы сервер в точности совпадал с клиентами, взяв файлы из того же профиля r2modman: в папке профиля есть собственный BepInEx/plugins с теми же версиями. Копирование оттуда исключает ситуацию, когда на сервере 0.14.12, а у всех остальных 0.14.13.
Проверка версий и кик при подключении#
Так как Epic Loot использует Jotunn, при подключении игрока срабатывает проверка версий Jotunn. Игрока, у которого версия Epic Loot или Jotunn отличается от серверной, отключают сообщением с указанием несовпадения. Это сделано намеренно: иначе у игрока предметы незаметно отличались бы от того, что о них думает сервер.
Обычные причины на групповом сервере:
- Менеджер модов одного игрока обновил Epic Loot, а сервер не обновили.
- Обновили сервер, а один из игроков остался на старом профиле.
- Jotunn обновили только с одной стороны - тогда в сообщении будет назван Jotunn, а не Epic Loot.
Решение всегда одно: выберите версию, поставьте её на сервер и ещё раз поделитесь кодом профиля. Как читать сообщение и сопоставлять наборы, описано в статье кики из-за несовпадения версий модов, а как работает проверка Jotunn - в статье библиотека Jotunn: объяснение.
Другое ограничение - кроссплей. Игроки на Xbox и консолях Game Pass не могут устанавливать моды, поэтому сервер с Epic Loot - это сервер только для ПК, что бы ни говорил флаг -crossplay.
Где лежит конфигурация и что синхронизируется#
У Epic Loot два уровня конфигурации, и на сервере они ведут себя по-разному.
Конфиг BepInEx - файл .cfg, названный по ID плагина, randyknapp.mods.epicloot.cfg, в BepInEx/config. В нём переключатели: шаблон баланса, лимиты добычи, соотношения выпадения, режим приключений, режимы добычи с боссов, параметры интерфейса. Если файла нет там, где вы ожидаете, посмотрите в BepInEx/config и в его подпапке EpicLoot: расположение менялось между версиями.
Файлы данных - JSON в BepInEx/config/EpicLoot/, поставляемые версии лежат в baseconfig. Они определяют сам контент:
| Файл | Что содержит |
|---|---|
loottables.json | Что выпадает из каждого существа и сундука, по весу редкости |
magiceffects.json | Каждый эффект, диапазоны его значений по редкостям и на чём он может выпасть |
legendaries.json | Легендарные и мифические предметы и наборы |
iteminfo.json | Типы предметов и привязка добычи к биомам и боссам |
enchantcosts.json | Стоимость зачарования, усиления и расчарования |
adventuredata.json | Заказы на охоту, карты сокровищ, азартные игры и стоимость закалки |
materialconversions.json | Рецепты преобразования и улучшения материалов |
shardstones.json | Определения шардстоунов |
abilities.json | Активируемые способности легендарных предметов |
Правило, которое избавляет от споров: используется серверная копия файлов данных. Когда игрок подключается, сервер отправляет ему свои данные, а мод пишет в лог, что локальная правка игнорируется, пока вы подключены к серверу, чья копия действует. Поэтому баланс меняется на сервере, один раз, и игрокам не нужно копировать JSON-файлы. Собственные сообщения мода говорят об этом прямо: например, об отсутствующем значении эффекта у предмета Ancient сообщается, что "используется серверная копия magiceffects.json" ("the server's copy of magiceffects.json is the one in use").
Из этого два следствия. Во-первых, изменённый loottables.json на сервере не получает новый контент при обновлении мода: мод либо предлагает обновить файл, либо оставляет вашу копию в покое, и новая добыча (недавний пример - шардстоуны) будет отсутствовать, пока вы её не добавите. Есть настройка Always Refresh Core Configs, которая при каждом запуске перезаписывает основные файлы поставляемыми значениями по умолчанию, - то есть стирает и ваши правки, о чём её описание предупреждает заглавными буквами. Во-вторых, последние версии поддерживают файлы-патчи в папке patches рядом с baseconfig: они накладывают ваши изменения поверх поставляемых файлов, а не заменяют их. Если вы вообще меняете баланс, используйте патчи - они переживают обновления. Формат патчей описан в документации мода.
Баланс в групповом мире#
Это настройки в .cfg, которые меняют игру в мире. Задайте их до начала игры группы: большинство из них взаимодействует с уже достигнутым прогрессом.
| Настройка | Значения | Что меняет |
|---|---|---|
Balance Template | balanced, minimal, legendary | Общая сила зачарований; смена перезаписывает другие значения в файле |
Item Drop Limits | Unlimited, BossKillUnlocksCurrentBiomeItems, BossKillUnlocksNextBiomeItems и два режима на основе игрока | Какое снаряжение может выпасть до какого босса |
Item Drop Ratio, Materials Drop Ratio, Shard Stone Drop Ratio, Items Unidentified Drop Ratio | Относительные веса | Во что превращается бросок лута |
Boss Trophy Drop Mode, Crypt Key Drop Mode, Wishbone Drop Mode | Включая OnePerPlayerNearBoss | Дополнительная добыча с боссов для каждого присутствующего игрока |
Gated Bounty Mode | Без ограничений или с привязкой к убийствам боссов | Какие заказы на охоту предлагаются |
Adventure Mode Enabled | true / false | Карты сокровищ, заказы и азартные игры у Haldor |
Шаблон баланса. Мод описывает balanced как рекомендуемый: зачарования мощные, но сильные враги остаются угрозой; minimal - как сниженную силу зачарований для ванильной сложности; а legendary - как устаревший баланс, который "может сделать игроков богоподобными" ("can make players godlike"). Для группы, играющей на ванильных модификаторах мира, minimal сохраняет узнаваемость игры. Если вы повысили сложность боёв модификатором combat, balanced - то сочетание, на которое рассчитывает мод; эту сторону разбирает статья модификаторы мира и пресеты.
Лимиты добычи. Unlimited выдаёт ровно то, что написано в таблицах лута, а значит, удачный ранний бросок может подарить кому-нибудь снаряжение с Равнин в Чёрном лесу. BossKillUnlocksCurrentBiomeItems разрешает снаряжение биома после смерти его босса; BossKillUnlocksNextBiomeItems строже и требует убийства предыдущего босса. Оба режима читают ключи боссов мира, поэтому на сервере они следуют общему прогрессу: один игрок, убивший Elder, открывает добычу для всех, как объясняет статья прогресс по боссам на общих серверах. Два режима на основе игрока (PlayerMustKnowRecipe и PlayerMustHaveCraftedItem) сам мод описывает как "только для локального мира"; на выделенном сервере используйте один из режимов по убийствам боссов.
Добыча с боссов. Обычно с босса выпадает один трофей на всю группу, и Epic Loot ничего в этом не меняет, пока вы не зададите режимы добычи. OnePerPlayerNearBoss даёт по одному трофею, ключу от склепа или косточке-вишбону каждому игроку в настраиваемом радиусе, что заканчивает спор "кому достанется трофей Bonemass" на сервере из пяти игроков. Обратите внимание на слово "рядом": игрок, дожидающийся у портала, ничего не получит.
Заказы на охоту. Заказы отслеживаются для каждого игрока, а последние версии ограничивают, сколько их может быть у одного игрока (Max Bounties Per Player, с переключателем, включающим лимит). Цели заказов появляются в мире для игрока, который их взял: на загруженном сервере на них могут наткнуться другие игроки, и, возможно, стоит договориться, что заказ принадлежит тому, кто его принял.
Производительность и ресурсы сервера#
Epic Loot добавляет работу в трёх местах: загрузка данных при старте, бросок лута при гибели существ и отправка данных каждому игроку при подключении. Ничто из этого не тяжело. На практике сервер с Epic Loot и несколькими другими модами спокойно работает при 4-6 ГБ, что соответствует строке про моды в общей таблице размеров, а запуск занимает заметно дольше, чем без модов, пока Jotunn всё регистрирует.
Затраты создаёт то, что игроки делают с модом. Зачарованное снаряжение с бонусами к движению и урону означает более быстрое исследование, более раннюю загрузку зон и более ранние большие базы - все обычные причины тяжёлого мира Valheim, только раньше срока. Если зрелый мир с Epic Loot подтормаживает, обычные подозреваемые из статьи производительность сервера Valheim и лаги стоят в очереди раньше, чем мод.
Помните и о данных заказов и карт сокровищ. В последних журналах изменений есть исправления потерянных или сброшенных при перезапуске сервера заказов и система восстановления после миграции сохранения, а это значит, что эти данные хранятся вместе с миром и персонажами. Корректный перезапуск, при котором мир сохраняется, здесь важнее обычного.
Обновления и резервные копии#
Epic Loot обновляется часто, а патчи Valheim ломают его так же, как любой мод BepInEx. Порядок действий, который работает для группы:
- Когда выходит патч Valheim, остановите сервер и не обновляйте его, пока у Epic Loot и Jotunn не появятся релизы под новую версию.
- Сделайте резервную копию мира и
BepInEx/config/EpicLoot. - Обновите общий профиль r2modman, проверьте журнал изменений на предмет изменений конфигурации, экспортируйте новый код.
- Скопируйте те же версии плагинов на сервер, запустите его и прочитайте лог на предмет сообщений об обновлении конфигурации.
- Опубликуйте новый код профиля и пусть все импортируют его перед входом.
В RE:NODE резервная копия создаётся одной кнопкой в панели, и её можно заблокировать, чтобы плановая копия не вытеснила её по ротации, - это правильный способ хранить последний заведомо рабочий мир перед обновлением мода (резервные копии в руководстве по панели). Персонажи остаются на ПК каждого игрока, поэтому их магические предметы защищены ровно настолько, насколько защищена их собственная папка characters, - напомните группе скопировать её перед большим обновлением. Как откатиться, если обновление всё равно прошло плохо, описано в статье что делать, когда обновление мода всё ломает.
Устранение неполадок#
Игроков кикает при подключении с сообщением о версии. Не совпадают Epic Loot или Jotunn. Сопоставьте наборы; не пытайтесь отключить проверку.
У магических предметов нет свойств во всплывающих подсказках. Известный конфликт с BetterUI. Задайте showCustomTooltips = false в конфиге BetterUI, как советует страница Epic Loot.
Мои правки JSON-файла ничего не дают. Либо вы правили клиентскую копию, находясь на сервере, который её игнорирует, либо правили серверную копию без перезапуска. Редактируйте файл на сервере при остановленном сервере, затем запускайте его.
Новые шардстоуны или эффекты не выпадают после обновления. Ваш изменённый loottables.json старше их. Добавьте новые записи из baseconfig или перенесите свои изменения в патчи и дайте поставляемому файлу обновляться.
У эффекта предмета пустое значение. В magiceffects.json на сервере нет значений для этой редкости - обычно это старый файл без уровня Ancient. Обновите файл на сервере.
После патча Valheim никто не может зайти. Игра и сервер обновились, а моды - нет. Дождитесь их релизов или откатите сервер резервной копией, сделанной до патча.
FAQ#
Нужно ли игрокам устанавливать Epic Loot, чтобы зайти?
Да. У каждого игрока должна быть та же версия Epic Loot, Jotunn и JsonDotNET, что и на сервере. Проверка версий Jotunn отключает всех, у кого они не совпадают.
Можно ли добавить Epic Loot в существующий мир?
Да. Уже имеющееся снаряжение остаётся обычным; новая добыча начнёт появляться с ближайшего убитого существа. Сначала задайте лимиты добычи, чтобы в мире на позднем этапе вдруг не выпадал только лут ранних биомов или наоборот.
Можно ли потом убрать Epic Loot?
Можно, но магические предметы потеряют зачарования, а постройки мода исчезнут из мира. Сначала сделайте резервную копию мира и персонажей и примите, что это не чистая отмена.
Кто управляет балансом - сервер или игроки?
Сервер. Его файлы данных отправляются каждому игроку при подключении, а локальная копия игрока игнорируется, пока он на сервере. Измените баланс на сервере, и все получат его при следующем входе.
Работает ли он с игроками Xbox на сервере с кроссплеем?
Нет. Консольные игроки не могут устанавливать моды, а Epic Loot нужен на каждом клиенте, поэтому зайти они не смогут.
Могут ли админы спавнить магические предметы для тестов?
У Epic Loot есть собственные отладочные команды для этого, и, как ванильные читы, они требуют devcommands. На выделенном сервере это значит Server Devcommands на ПК админа; актуальные названия команд смотрите на вики мода.


