Пользовательская сборка

На этой странице мы пройдём процесс установки Dash в пользовательскую сборку UE5. Несколько моментов, которые нужно иметь в виду:

  • Dash совместим только с UE5.1 и выше.

  • В большинстве случаев процесс должен быть довольно простым, но если ваша пользовательская сборка UE5 сильно отличается от исходного движка, могут возникнуть некоторые проблемы, и мы рекомендуем связаться по адресу [email protected]

  • Обычно мы приглашаем компании в общий канал Slack, где можем предоставлять им живую поддержку и общаться напрямую с их художниками для запросов обратной связи. Пожалуйста, свяжитесь с нами!

  • Чтобы отключить отправку отчётов о сбоях, аналитику, функции ИИ и т.д., вы можете задать определённые переменные окружения. Более подробная информация об этом ниже.

С этим разобрались, приступим.

Существует два метода сборки: первый — сборка как плагина (Plugin Build), второй — сборка из исходников (Source Build). Файлы для обоих находятся в этой папке Google Drive: polygonflow.io/latest-source-buildarrow-up-rightи вы можете выбрать предпочтительный метод сборки, ознакомившись с различными инструкциями ниже.

Методы сборки:

chevron-rightВариант 1: Инструкции по сборке как плагинаhashtag

Это самый простой режим развертывания, так как это обычная структура плагина Unreal Engine. руководство по плагинам Epic Gamesarrow-up-right может быть применено как обычно.

Начните с открытия папки Plugin Build в Google Drivearrow-up-right затем откройте папку, соответствующую версии Dash, которую вы хотите установить. Здесь вы найдёте один zip для каждой поддерживаемой версии UE, поэтому вам нужно скачать только архив для вашей конкретной версии UE.

После того как zip будет загружен и распакован, папку Dash можно поместить в PROJECT_ROOT/Plugins или ENGINE_ROOT/Engine/Plugins как описано в руководстве по плагинамarrow-up-right.

Установка зависимостей Python

Код Dash на Python находится в PLUGIN_ROOT/Content/Python который автоматически доступен для Python Unreal. init_unreal.py не требует каких-либо изменений и всегда корректен для всех пользователей.

Когда Unreal Engine запускается впервые после установки плагина Dash, Dash установит зависимости Python в PLUGIN_ROOT/Content/Python/Plugins/UnrealEngineContext/Imports/311/ для Unreal Engine 5.4+ и в PLUGIN_ROOT/Content/Python/Plugins/UnrealEngineContext/Imports/39/ для Unreal Engine 5.1-5.3

Это происходит один раз для каждого проекта (если Dash установлен на уровне проекта) ИЛИ один раз для каждой версии движка (если Dash установлен в движке). Чтобы сэкономить место на диске, рекомендуется устанавливать Dash в Engine/Plugins. Примеры путей движка: ENGINE_ROOT/Engine/Plugins/GraphNUnrealPlugin, ENGINE_ROOT/Engine/Plugins/Polygonflow/GraphNUnrealPlugin, ENGINE_ROOT/Engine/Plugins/Whatever/GraphNUnrealPlugin.

Занимаемое место на диске

Размер плагина Dash ~1GB сразу после установки. После установки зависимостей Python общий размер составляет ~3GB. Кроме того, Dash загружает метаданные ассетов, такие как миниатюры, что может добавить ещё немного.

Компиляция

Плагин Dash соответствует обычной структуре кодового плагина Unreal Engine и может быть скомпилирован в C++ проекте, или с использованием скриптов автоматизации Unrealarrow-up-right, либо с помощью кнопки «Package» в Tools→Plugins меню. Это позволяет пользователям собирать Dash для пользовательских движков.

Удаление

Просто удалите папку GraphNUnrealPlugin из Engine/Plugins или PROJECT_ROOT/Plugins

Также удалите Documents/Polygonflow папку

chevron-rightВариант 2: Инструкции по сборке из исходниковhashtag

Для этого варианта сборки начните с открытия папки Source Build в Google Drivearrow-up-right и затем загрузите zip для той версии Dash, которую хотите установить.

Этот ZIP-файл содержит:

  • Dash: Эта папка содержит файлы, скопированные из инсталлятора. Она позволяет распространять плагин без установки, через систему контроля версий или общую папку.

  • GraphNUnrealPlugin: Этот каталог содержит C++ код, необходимый для интеграции Dash в вашу пользовательскую сборку движка.

  • init_unreal.py: Если вы решите не устанавливать Dash на каждую машину художника, этот файл разработчика служит точкой входа для запуска Python-части плагина.

