Технические заметки, ИИ и обслуживание [RU]

Updated a week ago

Техническая памятка для обслуживания Valheim Enhanced Difficulty.
Здесь зафиксировано, как создавалась/проверялась пользовательская конфигурация, какие файлы считаются авторитетными и какие текущие значения нужно осознанно перепроверять в будущих релизах.

Использование ИИ

Часть пользовательской конфигурации и балансной работы создавалась или корректировалась с помощью инструментов искусственного интеллекта.

ИИ использовался для:

  • разбора и анализа больших cfg/json/yml;
  • генерации повторяющихся блоков конфигурации;
  • сравнения оригинальных и изменённых файлов;
  • расчёта вероятностей и остаточных значений;
  • подготовки биомных записей Drop That;
  • поиска дубликатов и конфликтующих/пересекающихся настроек;
  • проверки структуры пакета;
  • проверки соответствия упакованных конфигов финальному экспортированному профилю.

Финальный выбор модов, решения по балансу и публикации принимались автором модпака.

ИИ не использовался для изменения исходного кода входящих сторонних модов. Эти моды остаются работой их авторов/команд.


Source-of-truth файлы

Система Авторитетный файл в сборке
CLLC config/org.bepinex.plugins.creaturelevelcontrol.cfg
Основные настройки EpicLoot config/randyknapp.mods.epicloot.cfg
Пользовательские таблицы существ/редкостей EpicLoot config/EpicLoot/baseconfig/loottables.json
Основное поведение Drop That config/drop_that.cfg
Дополнительный Drop That config/DropThat_Custom/Biomes/drop_that.character_drop.*.cfg
DropMoreLoot config/TastyChickenLegs.DropMoreLoot.cfg
DataForge general config/sighsorry.DataForge.cfg
Баланс рецептов DataForge config/DataForge/recipes_balance.yml
Баланс построек/станций DataForge config/DataForge/pieces_balance.yml

Файлы/папки с названиями вроде ОРИГИНАЛЫ, — EDITED, — ЧИСТЫЙ, copy/backup и .bak-fran-managed-* не являются опубликованным source of truth. Они были намеренно исключены из финального пакета.


Проверка опубликованной игровой сборки

Опубликованная игровая конфигурация собиралась из:

MyPack_1790448282453.r2z

Во время проверки пакета было зафиксировано:

  • 58 включённых модов из export.r2x;
  • 58 manifest dependencies;
  • 153 включённых конфигурационных файла;
  • 30 backup/user-state файлов исключено;
  • 22 включённых JSON успешно распарсены;
  • обязательные корневые файлы пакета проверены;
  • пользовательский EpicLoot MagicEffectsCount сохранён;
  • выборочно проверены таблицы EpicLoot 0★–5★;
  • каждый включённый config побайтово совпадал с исходным .r2z;
  • итоговый ZIP прошёл CRC-проверку.

Версия 1.0.1 меняла только документацию. Игровые зависимости/конфиги остались такими же, как в проверенной игровой сборке 1.0.0.


Текущее поведение, которое нужно осознанно перепроверить перед ребалансом

1. Чёрный лес Drop That использует DropOnePerPlayer=true

Есть 22 активные дополнительные записи Чёрного леса, и во всех 22 этот флаг включён.

По документации Drop That этот режим выдаёт один prefab на игрока и игнорирует AmountMin / AmountMax. Поэтому записанные диапазоны вроде Coins 150–550 сейчас не используются как диапазоны количества для этих записей.

Wiki фиксирует текущий профиль и ничего не исправляет автоматически. Если задумка — использовать именно диапазоны, флаг нужно изменить и протестировать в будущей версии модпака.

2. У Draugr на Болотах сейчас большой Iron Scrap

В активной дополнительной таблице Draugr находится:

  • prefab: IronScrap
  • количество: 20–50
  • шанс: 15%
  • DropOnePerPlayer=false

Это точное значение финального профиля. Его стоит осознанно перепроверить перед следующим проходом баланса болот/железной прогрессии.

