UDKСтатьи

Настраиваем Swarm

Автор:

Если вы используете Lightmass и/или Precomputed Visibility, вы наверняка заметили, что процесс постройки уровня занимает много времени.
Swarm - это встроенная в UDK система распределенной постройки Lightmass и Precomputed Visibility. То есть, это инструмент, позволяющий раскинуть данную задачу на другие компы в локальной сети.

Swarm состоит из двух частей - Coordinator и Agent.
Понятно, что координатор будет управлять распределением ресурсов, а агент и будет самим ресурсом.

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

Из папки Binaries, установленного UDK, берем следующие файлы:

для координатора:
- SwarmCoordinator.exe
- SwarmCoordinatorInterface.dll

для агента:
- AgentInterface.dll
- SwarmAgent.exe
- SwarmCoordinatorInterface.dll
- UnrealControls.dll

Складываем их в соответствующие папки и несем все это на сервер (в принципе, координатором не обязательно быть серверу, это может быть любой комп в сети).
Кладем, например, в C:\Swarm\SwarmCoordinator и C:\Swarm\SwarmAgent.

Добавляем SwarmCoordinator.exe и SwarmAgent.exe в автозагрузку.

Запускаем SwarmCoordinator.exe.

Изображение

Запускаем SwarmAgent.exe и переходим во вкладку Settings.

Изображение

Задаем следующие значения:
CacheFolder: C:\Swarm\SwarmCache
AllowedRemoteAgentGroup: Default
AllowedRemoteAgentNames: *
AvoidLocalExecution: True
CoordinatorRemotingHost: SERVER (здесь IP или сетевое имя координатора)

Здесь особое значение имеют:
- AllowedRemoteAgentGroup - группа должна быть одна для всех агентов, иначе они не подхватятся.
- AllowedRemoteAgentNames - чтобы имена были любые я поставил *.
- AvoidLocalExecution - агент должен всегда избегать выполнения задачи локально, чтобы координатор раздал задачу другим агентам.

Если вы поставите ShowDeveloperMenu: True, появится еще одна вкладка с опциями разработчика.
В ней вам могут быть интересны поля LocalJobsDefaultProcessorCount, LocalJobsDefaultProcessPriority, RemoteJobsDefaultProcessorCount и RemoteJobsDefaultProcessPriority, которые означают количество ядер для локальной/удаленной задачи и приоритеты выполнения/подключения к задаче.

Хорошо, все настроено, и теперь, если вы заглянете в координатор, то увидите там первого агента, который запущен на этой машине.

Изображение

То есть, координатор также может быть и агентом, но это опционально.

Немного о полях в координаторе:
Name – имя подключенного компа/агента.
Group Name – имя группы компа/агента.
Agent Version – версия агента. Обычно с каждым новым релизом UDK она меняется, так что не забывайте обновлять файлы.
State – состояние агента, меняется в зависимости от того подключен ли он к текущей задаче, доступен или занят, закрыт.
Cores for Local, Cores for Remote – количество ядер которые будут задействованы в задаче (устанавливается в описанных выше LocalJobsDefaultProcessorCount и RemoteJobsDefaultProcessorCount).

Загляните в папку C:\Swarm\SwarmAgent. Там добавились файлы SwarmAgent.DeveloperOptions.xml и SwarmAgent.Options.xml. Это опции, которые вы только что задали.

Теперь нужно установить агентов (но не координаторов) на другие машины. Берите все содержимое папки SwarmAgent (с файлами опций, не вводить же их повторно) и несите на другие компы.
Не забывайте добавлять SwarmAgent.exe в автозагрузку.

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

Изображение

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

Удачи!

#Swarm, #UDK

4 июня 2013

Комментарии [1]