Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход
Разработка платформы Шаг 145 из 387

Оптимизация выделенного сервера

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

Автоматическая оптимизация

По умолчанию цель сборки Выделенный Сервер выполняет следующие оптимизации:

Звуковая подсистема

Цель сборки Выделенного Сервера отключает Аудио Subsystem, потому что сборки не нуждаются в поддержке аудио, когда они работают как выделенный сервер. Отключение Аудио Подсистемы снижает нагрузку CPU.

Световые нити

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

Обратные вызова в петли игрока

Цель сборки Выделенный Сервер отключает следующие Обратные вызовы PlayerLoop, потому что они не нужны для сборки сервера.

  • Регистрация цикла обновления игрока SendMouseEvents
  • Регистрация цикла обновления игрока UpdateAllRenderers
  • Регистрация цикла обновления игрока PlayerUpdateCanvases
  • Регистрация цикла обновления проигрывателя всех аудио обратных вызовов, таких как UpdateAudio
  • Регистрация цикла обновления проигрывателя всех UI обратных вызовов, таких как UIElementsUpdatePanels
  • Регистрация цикла обновления проигрывателя всех входных обратных вызовов, таких как UpdateInputManager

GPU — только ассеты

Цель сборки на Выделенный Сервер удаляет только GPU ассеты, такие как данные текстурных пикселей для текстур и данные вершин сетки, которые не нужны серверу. Цель сборки сохраняет ассеты с CPU доступом Чтение/Запись и ассеты в Ресурсных Папках.

Тексты и меши, импортированные с CPU Read/Write доступ отключен, доступны только GPU, в то время как CPU не может получить к ним доступ. Поскольку цель сборки Dedicated Server не инициализирует графическое устройство, нет необходимости включать эти данные. Исключение этих данных снижает использование памяти исполняемого файла.

Дополнительные сведения о том, какие ассеты удаляются и сохраняются конечным объектом сборки выделенного сервера, см. в следующих списках.

Убраны:

  • Тексты с CPU доступом Чтение/Запись отключен.
  • Данные вершин для мешей с CPU доступом Чтение/Запись отключен.

Сохранено:

  • Тексты с доступом CPU Чтение/Запись.
  • Данные о вершинах для мешей с разрешенным доступом CPU для чтения/записи.
  • Ассеты в защищённом Папки ресурсов.
  • Текстура метаданные (например, значение размера текстуры).
  • Данные меша, необходимые внутренним системам, которые работают на CPU (например, физика), даже если CPU Чтение/Запись отключено.

Примечание: Узнать больше о CPU Доступ для чтения/записи, ссылка на Texture.isReadable и Mesh.isReadable.

Дополнительные оптимизации

Вы также можете применить дополнительные оптимизации через свойство Enable Dedicated Server Optimizations в окне Настройки игрока. Эти оптимизации удаляют такие ассеты, как Шейдеры и Шрифты. Однако применение этих оптимизаций может вызвать проблемы, если удаленные ассеты упоминаются в реализации игры.

Изъятое имущество:

  • Шейдеры
  • Шрифты

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

  • Используйте условную компиляцию для выборочного включения и исключения кода в зависимости от цели сборки.
  • Разделяйте код, специфичный для клиента и для сервера, с помощью реализаций классов.
  • Удаление дополнительных элементов из PlayerLoop в серверных сборках. См. PlayerLoop и PlayerLoopSystem.

Известные ограничения

Оптимизация выделенного сервера не применяется к контенту, созданному с помощью Scriptable Build Pipeline (SBP). Системы, которые зависят от SBP, такие как система Addressables и подсцены Entities, не получают выгоды от этой оптимизации.

Дополнительные ресурсы

  • Раздел оптимизации
  • Советы по оптимизации для Unity UI
  • Наилучшие методы оптимизации производительности в Unity