Глава 4.7: Руководство по Workbench
Главная | << Предыдущая: Упаковка PBO | Руководство по Workbench | Следующая: Моделирование зданий >>
Введение
Workbench --- это интегрированная среда разработки Bohemia Interactive для движка Enfusion. Она поставляется с DayZ Tools и является единственным официальным инструментом, понимающим Enforce Script на уровне языка. Хотя многие моддеры пишут код в VS Code или других редакторах, Workbench остаётся незаменимым для задач, которые не может выполнить ни один другой инструмент: подключение отладчика к запущенному экземпляру DayZ, установка точек останова, пошаговое выполнение кода, инспекция переменных во время выполнения, предварительный просмотр .layout файлов UI, навигация по игровым ресурсам и выполнение скриптовых команд в реальном времени через встроенную консоль.
Содержание
- Что такое Workbench?
- Установка и настройка
- Файлы проекта (.gproj)
- Интерфейс Workbench
- Редактирование скриптов
- Отладка скриптов
- Консоль скриптов --- тестирование в реальном времени
- Предварительный просмотр UI / макетов
- Обозреватель ресурсов
- Профилирование производительности
- Интеграция с патчингом файлов
- Распространённые проблемы Workbench
- Советы и лучшие практики
Что такое Workbench?
Workbench --- это IDE от Bohemia для разработки на движке Enfusion. Это единственный инструмент в составе DayZ Tools, который может компилировать, анализировать и отлаживать Enforce Script. Он служит шести целям:
| Назначение | Описание |
|---|---|
| Редактирование скриптов | Подсветка синтаксиса, автодополнение и проверка ошибок для .c файлов |
| Отладка скриптов | Точки останова, инспекция переменных, стек вызовов, пошаговое выполнение |
| Просмотр ресурсов | Навигация и предварительный просмотр игровых ассетов -- модели, текстуры, конфиги, макеты |
| Предварительный просмотр UI / макетов | Визуальный предварительный просмотр иерархий виджетов .layout с инспекцией свойств |
| Профилирование производительности | Профилирование скриптов, анализ времени кадра, мониторинг памяти |
| Консоль скриптов | Выполнение команд Enforce Script в реальном времени для запущенного экземпляра игры |
Workbench использует тот же компилятор скриптов Enfusion, что и сам DayZ. Когда Workbench сообщает об ошибке компиляции, эта ошибка также произойдёт в игре -- что делает его надёжной предварительной проверкой перед запуском.
Чем Workbench НЕ является
- Не универсальный редактор кода. В нём нет инструментов рефакторинга, интеграции с Git, мультикурсорного редактирования и экосистемы расширений VS Code.
- Не средство запуска игры. Вы по-прежнему запускаете
DayZDiag_x64.exeотдельно; Workbench подключается к нему. - Не требуется для сборки PBO. AddonBuilder и скрипты сборки обрабатывают упаковку PBO независимо.
Установка и настройка
Шаг 1: Установите DayZ Tools
Workbench входит в состав DayZ Tools, распространяемых бесплатно через Steam. Откройте библиотеку Steam, включите фильтр Инструменты, найдите DayZ Tools и установите (~2 ГБ).
Шаг 2: Найдите Workbench
Steam\steamapps\common\DayZ Tools\Bin\Workbench\
workbenchApp.exe <-- Исполняемый файл Workbench
dayz.gproj <-- Файл проекта по умолчаниюШаг 3: Смонтируйте диск P:
Workbench требует смонтированного диска P: (рабочий диск). Без него Workbench не запускается или показывает пустой обозреватель ресурсов. Смонтируйте через DayZ Tools Launcher, SetupWorkdrive.bat вашего проекта или вручную: subst P: "D:\YourWorkDir".
Шаг 4: Извлеките ванильные скрипты
Workbench нуждается в ванильных скриптах DayZ на P: для компиляции вашего мода (поскольку ваш код расширяет ванильные классы):
P:\scripts\
1_Core\
2_GameLib\
3_Game\
4_World\
5_Mission\Извлеките их через DayZ Tools Launcher или создайте символическую ссылку на директорию извлечённых скриптов.
Шаг 4б: Связывание игровой установки с диском проекта (для горячей перезагрузки)
Чтобы позволить DayZDiag загружать скрипты напрямую с вашего диска проекта (обеспечивая живое редактирование без пересборки PBO), создайте символическую ссылку из папки установки DayZ на P:\scripts:
- Перейдите в папку установки DayZ (обычно
Steam\steamapps\common\DayZ). - Удалите существующую папку
scriptsвнутри неё. - Откройте командную строку от имени администратора и выполните:
mklink /J "C:\...\steamapps\common\DayZ\scripts" "P:\scripts"Замените первый путь на фактический путь установки DayZ. После этого папка установки DayZ будет содержать junction scripts, указывающий на P:\scripts. Любые изменения, сделанные на диске проекта, немедленно видны игре.
Шаг 5: Настройте директорию исходных данных
- Запустите
workbenchApp.exe. - Нажмите Workbench > Options в строке меню.
- Установите Source data directory на
P:\. - Нажмите OK и позвольте Workbench перезапуститься.
Файлы проекта (.gproj)
Файл .gproj --- это конфигурация проекта Workbench. Он указывает Workbench, где искать скрипты, какие наборы изображений загружать для предварительного просмотра макетов и какие стили виджетов доступны.
Расположение файла
Принято размещать его в директории Workbench/ внутри вашего мода:
P:\MyMod\
Workbench\
dayz.gproj
Scripts\
3_Game\
4_World\
5_Mission\
config.cppОбзор структуры
Файл .gproj использует проприетарный текстовый формат (не JSON, не XML):
GameProjectClass {
ID "MyMod"
TITLE "My Mod Name"
Configurations {
GameProjectConfigClass PC {
platformHardware PC
skeletonDefinitions "DZ/Anims/cfg/skeletons.anim.xml"
FileSystem {
FileSystemPathClass {
Name "Workdrive"
Directory "P:/"
}
}
imageSets {
"gui/imagesets/ccgui_enforce.imageset"
"gui/imagesets/dayz_gui.imageset"
"gui/imagesets/dayz_inventory.imageset"
// ... другие ванильные наборы изображений ...
"MyMod/gui/imagesets/my_imageset.imageset"
}
widgetStyles {
"gui/looknfeel/dayzwidgets.styles"
"gui/looknfeel/widgets.styles"
}
ScriptModules {
ScriptModulePathClass {
Name "core"
Paths {
"scripts/1_Core"
"MyMod/Scripts/1_Core"
}
EntryPoint ""
}
ScriptModulePathClass {
Name "gameLib"
Paths { "scripts/2_GameLib" }
EntryPoint ""
}
ScriptModulePathClass {
Name "game"
Paths {
"scripts/3_Game"
"MyMod/Scripts/3_Game"
}
EntryPoint "CreateGame"
}
ScriptModulePathClass {
Name "world"
Paths {
"scripts/4_World"
"MyMod/Scripts/4_World"
}
EntryPoint ""
}
ScriptModulePathClass {
Name "mission"
Paths {
"scripts/5_Mission"
"MyMod/Scripts/5_Mission"
}
EntryPoint "CreateMission"
}
ScriptModulePathClass {
Name "workbench"
Paths { "MyMod/Workbench/ToolAddons" }
EntryPoint ""
}
}
}
GameProjectConfigClass XBOX_ONE { platformHardware XBOX_ONE }
GameProjectConfigClass PS4 { platformHardware PS4 }
GameProjectConfigClass LINUX { platformHardware LINUX }
}
}Объяснение ключевых секций
FileSystem -- Корневые директории, в которых Workbench ищет файлы. Как минимум, включите P:/. Вы можете добавить дополнительные пути (например, директорию установки DayZ через Steam), если файлы находятся вне рабочего диска.
ScriptModules -- Самая важная секция. Сопоставляет каждый слой движка с директориями скриптов:
| Модуль | Слой | Точка входа | Назначение |
|---|---|---|---|
core | 1_Core | "" | Ядро движка, базовые типы |
gameLib | 2_GameLib | "" | Утилиты игровой библиотеки |
game | 3_Game | "CreateGame" | Перечисления, константы, инициализация игры |
world | 4_World | "" | Сущности, менеджеры |
mission | 5_Mission | "CreateMission" | Хуки миссий, UI-панели |
workbench | (инструменты) | "" | Плагины Workbench |
Ванильные пути идут первыми, затем пути вашего мода. Если ваш мод зависит от других модов (например, Community Framework), добавьте и их пути:
ScriptModulePathClass {
Name "game"
Paths {
"scripts/3_Game" // Ванильный
"JM/CF/Scripts/3_Game" // Community Framework
"MyMod/Scripts/3_Game" // Ваш мод
}
EntryPoint "CreateGame"
}Некоторые фреймворки переопределяют точки входа (CF использует "CF_CreateGame").
imageSets / widgetStyles -- Необходимы для предварительного просмотра макетов. Без ванильных наборов изображений файлы макетов показывают отсутствующие изображения. Всегда включайте стандартные 14 ванильных наборов изображений, перечисленных в примере выше.
Разрешение префиксов путей
Когда Workbench автоматически разрешает пути скриптов из config.cpp мода, путь FileSystem добавляется в начало. Если ваш мод находится в P:\OtherMods\MyMod и config.cpp объявляет MyMod/scripts/3_Game, FileSystem должен включать P:\OtherMods для корректного разрешения.
Создание и запуск
Создание .gproj: Скопируйте стандартный dayz.gproj из DayZ Tools\Bin\Workbench\, обновите ID/TITLE и добавьте пути скриптов вашего мода в каждый модуль.
Запуск с пользовательским проектом:
workbenchApp.exe -project="P:\MyMod\Workbench\dayz.gproj"Запуск с -mod (автонастройка из config.cpp):
workbenchApp.exe -mod=P:\MyMod
workbenchApp.exe -mod=P:\CommunityFramework;P:\MyModПодход -mod проще, но даёт меньше контроля. Для сложных мульти-мод конфигураций пользовательский .gproj надёжнее.
Интерфейс Workbench
Главная панель меню
| Меню | Ключевые элементы |
|---|---|
| File | Открыть проект, недавние проекты, сохранить |
| Edit | Вырезать, копировать, вставить, найти, заменить |
| View | Переключение панелей, сброс макета |
| Workbench | Настройки (директория исходных данных, предпочтения) |
| Debug | Запуск/остановка отладки, переключение клиент/сервер, управление точками останова |
| Plugins | Установленные плагины Workbench и дополнения инструментов |
Панели
- Обозреватель ресурсов (слева) -- Дерево файлов диска P:. Двойной клик по
.cфайлам для редактирования,.layoutфайлам для предварительного просмотра,.p3dдля просмотра моделей,.paaдля просмотра текстур. - Редактор скриптов (в центре) -- Область редактирования кода с подсветкой синтаксиса, автодополнением, подчёркиванием ошибок, номерами строк, маркерами точек останова и редактированием нескольких файлов во вкладках.
- Вывод (внизу) -- Ошибки/предупреждения компилятора, вывод
Print()от подключённой игры, отладочные сообщения. При подключении к DayZDiag это окно транслирует в реальном времени весь текст, который диагностический исполняемый файл выводит для целей отладки -- тот же вывод, что вы видели бы в журналах скриптов. Двойной клик по ошибкам для перехода к строке в исходном коде. - Свойства (справа) -- Свойства выбранного объекта. Наиболее полезны в редакторе макетов для инспекции виджетов.
- Консоль -- Выполнение команд Enforce Script в реальном времени.
- Панели отладки (при отладке) -- Locals (переменные текущей области видимости), Watch (пользовательские выражения), Call Stack (цепочка вызовов функций), Breakpoints (список с переключением включения/отключения).
Редактирование скриптов
Открытие файлов
- Обозреватель ресурсов: Двойной клик по
.cфайлу. Это автоматически открывает модуль редактора скриптов и загружает файл. - Обозреватель ресурсов редактора скриптов: Редактор скриптов имеет собственную встроенную панель обозревателя ресурсов, отдельную от основного обозревателя ресурсов Workbench. Вы можете использовать любой из них для навигации и открытия файлов скриптов.
- File > Open: Стандартный диалог открытия файла.
- Вывод ошибок: Двойной клик по ошибке компилятора для перехода к файлу и строке.
Подсветка синтаксиса
| Элемент | Подсветка |
|---|---|
Ключевые слова (class, if, while, return, modded, override) | Жирный / цвет ключевых слов |
Типы (int, float, string, bool, vector, void) | Цвет типов |
| Строки, комментарии, директивы препроцессора | Отдельные цвета |
Автодополнение кода
Введите имя класса, затем ., чтобы увидеть методы и поля, или нажмите Ctrl+Space для предложений. Автодополнение основано на контексте скомпилированных скриптов. Оно функционально, но ограничено по сравнению с VS Code -- лучше всего подходит для быстрого поиска по API.
Обратная связь компилятора
Workbench компилирует при сохранении. Типичные ошибки:
| Сообщение | Значение |
|---|---|
Undefined variable 'xyz' | Не объявлена или опечатка |
Method 'Foo' not found in class 'Bar' | Неверное имя метода или класса |
Cannot convert 'string' to 'int' | Несоответствие типов |
Type 'MyClass' not found | Файл не включён в проект |
Поиск, замена и переход к определению
Ctrl+F/Ctrl+H-- поиск/замена в текущем файле.Ctrl+Shift+F-- поиск по всем файлам проекта.- Правый клик по символу и выберите Go to Definition для перехода к объявлению, даже в ванильных скриптах.
Отладка скриптов
Отладка --- самая мощная функция Workbench -- приостановите работающий экземпляр DayZ, инспектируйте каждую переменную и пошагово проходите код строка за строкой.
Предварительные требования
- DayZDiag_x64.exe (не розничный DayZ) -- только Diag-сборка поддерживает отладку.
- Диск P: смонтирован с извлечёнными ванильными скриптами.
- Скрипты должны совпадать -- если вы редактируете после загрузки игры, номера строк не будут совпадать.
Настройка сессии отладки
- Откройте Workbench и загрузите ваш проект.
- Откройте модуль Script Editor (из строки меню или двойным кликом по любому
.cфайлу в обозревателе ресурсов -- это автоматически откроет редактор скриптов и загрузит файл). - Запустите DayZDiag отдельно:
DayZDiag_x64.exe -filePatching -mod=P:\MyMod -connect=127.0.0.1 -port=2302- Workbench автоматически обнаруживает DayZDiag и подключается. В правом нижнем углу экрана появляется краткое уведомление, подтверждающее подключение.
Совет: Если вам нужно только видеть консольный вывод (без точек останова или пошагового выполнения), вам не нужно извлекать PBO или загружать скрипты в Workbench. Редактор скриптов всё равно подключится к DayZDiag и отобразит поток вывода. Однако точки останова и навигация по коду требуют загрузки соответствующих файлов скриптов в проект.
Точки останова
Кликните на левый отступ рядом с номером строки. Появится красная точка.
| Маркер | Значение |
|---|---|
| Красная точка | Активная точка останова -- выполнение приостанавливается здесь |
| Жёлтый восклицательный знак | Недействительная -- эта строка никогда не выполняется |
| Синяя точка | Закладка -- только маркер навигации |
Переключение клавишей F9. Вы также можете кликнуть левой кнопкой мыши прямо в области отступа (где появляются красные точки) для добавления или удаления точек останова. Правый клик в области отступа добавляет синюю закладку -- закладки не влияют на выполнение, но отмечают места, к которым вы хотите вернуться. Правый клик по точке останова для установки условия (например, i == 10 или player.GetIdentity().GetName() == "TestPlayer").
Пошаговое выполнение кода
| Действие | Горячая клавиша | Описание |
|---|---|---|
| Продолжить | F5 | Выполнить до следующей точки останова |
| Шаг через | F10 | Выполнить текущую строку, перейти к следующей |
| Шаг внутрь | F11 | Войти в вызываемую функцию |
| Шаг наружу | Shift+F11 | Выполнить до возврата текущей функции |
| Остановить | Shift+F5 | Отключиться и возобновить игру |
Инспекция переменных
Панель Locals показывает все переменные в области видимости -- примитивы со значениями, объекты с именами классов (раскрываемые), массивы с длинами и чётко помеченные NULL-ссылки. Панель Watch вычисляет пользовательские выражения при каждой паузе. Call Stack показывает цепочку вызовов функций; кликайте по записям для навигации.
Отладка клиента и сервера
DayZDiag_x64.exe может работать как клиент или как сервер (с добавлением параметра запуска -server). Он принимает все те же параметры, что и розничный исполняемый файл. Workbench может подключаться к любому экземпляру.
Используйте Debug > Debug Client или Debug > Debug Server в меню редактора скриптов для выбора стороны отладки. На listen-сервере вы можете свободно переключаться. Элементы управления пошаговым выполнением, точки останова и инспекция переменных применяются к той стороне, которая выбрана в данный момент.
Ограничения
- Только
DayZDiag_x64.exeподдерживает отладку, не розничные сборки. - Внутренние C++ функции движка нельзя пошагово проходить.
- Множество точек останова в высокочастотных функциях (
OnUpdate) вызывают серьёзные задержки. - Большие проекты модов могут замедлить индексацию Workbench.
Консоль скриптов --- тестирование в реальном времени
Консоль скриптов позволяет выполнять команды Enforce Script для запущенного экземпляра игры -- неоценимый инструмент для экспериментов с API без редактирования файлов.
Открытие
Найдите вкладку Console на нижней панели или включите через View > Console.
Частые команды
// Вывод позиции игрока
Print(GetGame().GetPlayer().GetPosition().ToString());
// Спавн предмета у ног игрока
GetGame().CreateObject("AKM", GetGame().GetPlayer().GetPosition(), false, false, true);
// Тест математики
float dist = vector.Distance("0 0 0", "100 0 100");
Print("Distance: " + dist.ToString());
// Телепортация игрока
GetGame().GetPlayer().SetPosition("6737 0 2505");
// Спавн зомби поблизости
vector pos = GetGame().GetPlayer().GetPosition();
for (int i = 0; i < 5; i++)
{
vector offset = Vector(Math.RandomFloat(-5, 5), 0, Math.RandomFloat(-5, 5));
GetGame().CreateObject("ZmbF_JournalistNormal_Blue", pos + offset, false, false, true);
}Ограничения
- Только на стороне клиента по умолчанию (серверный код требует listen-сервера).
- Нет сохранения состояния -- переменные не переносятся между выполнениями.
- Некоторые API недоступны до тех пор, пока игра не достигнет определённого состояния (игрок заспавнен, миссия загружена).
- Нет восстановления после ошибок -- нулевые указатели просто тихо завершаются неудачей.
Предварительный просмотр UI / макетов
Workbench может открывать .layout файлы для визуального осмотра.
Что можно делать
- Просмотр иерархии виджетов -- видеть вложенность родитель-потомок и имена виджетов.
- Инспекция свойств -- позиция, размер, цвет, альфа, выравнивание, источник изображения, текст, шрифт.
- Поиск имён виджетов, используемых
FindAnyWidget()в коде скриптов. - Проверка ссылок на изображения -- какие записи наборов изображений или текстуры использует виджет.
Чего нельзя делать
- Нет поведения во время выполнения -- обработчики ScriptClass и динамический контент не выполняются.
- Различия в рендеринге -- прозрачность, наложение слоёв и разрешение могут отличаться от игры.
- Ограниченное редактирование -- Workbench в первую очередь средство просмотра, а не визуальный дизайнер.
Лучшая практика: Используйте редактор макетов для инспекции. Создавайте и редактируйте .layout файлы в текстовом редакторе. Тестируйте в игре с патчингом файлов.
Обозреватель ресурсов
Обозреватель ресурсов навигирует по диску P: с игровыми предварительными просмотрами файлов.
Возможности
| Тип файла | Действие по двойному клику |
|---|---|
.c | Открывается в редакторе скриптов |
.layout | Открывается в редакторе макетов |
.p3d | Предварительный просмотр 3D-модели (вращение, масштабирование, инспекция LOD) |
.paa / .edds | Просмотр текстур с инспекцией каналов (R, G, B, A) |
| Config-классы | Просмотр разобранных иерархий CfgVehicles, CfgWeapons |
Поиск ванильных ресурсов
Одно из самых ценных применений -- изучение того, как Bohemia структурирует ассеты:
P:\DZ\weapons\ <-- Ванильные модели и текстуры оружия
P:\DZ\characters\ <-- Модели персонажей и одежды
P:\scripts\4_World\ <-- Ванильные скрипты мира
P:\scripts\5_Mission\ <-- Ванильные скрипты миссийПрофилирование производительности
При подключении к DayZDiag Workbench может профилировать выполнение скриптов.
Что показывает профилировщик
- Количество вызовов функций -- как часто каждая функция выполняется за кадр.
- Время выполнения -- миллисекунды на функцию.
- Иерархия вызовов -- какие функции вызывают какие, с атрибуцией времени.
- Разбивка времени кадра -- время скриптов vs время движка. При 60 FPS каждый кадр имеет бюджет ~16.6 мс.
- Память -- количество аллокаций по классам, обнаружение утечек ref-циклов.
Встроенный профилировщик скриптов (Diag Menu)
В дополнение к профилировщику Workbench, DayZDiag_x64.exe имеет встроенный профилировщик скриптов, доступный через Diag Menu (в разделе Statistics). Он показывает списки top-20 по времени на класс, времени на функцию, аллокациям классов, количеству вызовов на функцию и количеству экземпляров классов. Используйте параметр запуска -profile для включения профилирования с момента старта. Профилировщик измеряет только Enforce Script -- proto (движковые) методы не измеряются как отдельные записи, но их время выполнения включено в общее время скриптового метода, который их вызывает. Смотрите EnProfiler.c в ванильных скриптах для программного API (EnProfiler.Enable, EnProfiler.SetModule, константы флагов).
Типичные узкие места
| Проблема | Симптом профилировщика | Исправление |
|---|---|---|
| Дорогостоящий покадровый код | Высокое время в OnUpdate | Перенесите на таймеры, уменьшите частоту |
| Чрезмерная итерация | Цикл с тысячами вызовов | Кешируйте результаты, используйте пространственные запросы |
| Конкатенация строк в циклах | Высокое количество аллокаций | Уменьшите логирование, группируйте строки |
Интеграция с патчингом файлов
Самый быстрый рабочий процесс разработки сочетает Workbench с патчингом файлов, устраняя пересборку PBO для изменений скриптов.
Настройка
- Скрипты на диске P: как отдельные файлы (не в PBO).
- Символическая ссылка на скрипты установки DayZ:
mklink /J "...\DayZ\scripts" "P:\scripts" - Запуск с
-filePatching: и клиент, и сервер используютDayZDiag_x64.exe.
Цикл быстрой итерации
1. Редактируем .c файл в редакторе
2. Сохраняем (файл уже на диске P:)
3. Перезапускаем миссию в DayZDiag (без пересборки PBO)
4. Тестируем в игре
5. При необходимости ставим точки останова в Workbench
6. ПовторяемЧто нужно пересобирать?
| Изменение | Нужна пересборка? |
|---|---|
Логика скриптов (.c) | Нет -- перезапуск миссии |
Файлы макетов (.layout) | Нет -- перезапуск миссии |
| Config.cpp (только скрипты) | Нет -- перезапуск миссии |
| Config.cpp (с CfgVehicles) | Да -- бинаризированные конфиги требуют PBO |
Текстуры (.paa) | Нет -- движок перезагружает с P: |
Модели (.p3d) | Возможно -- только небинаризированный MLOD |
Распространённые проблемы Workbench
Workbench падает при запуске
Причина: Диск P: не смонтирован или .gproj ссылается на несуществующие пути. Решение: Сначала смонтируйте P:. Проверьте Workbench > Options директорию исходных данных. Убедитесь, что пути FileSystem в .gproj существуют.
Нет автодополнения кода
Причина: Проект неправильно настроен -- Workbench не может скомпилировать скрипты. Решение: Проверьте, что ScriptModules в .gproj включают ванильные пути (scripts/1_Core и т.д.). Проверьте вывод на наличие ошибок компилятора. Убедитесь, что ванильные скрипты есть на P:.
Скрипты не компилируются
Решение: Проверьте панель вывода на наличие точных ошибок. Убедитесь, что все пути зависимых модов включены в ScriptModules. Убедитесь в отсутствии межслойных ссылок (3_Game не может использовать типы из 4_World).
Точки останова не срабатывают
Чеклист:
- Подключены к DayZDiag (не розничной версии)?
- Красная точка (действительная) или жёлтый восклицательный знак (недействительная)?
- Скрипты совпадают между Workbench и игрой?
- Отлаживаете правильную сторону (клиент vs сервер)?
- Путь кода действительно достигается? (Добавьте
Print()для проверки.)
Не удаётся найти файлы в обозревателе ресурсов
Решение: Проверьте, что FileSystem в .gproj включает директорию, где находятся ваши файлы. Перезапустите Workbench после изменения .gproj.
Ошибки «Plugin Not Found»
Решение: Проверьте целостность DayZ Tools через Steam (правый клик > Свойства > Установленные файлы > Проверить). При необходимости переустановите.
Не удаётся подключиться к DayZDiag
Решение: Оба процесса должны быть на одной машине. Проверьте брандмауэры. Убедитесь, что модуль Script Editor открыт до запуска DayZDiag. Попробуйте перезапустить оба.
Советы и лучшие практики
Используйте Workbench для отладки, VS Code для написания кода. Редактор Workbench базовый. Используйте внешние редакторы для ежедневного кодирования; переключайтесь на Workbench для отладки и предварительного просмотра макетов.
Держите отдельный .gproj для каждого мода. Каждый мод должен иметь собственный файл проекта для компиляции именно нужного контекста скриптов без индексации не связанных модов.
Используйте консоль для экспериментов с API. Тестируйте вызовы API в консоли, прежде чем записывать их в файлы. Быстрее, чем циклы редактирование-перезапуск-тест.
Профилируйте перед оптимизацией. Не угадывайте узкие места. Профилировщик показывает, где на самом деле тратится время.
Устанавливайте точки останова стратегически. Избегайте точек останова в
OnUpdate(), если они не условные. Они срабатывают каждый кадр и постоянно замораживают игру.Используйте закладки для навигации. Синие точки закладок отмечают интересные места в ванильных скриптах, к которым вы часто обращаетесь.
Проверяйте вывод компилятора перед запуском. Если Workbench сообщает об ошибках, игра тоже сломается. Сначала исправьте ошибки в Workbench -- быстрее, чем ждать загрузки игры.
Используйте -mod для простых конфигураций, .gproj для сложных. Один мод без зависимостей:
-mod=P:\MyMod. Мульти-мод с CF/Dabs: пользовательский.gproj.Держите Workbench обновлённым. Обновляйте DayZ Tools через Steam при обновлении DayZ. Несовпадающие версии вызывают ошибки компиляции.
Краткая справка: горячие клавиши
| Горячая клавиша | Действие |
|---|---|
F5 | Начать / продолжить отладку |
Shift+F5 | Остановить отладку |
F9 | Переключить точку останова |
F10 | Шаг через |
F11 | Шаг внутрь |
Shift+F11 | Шаг наружу |
Ctrl+F | Поиск в файле |
Ctrl+H | Поиск и замена |
Ctrl+Shift+F | Поиск в проекте |
Ctrl+S | Сохранить |
Ctrl+Space | Автодополнение кода |
Краткая справка: параметры запуска
| Параметр | Описание |
|---|---|
-project="path/dayz.gproj" | Загрузить определённый файл проекта |
-mod=P:\MyMod | Автонастройка из config.cpp мода |
-mod=P:\ModA;P:\ModB | Несколько модов (через точку с запятой) |
Навигация
| Назад | Вверх | Далее |
|---|---|---|
| 4.6 Упаковка PBO | Часть 4: Форматы файлов и DayZ Tools | 4.8 Моделирование зданий |
