- Что такое Dota 2 Workshop Tools DLC и зачем он нужен
- Как установить Dota 2 Workshop Tools DLC
- Компоненты Dota 2 Workshop Tools DLC
- Как установить и настроить barebones
- Создание кастомной карты в Hammer
- Основы Lua-скриптинга для кастомных игр Dota 2
- Использование NPC TXT-файлов
- Частые ошибки при работе с Dota 2 Workshop Tools DLC
- Итоговый чек-лист для старта
- Частые вопросы
- Источники
Что такое Dota 2 Workshop Tools DLC и зачем он нужен
Dota 2 Workshop Tools DLC — набор инструментов для создания кастомных игр на базе Dota 2. Он добавляет редактор карт, средства работы с игровыми ресурсами и окружение для запуска собственного игрового режима.
С помощью Workshop Tools можно:
- создавать и редактировать карты;
- настраивать героев, способности, предметы и юнитов;
- писать игровую логику на Lua;
- собирать интерфейс и связывать его с кодом;
- запускать и тестировать кастомную игру локально.
В состав инструментов входят Hammer — редактор карт, D2ModKit с графическим интерфейсом для моддинга и другие компоненты. Для создания DataDriven-способностей и предметов используют отдельную программу D2AbilityCreator.
DLC предназначен разработчикам кастомных игр, авторам карт и тем, кто изучает моддинг Dota 2. Программирование с нуля не обязательно: начать можно с готового шаблона barebones, а затем менять карту, игровые правила и скрипты.
Как установить Dota 2 Workshop Tools DLC
Перед установкой проверьте технические требования: Workshop Tools требует 64-битную Windows и видеокарту с поддержкой Direct3D 11. Для загрузки и установки DLC понадобится около 5,6 ГБ свободного места.
1. Включите Steam Beta Update
- Откройте Steam.
- Перейдите в Steam → Настройки → Аккаунт.
- В разделе бета-тестирования выберите Steam Beta Update.
- Подтвердите изменение и перезапустите Steam.
Без этого пункта нужная настройка может не появиться в свойствах Dota 2. Если Workshop Tools отсутствуют в списке или не устанавливаются, сначала проверьте участие в бета-обновлении Steam.
2. Активируйте DLC в свойствах Dota 2
- Откройте библиотеку Steam и найдите Dota 2.
- Нажмите по игре правой кнопкой мыши и выберите Свойства.
- Откройте раздел Доп. контент.
- Установите флажок напротив Dota 2 Workshop Tools DLC.
- Дождитесь загрузки и установки файлов.
DLC подключается через свойства Dota 2, поэтому искать отдельную игру в библиотеке не требуется. После загрузки Steam установит инструменты в папку игры.
3. Запустите Dota 2 в режиме инструментов
Откройте Dota 2 через Steam и выберите вариант:
Launch Dota 2 - Tools
Обычный запуск открывает игровой клиент, а этот режим загружает Workshop Tools и доступные редакторы. Для работы над картой или кастомным режимом используйте именно эту опцию.
Компоненты Dota 2 Workshop Tools DLC
Workshop Tools включает шаблон проекта, редактор карт, средства настройки способностей и графические инструменты для моддинга. Их назначение различается:
- barebones задаёт основу кастомной игры;
- Hammer отвечает за карту;
- Lua и NPC TXT-файлы описывают игровую логику и объекты;
- D2AbilityCreator работает с DataDriven-способностями и предметами;
- D2ModKit объединяет графические средства для разных задач моддинга.
Barebones — базовый шаблон кастомной игры
Barebones — готовый каркас для создания кастомных игр Dota 2. Он избавляет от ручного создания минимальной структуры аддона и позволяет сразу перейти к карте, скриптам и настройке игрового режима.
Шаблон доступен на GitHub: github.com/bmddota/barebones. Содержимое переносят в корневую папку Dota 2 Tools, обычно:
steamapps\common\dota 2 beta\
После копирования в проекте появляется папка аддона:
content\dota_addons\barebones\
Внутри шаблона, среди прочего, находится каталог:
content\dota_addons\barebones\panorama\layout\custom_game
В нём расположены XML-файлы интерфейса Panorama. У barebones встречается проблема с подключением стиля hero_splash.vcss_c. Для корректного запуска из XML-файлов удаляют строку:
<include src="s2r://panorama/styles/hero_splash.vcss_c" />
Порядок установки и проверки шаблона важен: если просто скопировать архив «как есть», Workshop Tools может показать ошибки ещё до запуска карты.
D2AbilityCreator и D2ModKit
D2AbilityCreator — отдельная программа для создания DataDriven-способностей и предметов. DataDriven означает, что часть параметров задаётся в текстовых конфигурациях, а не полностью описывается Lua-кодом. Программа доступна в разделе релизов на GitHub.
D2ModKit — графический интерфейс с набором инструментов для моддинга Dota 2. Он доступен через Dota 2 Workshop Tools DLC и предназначен для работы с компонентами кастомного проекта без постоянного обращения к консоли и ручного поиска файлов.
D2AbilityCreator ориентирован на DataDriven-способности и предметы, а D2ModKit объединяет графические средства для разных задач моддинга.
Hammer — редактор карт
Hammer (Map Editor) — редактор карт, который входит в Dota 2 Workshop Tools DLC. Его запускают через Asset Browser, где находятся доступные ресурсы проекта.
Новую карту создают в Hammer через File → New. После сохранения она получает расширение .vmap и должна находиться в папке кастомной игры. Если карта лежит в общей папке Dota 2, Workshop Tools может не найти её внутри нужного аддона.
Hammer используется для создания игровой сцены: карты, на которой затем работают Lua-скрипты, герои, способности и юниты. Поэтому даже рабочий код не даст ожидаемого результата, если кастомка не содержит корректно сохранённую .vmap.
Папки content и game
В проектах Dota 2 Workshop Tools встречаются две корневые папки:
content— ресурсы аддона, с которыми работают редакторы;game— файлы, используемые игрой при запуске кастомки, включая скрипты и другие данные проекта.
Базовая структура аддона выглядит так:
content\dota_addons\имя_кастомки\
game\dota_addons\имя_кастомки\
Например, интерфейс barebones расположен в:
content\dota_addons\barebones\panorama\layout\custom_game
Lua-скрипты обычно размещают в папке аддона:
scripts/vscripts/
Не смешивайте каталоги при переносе шаблона. Если скопировать только content или только game, часть проекта окажется недоступной редактору или игровому движку.
| Сущность | Требования к системе | Размер DLC | Путь установки | Структура папок | Точки входа Lua-скриптов |
|---|---|---|---|---|---|
| Dota 2 Workshop Tools DLC | 64-битная Windows, видеокарта с Direct3D 11 | 5,6 ГБ | Через свойства Dota 2 в Steam, раздел «Доп. контент» | — | — |
| barebones | — | — | Корневая папка Dota 2 Tools, обычно steamapps\common\dota 2 beta |
content\dota_addons\barebones\panorama\layout\custom_game |
— |
| D2AbilityCreator | — | — | — | — | — |
| D2ModKit | — | — | Через Dota 2 Workshop Tools DLC | — | — |
| Hammer (Map Editor) | — | — | — | Карты сохраняются с расширением .vmap в папке кастомки |
— |
| Lua-скрипты | — | — | — | Папка аддона scripts/vscripts/ |
addon_init.lua, addon_game_mode.lua |
npc_abilities_custom.txt |
— | — | — | — | — |
npc_heroes_custom.txt |
— | — | — | — | — |
npc_items_custom.txt |
— | — | — | — | — |
npc_units_custom.txt |
— | — | — | — | — |
DLC устанавливает рабочую среду, barebones задаёт структуру аддона, а Hammer и другие редакторы используются внутри проекта. Lua и NPC TXT-файлы относятся к содержимому кастомной игры и должны находиться в структуре её аддона.
Как установить и настроить barebones
barebones помогает начать разработку кастомной игры с готовой структурой файлов. Скачайте шаблон с GitHub, распакуйте его и перенесите содержимое в корневую папку Dota 2 Tools:
steamapps\common\dota 2 beta\
Установка шаблона
- Скачайте архив
barebonesс GitHub и распакуйте его во временную папку. - Откройте распакованный каталог и выделите его содержимое.
- Перенесите файлы и папки в корень установки Dota 2 Tools.
Не допускайте лишнего уровня вложенности:
dota 2 beta\barebones\content\
Нужная структура начинается непосредственно в папке игры:
dota 2 beta\content\dota_addons\barebones\
dota 2 beta\game\dota_addons\barebones\
Исправление XML-файлов
Откройте каталог:
content\dota_addons\barebones\panorama\layout\custom_game\
В XML-файлах найдите строку:
<include src="s2r://panorama/styles/hero_splash.vcss_c" />
Удалите её из каждого файла, где она встречается, и сохраните изменения. Оставленная строка может привести к ошибкам при загрузке интерфейса barebones.
Проверка в Workshop Tools
Запустите Dota 2 через режим инструментов и проверьте, появился ли аддон barebones среди доступных проектов. Затем откройте его и убедитесь, что Workshop Tools видит содержимое папок:
content\dota_addons\barebones
game\dota_addons\barebones
Если шаблон не отображается, закройте Workshop Tools и проверьте путь копирования. Частая причина — файлы помещены во вложенную папку barebones, а не в корень Dota 2 Tools.
Частые ошибки при установке barebones
- Аддон не появляется в списке. Проверьте, что папки
contentиgameнаходятся в корнеdota 2 beta, а внутри них есть каталогdota_addons\barebones. - Интерфейс загружается с ошибкой. Откройте XML-файлы в
panorama\layout\custom_gameи удалите строку сhero_splash.vcss_cво всех файлах, где она осталась. - После исправлений ничего не изменилось. Полностью перезапустите Workshop Tools, чтобы редактор заново прочитал файлы аддона.
- Работает только часть проекта. Проверьте, что перенесены обе части шаблона —
contentиgame.
После проверки barebones можно переименовать аддон и добавить в его структуру карту, Lua-скрипты, интерфейс и файлы описания героев, способностей, предметов и юнитов.
Создание кастомной карты в Hammer
Карту создают в Hammer, который запускается из Asset Browser в Dota 2 Workshop Tools. Для первой проверки достаточно сделать пустую карту, сохранить её в папке своего аддона и открыть без ошибок.
Запуск Hammer и создание файла карты
- Запустите Dota 2 в режиме инструментов.
- Откройте Asset Browser.
- Найдите и запустите Hammer (Map Editor).
- В верхнем меню выберите File → New.
- Сохраните карту с расширением
.vmapв папке своей кастомной игры.
Файл .vmap — исходная карта для Hammer. Храните его внутри каталога аддона, чтобы Workshop Tools и игра могли найти карту среди ресурсов проекта. Если сохранить файл в другой папке, редактор может открыть его локально, но кастомка не увидит его при запуске.
Создание ландшафта в Tile Editor
Для формирования поверхности карты используйте Tile Editor. Он собирает базовый ландшафт из тайлов — отдельных участков игровой поверхности.
Начните с небольшого участка и проверьте его в игре до добавления деталей. Так проще убедиться, что карта сохраняется и загружается. После этого можно расширять ландшафт и добавлять остальные элементы.
Навигация и управление камерой
В Hammer осматривайте сцену с разных высот и направлений, приближайте отдельные участки и возвращайтесь к общему виду карты. Это помогает заметить перепады ландшафта и пустые зоны.
Если камера «потерялась», используйте обзор сцены через окно редактора и постепенно приблизьтесь к созданному участку. Перед редактированием убедитесь, что выбран нужный тайл или объект.
Первая проверка карты
После сохранения .vmap проверьте:
- карта находится внутри папки нужного аддона;
- у файла осталось расширение
.vmap; - Workshop Tools перезапущен после создания или перемещения карты.
На старте достаточно пустого ландшафта и одной проверки запуска. Когда карта открывается без ошибок, переходите к игровой логике, Lua-скриптам и настройке объектов кастомной игры.
Основы Lua-скриптинга для кастомных игр Dota 2
Lua-скрипты хранятся в папке аддона scripts/vscripts/. Если кастомная игра называется my_game, базовый путь выглядит так:
my_game/scripts/vscripts/
Здесь размещают инициализацию режима, обработчики событий, циклические проверки и отдельные модули. Если сохранить Lua-файл рядом с scripts или в каталоге другого аддона, движок не найдёт его автоматически.
Как подключаются Lua-файлы
У проекта есть две основные точки входа:
addon_init.lua— подключает необходимые Lua-модули;addon_game_mode.lua— создаёт и инициализирует объект игрового режима.
Обычно addon_init.lua содержит вызовы require. В них указывают имя файла без расширения .lua:
require("addon_main")
require("util")
Этот код подключает addon_main.lua и util.lua из той же папки scripts/vscripts/. Если модуль не подключён через require, его функции и объекты недоступны в месте, где они нужны.
Файл addon_game_mode.lua передаёт управление объекту игрового режима:
local gameMode = CustomGameMode:new()
gameMode:InitGameMode()
Здесь CustomGameMode — объект, описанный в подключённом модуле. Метод InitGameMode() выполняет первоначальную настройку режима и игровой логики.
Что обычно находится в addon_main.lua
В addon_main.lua описывают объект игрового режима. В нём находятся методы, запускаемые при старте кастомки или во время матча:
- конструктор объекта;
InitGameMode()для начальной настройки;Think()для регулярно выполняемой логики;- обработчики игровых событий.
Основную логику удобно держать в этом файле, а крупные системы выносить в дополнительные модули. Тогда addon_game_mode.lua остаётся точкой запуска, а addon_main.lua — местом, где собран объект режима.
Пример структуры:
scripts/vscripts/
├── addon_init.lua
├── addon_game_mode.lua
├── addon_main.lua
└── util.lua
Имена дополнительных файлов могут отличаться, но файлы запуска и папка scripts/vscripts/ должны соответствовать структуре аддона.
Метод Think() и циклическая логика
Think() используют для действий, которые должны выполняться регулярно. В нём можно проверять состояние игрового режима, отслеживать условия события или запускать логику через заданные интервалы.
Типовой порядок:
- получить базовый объект игрового режима;
- назначить ему функцию
Think; - выполнить проверки внутри
Think(); - вернуть интервал до следующего вызова.
Упрощённая схема:
function CustomGameMode:InitGameMode()
local gameMode = GameRules:GetGameModeEntity()
gameMode:SetThink("Think", self)
end
function CustomGameMode:Think()
-- Циклическая игровая логика
return 1
end
SetThink связывает игровой режим с методом Think. Возвращаемое значение задаёт интервал до следующего вызова. Тяжёлая или бесконечная обработка внутри Think() усложняет диагностику и может приводить к слишком частым проверкам.
Однократные действия лучше выполнять при инициализации, а реакцию на конкретные игровые действия — через обработчики событий. Think() нужен для регулярной проверки состояния.
Обработка игровых событий
Для реакции на игровые события используют ListenToGameEvent. Функция регистрирует событие и связывает его с обработчиком:
ListenToGameEvent(
"game_rules_state_change",
Dynamic_Wrap(CustomGameMode, "OnGameRulesStateChange"),
self
)
Название события указывают первым параметром. Вторым передают функцию-обработчик, третьим — объект, в контексте которого она вызывается.
Сам обработчик принимает параметр keys:
function CustomGameMode:OnGameRulesStateChange(keys)
-- Обработка данных события
end
keys содержит параметры конкретного события. Их набор зависит от произошедшего действия, поэтому при отладке проверьте, какие данные реально передаются обработчику.
Регистрацию событий обычно выполняют в InitGameMode():
function CustomGameMode:InitGameMode()
ListenToGameEvent(
"game_rules_state_change",
Dynamic_Wrap(CustomGameMode, "OnGameRulesStateChange"),
self
)
end
Если зарегистрировать обработчик в Think(), одна и та же реакция может добавляться снова при каждом цикле. Тогда одно событие начнёт обрабатываться несколько раз.
Чем события отличаются от Think()
Think() проверяет состояние через заданный интервал. Обработчик события ждёт конкретного действия движка и запускается после него.
Например:
- состояние режима можно проверять через
Think(); - смену состояния игры обрабатывать через
ListenToGameEvent; - реакцию на действие интерфейса передавать через зарегистрированную команду.
Регулярные проверки и одноразовые реакции при таком разделении остаются в разных частях кода.
Связь интерфейса и Lua через Convars:RegisterCommand
Для связи UI и Lua используют регистрацию консольных команд через Convars:RegisterCommand. Интерфейс вызывает команду, а Lua получает управление в зарегистрированной функции.
Пример:
Convars:RegisterCommand(
"my_game_action",
function(command, playerID, ...)
-- Обработка команды
end,
"Команда кастомной игры",
0
)
Имя команды должно совпадать с именем, которое вызывает интерфейс. Если UI отправляет my_game_action, а Lua зарегистрировал my_game_event, обработчик не сработает.
Команду обычно регистрируют во время инициализации:
function CustomGameMode:InitGameMode()
Convars:RegisterCommand(
"my_game_action",
function(command, playerID, ...)
self:OnUIAction(playerID, ...)
end,
"Команда от интерфейса",
0
)
end
Обработку можно вынести в отдельный метод:
function CustomGameMode:OnUIAction(playerID, ...)
-- Логика после команды из интерфейса
end
Так зарегистрированная команда принимает вызов, а отдельный метод выполняет игровое действие. Дополнительные параметры команды нужно обработать и проверить внутри её функции.
Практическая схема запуска скрипта
Для первой проверки соберите минимальную цепочку:
- разместите Lua-файлы в
scripts/vscripts/; - подключите
addon_main.luaчерезaddon_init.lua; - создайте объект режима в
addon_game_mode.lua; - вызовите
InitGameMode(); - добавьте простой обработчик события или
Think(); - запустите кастомную игру через Workshop Tools.
Если аддон запускается, но логика не работает, проверяйте цепочку сверху вниз: путь к файлу, имя в require, название метода и место его вызова.
Минимальная структура взаимодействия:
addon_init.lua
└── require("addon_main")
addon_game_mode.lua
└── CustomGameMode:new()
└── InitGameMode()
addon_main.lua
└── InitGameMode()
├── SetThink(...)
├── ListenToGameEvent(...)
└── Convars:RegisterCommand(...)
Для игровой конфигурации Lua-файлов часто нужны NPC TXT-файлы. Они отдельно описывают героев, способности, предметы и юнитов:
- Lua отвечает за поведение и события;
- NPC TXT-файлы задают описание игровых сущностей.
Использование NPC TXT-файлов
NPC TXT-файлы задают описания объектов кастомки: доступных героев, способностей, предметов и юнитов, а также их параметры.
Какие файлы используются
npc_abilities_custom.txt— описание кастомных способностей и их параметров;npc_heroes_custom.txt— настройка героев, доступных в кастомной игре;npc_items_custom.txt— описание предметов и их характеристик;npc_units_custom.txt— настройка дополнительных юнитов: существ, призванных объектов или противников.
Названия файлов лучше не менять: движок ожидает именно их. Ошибка в названии или расположении может привести к тому, что аддон запустится, но новые способности, предметы или юниты не появятся.
Когда нужны NPC TXT-файлы
Эти файлы нужны, если кастомка использует собственных героев, способности, предметы или юнитов. Через них можно описать новый набор способностей режима, добавить уникальный предмет или настроить противников, которых затем создаёт Lua-скрипт.
Если игровой режим использует стандартный набор Dota 2 без изменений, редактировать все четыре файла не требуется. Не копируйте в проект системные описания без необходимости: добавляйте только сущности, которые нужны кастомной игре.
Как редактировать и подключать файлы
Создайте или измените нужный TXT-файл в структуре своего аддона, сохранив исходное имя и формат. Записи должны соответствовать синтаксису конфигурации Dota 2: лишняя скобка, пропущенный разделитель или неверное имя параметра могут нарушить загрузку описаний.
Добавляйте изменения небольшими блоками. После каждого изменения запускайте кастомную игру через Workshop Tools и проверяйте результат: появился ли предмет, доступен ли герой, создаётся ли юнит и загружается ли способность.
NPC TXT-файл не запускает игровую логику. Если способность должна реагировать на событие, создавать юнита или менять правила режима, её описание задаётся в npc_abilities_custom.txt, а поведение реализуется в Lua из папки scripts/vscripts/.
При проблеме проверьте:
- файл называется точно так, как ожидает движок;
- он находится внутри нужного аддона;
- структура TXT не повреждена;
- Lua обращается к тому же имени героя, способности, предмета или юнита, которое указано в конфигурации.
Если объект не загружается, ищите проблему в NPC TXT. Если он появляется, но ведёт себя неправильно, проверяйте Lua-логику.
Частые ошибки при работе с Dota 2 Workshop Tools DLC
DLC не устанавливается или инструменты не запускаются
Если в свойствах Dota 2 нет пункта Dota 2 Workshop Tools DLC, проверьте, включён ли в Steam режим Steam Beta Update. После изменения этой настройки перезапустите Steam.
Инструменты требуют 64-битную Windows и видеокарту с поддержкой Direct3D 11. Установка занимает около 5,6 ГБ.
Если Dota 2 запускается как обычная игра, выберите вариант Launch Dota 2 - Tools. Стандартный клиент не открывает Workshop Tools.
Barebones загружается с ошибками
Проверьте, что содержимое barebones перенесено в корневую папку Dota 2 Tools, обычно steamapps\common\dota 2 beta, а не во вложенную папку вроде barebones\barebones.
Если появляются ошибки Panorama, проверьте XML-файлы в:
content\dota_addons\barebones\panorama\layout\custom_game
Удалите из них строку:
<include src="s2r://panorama/styles/hero_splash.vcss_c" />
После изменения перезапустите Workshop Tools.
Lua-файл найден, но логика не работает
Проверьте цепочку подключения:
- Lua-файл находится в
scripts/vscripts/; - его имя правильно указано в
require; addon_game_mode.luaсоздаёт объект игрового режима;- вызывается
InitGameMode(); - имя метода совпадает с объявленным в
addon_main.lua.
Если не срабатывает игровое событие, проверьте название события и функцию-обработчик с параметром keys. Если не работает команда из интерфейса, сравните имя команды в Convars:RegisterCommand с именем, которое вызывает UI.
Объект не появляется в кастомке
Когда герой, способность, предмет или юнит не загружается, проверьте соответствующий NPC TXT-файл:
- имя файла;
- расположение внутри аддона;
- скобки и разделители;
- совпадение идентификатора с тем, который используется в Lua.
Если объект появляется, но ведёт себя неправильно, конфигурация загрузилась. В этом случае проверяйте Lua-логику: обработчик события, вызов способности или код создания юнита.
Hammer не видит карту
Карту создают в Hammer через File → New и сохраняют с расширением .vmap в папке кастомки. Если файл находится в другом месте или имеет иное расширение, Workshop Tools может не показать его в нужном проекте.
Запускайте Hammer через Asset Browser и проверяйте карту после каждого заметного изменения. Сначала убедитесь, что открывается сам .vmap, затем добавляйте ландшафт и игровую логику.
Итоговый чек-лист для старта
Перед первой разработкой проверьте:
- включён Steam Beta Update;
- в свойствах Dota 2 установлен Dota 2 Workshop Tools DLC;
- на компьютере есть 64-битная Windows и видеокарта с поддержкой Direct3D 11;
- для установки доступно около 5,6 ГБ;
- Dota 2 запускается через Launch Dota 2 - Tools.
Базовые пути проекта должны соответствовать структуре аддона:
- файлы barebones перенесены в корень Dota 2 Tools;
- карта
.vmapсохранена внутри папки кастомки; - Lua размещён в
scripts/vscripts/; addon_init.luaподключает нужный модуль;addon_game_mode.luaсоздаёт игровой режим и вызываетInitGameMode();- NPC TXT-файлы имеют исходные имена и корректный синтаксис.
Для первой проверки создайте простую карту, запустите её через Workshop Tools и убедитесь, что вызывается хотя бы один обработчик события или метод Think(). После этого добавляйте способности, предметы, юнитов и UI по одному компоненту.
В качестве основы используйте шаблон barebones, для DataDriven-способностей — D2AbilityCreator, а справочные материалы по Lua и инструментам сверяйте с документацией Dota 2 Workshop Tools.
Частые вопросы
Как установить Dota 2 Workshop Tools DLC?
Включите Steam Beta Update в настройках Steam, затем в свойствах Dota 2 активируйте DLC в разделе «Доп. контент» и дождитесь установки.
Как правильно установить barebones для создания кастомных игр в Dota 2?
Скачайте barebones с GitHub, распакуйте и перенесите содержимое в корневую папку Dota 2 Tools, убедившись, что папки content и game находятся в правильной структуре.
Где находятся файлы barebones после установки?
Файлы располагаются в папках content\dota_addons\barebones и game\dota_addons\barebones внутри корня установки Dota 2 Tools.
Как удалить строчку "
Откройте XML-файлы в content\dota_addons\barebones\panorama\layout\custom_game и удалите указанную строку из каждого файла, где она встречается.
Как открыть редактор карт Hammer в Dota 2 Workshop Tools DLC?
Запустите Dota 2 в режиме инструментов, откройте Asset Browser и выберите Hammer (Map Editor) для создания и редактирования карт.