3. EpicLoot 10/20/25/35/40/45 — raw значения таблицы

Пользовательские таблицы существ содержат 0-or-1-item значения 10/20/25/35/40/45% для 0★–5★. При этом в активном основном cfg EpicLoot стоит:

Global Drop Rate Modifier = 1.8

EpicLoot описывает эту настройку как глобальный модификатор вероятности дропа. Поэтому значения звёзд следует называть raw/base значениями пользовательской таблицы, а не гарантированными итоговыми вероятностями.

Кроме того, Item Drop Ratio, Shard Stone Drop Ratio, Items Unidentified Drop Ratio и Materials Drop Ratio EpicLoot описывает как относительные веса, а не четыре независимых процента.

4. Исключения Skeleton в EpicLoot

Skeleton всё ещё использует RefObject = Tier1Mob.

Skeleton_Poison всё ещё использует RefObject = Tier2Mob.

Поэтому эти две записи не используют явную пользовательскую таблицу 0★–5★. Skeleton_DeepNorth настроен явно.

5. Отключённые биомные файлы Drop That

Текущее состояние:

  • Ocean: 0 активных / 1 секция
  • Ashlands: 0 активных / 10 секций
  • Deep North: 0 активных / 24 секции

В текущем релизе это заготовки, а не работающие пользовательские системы дополнительного дропа.


Точные контрольные значения баланса

Полезные значения для сравнения после будущего пересоздания конфигов:

Система Контрольное значение
CLLC Базовый HP 144%, HP/звезду 110%, базовый урон 115%, урон/звезду 55%
CLLC Multiplayer HP/игрок 60%, урон/игрок 8%, радиус 200 м
CLLC Доп. дроп/звезду 25%, boss loot/star 35%, boss drop multiplier 2×
EpicLoot Global Drop Rate Modifier = 1.8
EpicLoot Пользовательские raw 0★–5★ значения одного предмета: 10 / 20 / 25 / 35 / 40 / 45%
EpicLoot Явно изменённых object-таблиц существ: 76
Drop That 231 пользовательская секция; 186 активно, 45 отключено
Drop That Во всех пользовательских секциях ScaleByLevel=false
DropMoreLoot whitelist включён, 149 уникальных prefab ID
DataForge 524 override-рецепта; 70 piece overrides

История версий

1.0.0

  • Первый публичный игровой релиз.
  • 58 зафиксированных зависимостей.
  • Пользовательская конфигурация сложности CLLC.
  • Пользовательские таблицы существ/количества эффектов EpicLoot.
  • Дополнительные биомные таблицы Drop That.
  • Whitelist/множители DropMoreLoot.
  • DataForge-ребаланс рецептов/построек.
  • Набор контентных и QoL-зависимостей.

1.0.1

  • Игровая конфигурация не менялась.
  • Расширен README.
  • Добавлена документация English + Русский.
  • Улучшено описание CLLC/EpicLoot/Drop That и использования ИИ.

Чеклист обслуживания перед каждым игровым релизом

Перед публикацией:

  • экспортировать свежий .r2z;
  • сравнить точные версии зависимостей с прошлым релизом;
  • сделать diff авторитетных CLLC/EpicLoot/Drop That/DropMoreLoot/DataForge файлов;
  • распарсить/валидировать все JSON/YAML, которые попадут в пакет;
  • найти backup и пользовательские save/state файлы;
  • проверить дубликаты section ID в Drop That;
  • отдельно проверить DropOnePerPlayer и ScaleByLevel;
  • учитывать EpicLoot Global Drop Rate Modifier при описании процентов;
  • протестировать чистый профиль;
  • после серьёзных игровых изменений проверить multiplayer/server sync;
  • обновить README, CHANGELOG и затронутые Wiki-страницы;
  • повысить версию пакета;
  • при обычном обновлении не менять Thunderstore Team/name.

Правило документации

Если документация расходится с конфигурацией, авторитетным источником является реально поставляемый конфиг. Перед изменением цифр в Wiki нужно проверять текущий экспортированный профиль, а не переносить значения из памяти или старого README.