Unreal Swarm в Unreal Engine 4

0
245
Unreal Swarm в Unreal Engine 4

В зависимости от среды разработки рендеринг больших и открытых миров может занять много времени, поскольку вычисление освещения, теней и геометрии может быть дорогостоящим. Существует несколько способов сократить время сборки вашего проекта, например, модернизировать ваше оборудование за пределами наших рекомендуемых спецификаций или с помощью системы распределения задач, в которую входит Unreal Swarm, что сокращает время, затрачиваемое на выполнение дорогостоящих вычислений, таких как решение для высококачественное статическое глобальное освещение.

Что такое Unreal Swarm?

Unreal Swarm – это общая система распределения приложений и задач, состоящая из двух типов приложений, одна из которых является координатором, который распределяет задачу (задачи) сборки, а другой – агент, который использует ресурсы хост-системы для выполнения своего задания (заданий).

схема Unreal Swarm UE4После настройки Swarm Координатор Swarm будет управлять заданием (заданиями) и задачей (задачами) Агента (ов) Swarm в вашей сети.

Требования

Прежде чем вы сможете начать установку Unreal Swarm, убедитесь, что вы установили Unreal Engine 4 (UE4), по крайней мере, на одном компьютере вашей сети.

Если вы хотите настроить ферму рендеринга для дорогостоящих вычислительных задач, пожалуйста, не забудьте согласовать с вашим ИТ-отделом необходимые разрешения для машин, которые должны будут размещать Swarm координатор (-ы) и Агента (-ов).

Настройка Swarm Координатора 

Если вы определили технику, которую хотите использовать, и если вы установили UE4; вы готовы настроить Swarm Координатора, выполнив следующие шаги:

  1. После установки UE4 перейдите к [UE4ROOT]\Engine\Binaries\DotNET.
  2. Создайте новый каталог на компьютере, который будет распространять задачи на другие компьютеры в сети. Для иллюстративных целей мы называем новый каталог, Swarm Coordinator.
  3. Теперь переместите (или скопируйте) следующие файлы из  [UE4ROOT]\Engine\Binaries\DotNET во вновь созданный каталог: SwarmCoordinator.exe и SwarmCoordinatorInterface.dll.
  4. Наконец, чтобы убедиться, что вы можете запустить приложение на своем компьютере, дважды щелкните по исполняемому Координатору Swarm.Координатор Swarm UE4
Если у вас уже развернуты агенты Swarm Agents, координатор Swarm отображает его диалоговое окно агента (1) и область параметров перезапуска (2).диалоговое окно агента Swarm UE4

 

На этом этапе вам не нужно ничего делать с приложением, поэтому перейдите к следующему разделу, в котором вы установите агента (ы) Swarm.

Развертывание Агентов Swarm

Теперь, когда вы создали координатор Swarm, вы готовы применить Swarm Agents. После определения техники, которой вы хотите разместить своих агентов, выполните следующие действия:

  1. На каждой из машин, на которых вы хотите разместить агента Swarm, создайте новый каталог. Для иллюстративных целей мы называем наш новый каталог, Swarm Agent.
  2. Переместите (или скопируйте) следующие файлы из [UE4ROOT]\Engine\Binaries\DotNET в только что созданные напрямую: SwarmAgent.exeAgentInterface.dllSwarmCommonUtils.dllSwarmCoordinatorInterface.dllSwarmInterface.dll, и UnrealControls.dll.
  3. Чтобы развернуть агент, дважды щелкните по исполняемому файлу Swarm Agent.
  4. После запуска агента Swarm Agent значок Swarm появится в области уведомлений Windows. Дважды щелкните значок Swarm, чтобы открыть главное меню приложения.главное меню приложения Unreal Swarm UE4

5. Чтобы настроить агент Swarm, перейдите на вкладку Settings.настройка вкладки Unreal Swarm UE4

Чтобы включить Developer Settings, установите для параметра  ShowDeveloperMenu (в Settings > Developer Settings) значение True.включить Developer Settings UE4

 