А теперь пора собирать!

  1. Создайте новый Unreal C++ проект

  2. Поместите плагин в папку Plugins проекта (создайте папку Plugins, если её ещё нет). Результат должен быть Plugins\\GraphNUnrealPlugin

  3. Скопируйте init_unreal.py поставляемый в ZIP внутри вашего проекта Plugins/GraphNUnrealPlugin/Content/Python чтобы плагин мог видеть Dash и его библиотеки, иначе вы получите ошибки вроде ModuleNotFoundError: No module named 'GN'

  4. Отредактируйте путь в конце файлаinit_unreal.py , указав место, куда вы поместили папку Dash, если планируете распространять плагин, или указав каталог установки, если вы используете инсталлятор.

  5. Сгенерируйте проект Visual Studio, щёлкнув правой кнопкой в проводнике по файлу .uproject и выбрав «Generate Visual Studio project files»

Щёлкните правой кнопкой, чтобы сгенерировать файлы проекта
  1. Откройте решение в Visual Studio или Rider и постройте его там. Дополнительную информацию можно найти в официальной документацииarrow-up-right.

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

Плагин предоставляет некоторые функции для интерпретатора Python, и вы можете заставить Unreal сгенерировать python-стабы для вас, чтобы затем загружать их в вашей IDE.

  1. Откройте Unreal Engine и активируйте плагин. Он активирует Python Script Plugin и Editor scripting utilities плагины

  2. Перейдите в настройки проекта и включите режим разработчика

Режим разработчика сгенерирует python-стабы для автодополнения
  1. Перезапустите редактор.

  2. Проверьте PROJECT_ROOT/Intermediate/PythonStub/unreal.py

  3. Добавьте этот файл в вашу IDE, чтобы получить автодополнение для экспортированных функций

Исключения из контроля версий

chevron-rightВозможные файлы для исключения из системы контроля версий для обоих типов сборки:hashtag
  • Plugins/UnrealEngineContext/Imports/thirdparty (~2 GB) - Эта папка будет создана и заполнена на каждой машине пользователя и будет содержать пакеты Python

  • Modules/GN/ContentLibrary/Backends/IESLibrary/IesLibraryContents (~28 MB) - Эта папка будет распакована из IesLibraryContents.zip расположенного в той же папке

  • ThirdPartyLicenses - Это не влияет на работоспособность, опционально

  • __pycache__ - Сгенерировано Python

  • *.pyc - Сгенерировано Python

  • *.pdf - Юридические документы вроде EULA, опционально

  • *.md - Юридические документы и внутренние документы, опционально

Переменные окружения Dash

chevron-rightИнструкции по переменным окружения Dashhashtag

Задавая определённые переменные окружения, вы можете контролировать, доступны ли в Dash некоторые функции и параметры. Использование "1", "yes" или "true" интерпретируется как истина.

DASH_CRASH_REPORT_ENABLED

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

DASH_UPDATE_CHECK_ENABLED

Включает или отключает проверку обновлений при запуске. Проверка обновлений происходит один раз за сессию редактора Unreal, когда Dash появляется впервые. Dash делает запрос к нашему серверу Cloudflare, чтобы получить информацию о последней версии. Значение по умолчанию - включено

DASH_ANALYTICS_ENABLED

Включает или отключает телеметрию использования Dash. Dash периодически отправляет данные об использовании в наш кластер MongoDB. Значение по умолчанию - включено

DASH_REGISTER_PREFERENCES_FOR_ANALYTICS

Если включено, переключатель для контроля опции аналитики будет добавлен в интерфейс настроек Dash. Значение по умолчанию - включено

DASH_OPEN_AI_ENABLED

Включает или отключает ассистента ИИ и автоматическое тегирование ассетов через наш аккаунт OpenAI Enterprise API. Значение по умолчанию - включить

DASH_REGISTER_PREFERENCES_FOR_OPEN_AI

Если включено, в интерфейс настроек Dash будет добавлена опция-переключатель для включения функций ИИ с использованием OpenAI Enterprise API. Значение по умолчанию - включено

FAQ

chevron-rightДоступ запрещён / только для чтения / файл защищён от записи — проблема с системой контроля версийhashtag

Если вы видите ошибку о доступе запрещён или о чтении/записи, например, касающуюся файла metadata.json, вы можете попробовать два варианта:

  1. Отключите автоматическую защиту записи для папки Documents, которую добавляет Windows Defender в Windows 11. Это «Защищённая папка»

  2. Вы можете пометить metadata.json или любые другие файлы Dash под системой контроля версий как всегда доступные для записи через Perforce и т.д., а затем выполнить процесс установки заново с самого начала.

chevron-rightНужно ли компилировать плагин на каждой машине?hashtag

Нет. Вы можете распространять предварительно собранный C++ плагин на каждой машине, использующей ту же версию движка, против которой он был собран.

chevron-rightНужно ли устанавливать плагин на каждой машине художника?hashtag

