Dota 2 Mod ManagerСкачатьКаталог

Мод предмета из файлов игры

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

Проверено

Что понадобится

Dota 2, Node.js 24 и git. Скрипты лежат в нашем репозитории: склонируй его, и modkit check скажет, каких необязательных программ не хватает для твоей задумки. Перекраске и предметам из файлов игры больше ничего не нужно.

git clone https://github.com/dota2modmanager/dota2-mod-manager
cd dota2-mod-manager
npm ci
npm run modkit -- check

Ни одна команда не пишет в папки, которые монтирует игра. Они собирают VPK в рабочей папке, а ставишь ты его перетаскиванием в «Мои моды»: там он выключается в один клик, как любой другой мод.

Перекрасить эффекты героя

modkit recolor берёт героя и цвет, находит все его эффекты в pak01 игры и переписывает их цвета. pack собирает папку в VPK, а доктор сверяет результат с игрой ещё до запуска.

$ npm run modkit -- recolor terrorblade 40,120,255 --out work/mod
terrorblade: 97 of 155 particle(s) recoloured (166 colours) into work/mod
$ npm run modkit -- pack work/mod --out tb_blue.vpk
97 file(s) from work/mod into tb_blue.vpk (0.4 MB); 0 left out as the game's own
$ npm run doctor -- tb_blue.vpk
nothing found

Цвет, нарисованный в текстурах (кольца на земле, цветовые искажения), остаётся прежним. Скрипт об этом предупредит, а справка навыка по перекраске объясняет, как поправить такие места руками.

Вернуть предмет, которого у тебя нет

Начни с плана. item-plan читает визуал предмета из таблицы предметов и печатает по строке на каждое изменение, с тем, как мод может его дать. Вот аркана Terrorblade, по одной строке каждого вида:

$ npm run item-plan -- 5957
5957 Fractal Horns of Inner Abysm: slot hero_base, for npc_dota_hero_terrorblade
  built    the hero's own model
  built    activity modifier "abysm"
  built    a picture (ability_icon)
  by hand  a sound
  by hand  a particle the item creates
  by hand  a model swap
  cannot   custom_kill_effect
  cannot   chatwheel x9

built

Сборщик приложения уже это умеет: подменённая модель героя, картинки, модификатор активности, снятый с анимаций.

by hand

Мод это может, и строка говорит как: эффект, который создаёт предмет, вешается на эффект, который у героя есть всегда, модель кладётся под стоковый путь.

cannot

Логика игры, которая приходит с самим предметом: эффект убийства, фразы колеса, реплики. Её не несёт ни один файл.

Клади под стоковый путь, а не под платный. Матч загружает модели, которые называет таблица предметов сервера, поэтому мод с моделью арканы под её собственным путём выглядит нормально до переподключения, а потом показывает модель ERROR. Поэтому сборщик кладёт каждый файл под путь обычного героя.

Заменить иконку или портрет

modkit pictures terrorblade --out work/pics выкладывает иконки способностей, портрет и иконку миникарты героя в PNG. Поправь их в любом редакторе, и --from work/pics соберёт их обратно под теми же именами. Иконка миникарты лежит ещё и в общем спрайте, скрипт заполняет оба места.

Поменять звук

modkit sounds terrorblade перечисляет звуковые события героя. С --addon my_sounds --out work/mod ключ --layer Hero_Terrorblade.Sunder=my.wav играет твой файл поверх стокового, а --replace вместо него. Звуки проходят через компилятор Valve, поэтому тут нужны Dota 2 Workshop Tools (Steam, Dota 2, Свойства, DLC) и Windows.

Проверить до игры, потом в игре

  1. Доктор, за секундыnpm run doctor -- my_mod.vpk сверяет мод с pak01: анимации, которым всё ещё нужен модификатор предмета, номера секвенций не как в игре, дочерний эффект не на той точке. Ответ, который ты ждёшь: «nothing found».
  2. Стенд, за три минутыnpm run dota:bench -- --vpk my_mod.vpk --short запускает Доту в демо героя с модом в свободном слоте, снимает героя крупно, в атаке и на ходу, и пишет verdict.json. Windows, Steam запущен, Дота закрыта.
  3. Сравнить с рабочим модомПрогони стенд на обычном герое и на моде того же предмета из каталога. Если твой ведёт себя иначе, меняй между ними по одному блоку ресурса: блок с ошибкой находится за два-три прогона.

Ловушки, на каждую из которых ушёл день

  • Игра выбирает анимацию по клипам, а не по секвенциям. Правки одних секвенций день ничего не меняли. Теперь доктор читает и то, и другое.
  • Дочерний эффект за пределами контрольных точек родителя садится на первую из них: свечение для груди оказалось на правом глазу.
  • Пересобранная модель перенумеровывает секвенции. В онлайне сервер шлёт номера, и один потерянный клип сдвигает все анимации после него. modkit clips возвращает имена и номера Valve.
  • Один кадр в секунду прячет атаку. Движение в покое выглядело как замах, поэтому стенд снимает 16 кадров через 80 мс.

Проще рассказать ассистенту?

Те же скрипты оформлены как навык для ИИ-ассистента, и в нём есть всё, что дальше этой страницы: новые модели в Blender, анимации, реплики. Моды для Доты 2 с ИИ настраивают его одной строкой. Полные заметки, из которых сделана эта страница, лежат в docs/item-mods.md.

Ctrl K или / открывает поиск с любой страницы.