Когда вы обновляете настройки агента, стоит заметить, что агент Swarm записывает настройки в SwarmAgent.Options.xml (или, если параметры разработчика включены, SwarmAgent.DeveloperOptions.xml.
6. В раскрывающемся меню Distribution Settings найдите поле CoordinatorRemotingHost, введя адрес IPv4 главного компьютера.
поле CoordinatorRemotingHost UE4

Если вы не знаете IPv4-адреса своего компьютера, запустите ipconfig из командной строки.
7. Если вы не хотите вводить адрес IPv4 системы в поле CoordinatorRemotingHost, вы можете ввести DNS-Имя координатора.
8. Наконец, идите далее и откройте Swarm Координатор, где вы найдете подробную информацию о развернутом Swarm Агенте (-ах).развернутый Swarm Agent UE4

Настройка групп агентов

Настройка групп агентов полезна для создания кластеров выполнения. Например, один набор компьютеров может принадлежать группе, которая не входит в ферму рендеринга, тогда как другой кластер может иметь машины, принадлежащие ферме. Приступая к работе, откройте меню Settings > Distribution Settings.меню Settings > Distribution Settings UE4

Чтобы настроить группу агентов, сначала нужно указать, какие задания группы вы хотите развернуть. Например, мы указываем, что этот агент будет развертываться в заданиях «FarmGroup» в настройке AllowedRemoteAgentGroup.настройка AllowedRemoteAgentGroup UE4

Если вы хотите, чтобы этот агент был развернут на «FarmGroup», убедитесь, что имя AgentGroupName соответствует AllowedRemoteAgentGroup. В следующем примере мы исключаем, чтобы этот агент был развернут на задания «FarmGroup».1 настройка AllowedRemoteAgentGroup UE4

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

НастройкаЗначение по умолчаниюОписание
AgentGroupNameDefaultЭто имя группы агентов, к которой принадлежит данный агент Swarm.
AllowedRemoteAgentGroupDefaultDeployedЭто имя заданий группы агентов, к которым может быть применен этот агент Swarm.
AllowedRemoteAgentNamesRENDER*Строка фильтра (”, ‘,’ или ‘;’ ограничена) используется удаленной машиной.
AvoidLocalExecutionFalseУстановка этого знака в значение True означает, что вы хотите включить распределение заданий и задач из этого агента Swarm (без локального выполнения).  

Установка этого флажка является скорее предложением (а не мандатом), потому что он устанавливает приоритет потока в Idle, благоприятствуя другим агентам, связанным с самим Swarm. Это связано с тем, что, если нет доступных других агентов (или если Swarm не может найти координатора), вы все равно получите сборку, выполняемую этим агентом, а не бесконечное время ожидания (или сбой).
CoordinatorRemotingHostRENDER-01Это имя машины, на которой размещается координатор Swarm. Вы можете ввести одну из двух строк в это поле: DNS-Имя координатора или его IPv4-адрес.
EnableStandaloneModeFalseУстановка этого значка в True отключает систему распространения для исходящих и входящих задач.

Управление кэшем Swarm Cache

После того, как вы развернули свой агент (ы) Swarm, вы захотите управлять кэшем Swarm агента. Как правило, управление роуминговым кэшем агента включает в себя обновление настроек кэша агента, очистку его кеша и проверку его кеша.

Чтобы обновить настройки кэша агента, перейдите в меню Settings > Cache settings.меню Settings > Cache settings UE4

В этом меню вы сможете обновить настройки кэша агента (как описано ниже).

НастройкаЗначение по умолчаниюОписание
CacheFolder[Папка на диске]/SwarmCacheЭто местоположение папки кэша, находящейся на быстром диске с большим количеством места.
MaximumCacheSize10В гигабайтах это приблизительный максимальный размер папки кэша.
MaximumJobsToKeep5Это число предыдущих заданий для записи журналов и выходных данных.

Кроме того, если вы хотите очистить кеш хоста, который используется агентом Swarm для выполнения своих назначенных задач, вызовите команду Clean в меню Cache.команда Clean в меню Cache UE4

Наконец, если вы хотите проверить кеш компьютера, вызовите команду Validate в меню Cache.команда Validate в меню Cache UE4

Хорошая практика – регулярно чистить и проверять свой swarm-кэш, особенно если Unreal Lightmass рушится и приводит к сбоям

Чтение журналов агентов

При нажатии на вкладку Log открывается окно журнала, в который были сброшены сообщения журнала Swarm Agent.окно журнала Swarm Agent UE4

Если вы хотите указать объем вывода, который будет очищен в окне Log, обновите переменную MaximumJobApplicationLogLines (находящуюся в меню Developer Settings > Log Settings), чтобы изменить количество выходных строк из приложения Задания до того, как оно обрежет то, что уйдет в окно журнала.меню Developer Settings > Log Settings UE4

Если вам нужно найти текстовые файлы AgentLog * для отладки или обслуживания, важно отметить, что в начале и конце каждого задания активность агента регистрируется в файле в [Folder on Disk]\SwarmCache\Log.Unreal Swarm в Unreal Engine 4

Как правило, уровень ведения журнала по умолчанию для файлов на диске установлен на ExtraVerbose, тогда как уровень ведения журнала по умолчанию для окна журнала агента Swarm установлен в Informative. Если вы хотите изменить то, как подробно вы хотите получать вывод журнала, обновите переменную Verbosity, которая находится в меню Settings > Log Settings.Informative в настройках Swarm Agent UE4

Мониторинг загрузки

Если вы хотите контролировать загрузку агента, когда он работает с заданиями и задачами, которые ему назначены, откройте окно Swarm Status.окно Swarm Status UE4

Когда агент запущен, вы увидите индикаторы выполнения на машине, и для каждого индикатора выполнения есть регионы, отражающие, инициализируется ли приложение (1), подготовка к работе (2) (обе из которых не являются распределенной работой) или выполнения распределенной работы (3).индикаторы выполнения Swarm Agent UE4

Чтобы получить более подробную информацию о прогрессе работы, наведите курсор мышки на индикаторы выполнения.

Наконец, панель Distributed Progress, расположенная внизу, сообщает вам процент выполненного задания (4) по сравнению с процентом, который в настоящее время обрабатывается (5).панель Distributed Progress UE4

Остановка Swarm агентов

Чтобы остановить Swarm агент, нажмите File > Exit, чтобы закрыть приложение и остановить загрузку.загрузка Swarm Agent UE4

Кроме того, щелкните правой кнопкой мышки значок Swarm в области уведомлений Windows и выберите команду Exit.

На данный момент Swarm Координатор и Swarm Агент могут работать с минимальным вмешательством. Учитывая количество света, объектов и качество вычислений, которые нуждаются в обработке, вы обнаружите, что с достаточным количеством агентов сборка Unreal Lightmass займет всего несколько минут, а не несколько часов.

В зависимости от среды разработки (включая размер и сложность сцены, на которой вы работаете) вы можете обновить количество ядер, зарезервированных на вашем локальном компьютере, для повышения производительности сборки. Это можно сделать, настроив переменную LocalJobsDefaultProcessorCount, которая находится в меню Developer Settings > Local Performance Settings.переменная LocalJobsDefaultProcessorCount UE4

 

Если у вас есть общие вопросы о запуске Unreal Swarm, ознакомьтесь со следующим набором часто задаваемых вопросов.

Часто задаваемые вопросы

  • Каким образом я могу улучшить время сборки при использовании агентов и Swarm агентов?
  • Почему я не получаю распространение Aгента?
  • Как я могу ограничить использование ЦП при построении освещения?
  • Когда я пытаюсь запустить Swarm Agent, я получаю ошибку приложения Windows для UnrealLightmass.exe, что это значит?
  • Поддерживаются ли Swarm Агент и Swarm Координатор для Mac или Linux?
  • Может ли мой GPU использоваться для создания освещения?
  • Что означают следующие ошибки?
Каким образом я могу улучшить время сборки при использовании агентов и Swarm Координатора и Агента (-ов)?
  • Добавление Lightmass Importance Volume(s) в доступных игрокам областях:
    • Этот вольюм используется для фокусировки там, где Lightmass тратит свое время на точность и качество. Идея состоит в том, что они должны охватывать область, в которой может быть игрок. Области за пределами вольюма получат меньше фотонов и, следовательно, результат более низкого качества. Обратите внимание, что использование одиночных больших объемов для охвата области поражает их цель фокусировки вычислений фотонов в ключевых областях.
  • Регулировка разрешений Lightmap:
    • Отдельные статик меши, которые имеют высокие разрешения Lightmap и много легких вкладов в сцену, могут увеличить время сборки не только для сцены, но и для одного актера. По возможности, уменьшите разрешения Lightmap для получения качественного результата и используйте окно статистики, чтобы получить представление о том, сколько времени потребовалось для создания одного Актера для Уровня. Чтобы получить хороший результат для больших (или сложных) статик мешей, где вы находите, что вы устанавливаете более высокие разрешения Lightmap, вы можете захотеть разбить его на отдельные мелкие меши или переделать Lightmap UV (где это возможно), чтобы лучше удовлетворить данный вопрос.
  • Включение разрешений Lightmap Foliage Tool:
    • Взятые статик меши, используемые при рисовании Листвы на вашем уровне, автоматически используют разрешение Lightmap статик меши, на которое ссылаются. Когда у вас есть сотни (или даже тысячи) из них, окрашенных в ваш уровень, это разрешение может быть слишком высоким для системы. Это приведет к экспоненциальному увеличению времени сборки, потенциальному сбою Lightmass из-за ограничений памяти и более высокой потребляемой памяти текстуры. Рекомендуется включить Light Map Resolution и использовать значение по умолчанию 8 или, возможно, установить его на более низкое значение 4. Это уменьшает разрешение всех экземпляров, но воспринимаемая потеря качества минимальна, поскольку требуется только статическое отслеживание на расстоянии, в то время как динамическая затенение обрабатывается рядом с камерой.Включение разрешений Lightmap Foliage Tool UE4
  • Уменьшение количества Актеров и (или) света сцены:
    • Количество shadow casting Актеров и (или) Свет на уровнях означает, что все эти взаимодействия необходимо учитывать при расчете освещения. Уменьшение света – ключевой способ ограничить количество Актеров, с которыми взаимодействует один свет. Уменьшение радиуса воздействия для света, который не должен влиять на большую площадь, может уменьшить количество вычислений и, таким образом, увеличить скорость обрабатываемой световой сборки.
  • Использование выше рекомендованных системных характеристик:
    • Swarm Agent – это процесс с интенсивным процессором, который требует большого количества вычислений. Если вы используете только свою локальную машину, хороший процессор и много оперативной памяти могут улучшить время сборки. Имейте в виду, что другие факторы, упомянутые ранее, также играют роль в процессе обработки сборки.
Почему я не получаю распространение агента?

Удаленные агенты Swarm могут отказаться работать над вашей задачей по нескольким различным причинам, наиболее распространенным среди них является то, что они уже заняты чужим заданием. Другая вероятность заключается в том, что они сами определили, что они слишком заняты, чтобы заняться работой в это время часто из-за того, что машина делает что-то ресурсоемкое, например компиляцию или приготовление контента. На вкладке Swarm Status окна Агента вы должны увидеть полный список всех удаленных агентов, которые могут потенциально помочь в вашей сборке. Если один из них в настоящее время недоступен, вы увидите белую полосу, расположенную рядом с остальной частью сборки, и если вы нажмете над панелью, вы увидите сообщение “Waiting for remote to become available”.

Кроме того, более продвинутый способ заглянуть в доступные удаленные агенты (даже если вы не выполняете сборку) – это щелкнуть вкладку Log и выбрать Ping Remote Agents из меню Network. Вы увидите список удаленных компьютеров и их текущее состояние.

Как я могу ограничить использование ЦП при построении освещения?

На вкладке Swarm> DeveloperSettings вы можете ограничить ядра ЦП, используемые во время сборки освещения для вашего локального компьютера и для удаленных компьютеров тоже, с LocalJobDefaultProcessCount и RemoteJobDefaultProcessorCount.

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

Когда я пытаюсь запустить Swarm Agent, я получаю ошибку приложения Windows для UnrealLightmass.exe, что это значит?ошибка приложения Windows для UnrealLightmass.exe UE4
  • Этот тип ошибки означает, что что-то препятствует открытию приложения в Windows, что напрямую не является причиной UE4. Ниже приведены некоторые шаги, которые вы можете предпринять для решения проблемы:
    • Убедитесь, что у вас установлены соответствующие и новейшие зависимости Visual Studio. Для Unreal Engine версии 4.9 и более ранних вам понадобятся зависимости VS2013, а для 4.10 и более поздних версий вам понадобятся зависимости VS2015.
    • Если это не решит проблему, попробуйте использовать бесплатное приложение (например, Dependency Walker) для устранения любых проблем с DLL, которые могут препятствовать загрузке UnrealLightmass.exe.
Поддерживаются ли Swarm Агент и Swarm Координатор для Mac или Linux?

В настоящее время Swarm Агент и Swarm Координатор поддерживаются только для Windows. Построение света по-прежнему используют Swarm для Mac и Linux, но недоступны для пользователя.

Может ли мой GPU использоваться для создания освещения?

В настоящее время Swarm не поддерживает вычисления графического процессора для данных освещения.

Что означают следующие ошибки?
  • Lightmass Crashed с «Ran out of memory allocating [some value]” Агенту Swarm не хватало памяти UE4
    • В этой ситуации агент Swarm не смог обработать данные для Lightmass, так как в нем не хватало памяти. Это чаще всего происходит, когда вы не используете координатор Swarm для распространения сборки по нескольким агентам, требующим, чтобы одна машина выполняла всю работу. Lightmass может исчерпать память при вычислении большого уровня со многими актерами и освещением или если разрешения Lightmap слишком велики.Вы можете уменьшить вероятность получения этой ошибки, увеличив объем оперативной памяти на своем локальном компьютере, добавив агентов для распространения, понизив разрешение Lightmap Actors, где это возможно, или даже добавив Lightmass Importance Volume для фокусировки вычислений для ключевых областей, к которым могут обращаться игроки,
  • Lightmass Crashed с «Assertion Failed: (Index >=0)&(Index <ArrayNum))”почистить и проверить Swarm Кэш UE4
    • Когда вы получите эту ошибку, вы должны почистить и проверить свой Swarm Кэш.
  • Всплывающее окно редактора «Light Build Failed. Swarm failed to kick off.»окно Failed To Kick Off UE4