Для запуска Dash потребуются 2 компонента:

  • C++ плагин для Unreal

  • Python плагин Dash

Вы можете установить плагин на каждую машину художника или распространять его через систему контроля версий вместе с пользовательским собранным C++ плагином.

chevron-rightКаковы зависимости C++ плагина?hashtag

Ниже приведён список зависимостей C++ слоя:

Библиотека памяти от Microsoft (Unreal тоже её использует)

  • mimalloc.lib

Зависимости Dash (внутренние)

  • IndexMeshSymbols.lib

  • _math.lib

  • _array.lib

  • meshoptimizer.lib

  • _gnmesh.lib

chevron-rightКаковы зависимости Python плагина Dash?hashtag

Dash опирается на ряд внутренних и сторонних библиотек. Следующий список может изменяться, но на момент написания это сторонние библиотеки, которые используются:

  • abseil

  • eigen

  • embree

  • OpenSubdiv

  • Physix

  • tbb

  • robin-hood-hasing

  • tinyspline

  • FastNoise2

  • fast_obj

  • unordered_dense

  • blinker

  • boto3

  • botocore

  • certifi

  • dateutil

  • jmespath

  • orjson

  • pytz

  • semver

  • s3transfer

  • sentry_sdk

  • urllib3

  • numpy

  • PIL

  • PySide6

  • scipy

  • sklearn

  • shiboken6

  • torch_redstone

Некоторые — чисто Python-модули, некоторые — C++ библиотеки, которые мы используем внутри наших Python-модулей.

chevron-rightНужно ли перекомпилировать плагин при каждом новом релизе?hashtag

Да. Если вы используете пользовательскую версию Unreal, вам придётся перекомпилировать C++ плагин и распространять соответствующий Python плагин Dash вместе с ним. Как только у вас уже будет настроена структура, это должно быть так же просто, как заново сгенерировать проект и собрать его. Обязательно также обновляйте init_unreal.py, так как он может меняться между выпусками.

Когда доступна новая версия Dash, вы получите уведомление прямо в Dash, и после этого вы всегда сможете найти последний ZIP для загрузки здесь: https://www.polygonflow.io/download-latest-source-buildarrow-up-right

chevron-rightПри компиляции C++ плагина у меня появляются предупреждения — как их исправить?hashtag

Dash постоянно развивается, и нашим главным приоритетом является предоставление художникам и студиям постоянных обновлений и новых инструментов для улучшения рабочего процесса. Такой быстрый темп разработки иногда оставляет после себя некоторые предупреждения при компиляции, о которых мы знаем и которые не критичны. Они могут быть исправлены в процессе дальнейшей работы, но если у вас политика нулевых предупреждений, к сожалению, возможно, вам придётся устранять те, что появляются.

chevron-rightСколько корпоративных лицензий (Enterprise Seats) мне нужно?hashtag

Лицензии нужны только тем художникам, которые хотят иметь доступ к инструментам и возможность менять параметры. Лицензии для сборочных машин (Build Machines) не требуются.

chevron-rightОшибка ресурса — не удалось скопировать файлы в ваш проектhashtag

Если вы используете Perforce или другой софт для контроля версий и при открытии Dash видите всплывающее окно обновления ресурсов, которое завершается ошибкой Resource Error, выполните следующие действия:

  1. Если вы используете Dash версии 1.9.2 или выше, переходите к шагу 5

  2. Закройте UE,

  3. Откройте этот путь в проводнике на вашем ПК: DASH_INSTALL_ROOT\Plugins\UnrealEngineContext\Imports\GN,

  4. Затем замените файл ContentUtils.py на тот, что доступен здесь: https://drive.google.com/drive/folders/129GZoD6borfOGJ4-sGD_VTAdVMtMgbKr?usp=sharingarrow-up-right

  5. Затем откройте UE и проигнорируйте всплывающее окно обновления, т.е. закройте его вместо того, чтобы нажимать обновить

  6. Далее откройте настройки Dash через главное меню Dash и включите новую настройку "Skip Resource Acquisition", доступную в разделе Content Settings

  7. После этого при следующем открытии Dash у вас не должно появляться всплывающее окно обновления

  8. Позже, когда выйдет обновление Dash, один человек (тот, кто настраивал проект и плагины, например) должен выполнить эти шаги, чтобы получить новые данные ресурсов и поделиться ими со всеми через Perforce:

    1. Установите новую версию Dash

    2. Разблокируйте папку Polygonflow в разделе Content проекта через Perforce, чтобы она была доступна для записи.

    3. Снова включите получение ресурсов в настройках Dash

    4. Откройте проект и Dash и выполните обновление через всплывающее окно

    5. Теперь новые файлы обновления добавлены в Perforce и готовы к использованию всеми участниками команды.

Последнее обновление

Это было полезно?