Когда вы пытаетесь создать освещение из редактора Unreal, вы можете получить это сообщение. Если это так, вот следующие частые причины:

  • Убедитесь, что у вас нет нескольких экземпляров Swarm Agent. Вы можете проверить это, посмотрев на выполняемую обработку задачи или в Windows, посмотрев в области уведомлений Windows.
  • Искаженные уровни и / или Актеры на уровне.
  • Без верных исключений для SwarmAgent.exe для Firewall (брандмауэра) и антивирусного программного обеспечения.
  • Проблема с установкой или повреждение Движка. Для пользователей с Launcher выберите версию своего движка и выберите Verify.выбрать Verify движка UE4
    • Исходный вопрос с Unreal Lightmass. Перестройте решение UnrealLightmass.
  • Если Swarm все еще не запускается, его порты могут использоваться другим системным процессом.
    • Откройте журнал Swarm и проверьте следующее сообщение об ошибке:
    • Сведения об исключении: System.Net.Sockets.SocketException (0x80004005: соединение не может быть выполнено, потому что целевая машина активно отклонила его. 123.456.7.89:8009

      Возможно, вам придется задействовать свой ИТ-отдел для решения этой проблемы с назначением портов, тем более что для Swarm требуется, чтобы порты 8008 и 8009 функционировали должным образом. Без этих портов он не сможет инициировать ни агентов, ни  координаторов. Это не проблема, вызванная UE4.