Оптимизация выделенного сервера
Цель сборки Dedicated Server выполняет оптимизацию для сетевых приложений. Цель сборки применяет некоторые оптимизации автоматически по умолчанию, в то время как другие являются необязательными, поскольку их влияние зависит от реализации игры.
Автоматическая оптимизация
По умолчанию цель сборки Выделенный Сервер выполняет следующие оптимизации:
- Отключает аудиоподсистему
- Удаляет осветительные нити
- Убирает некоторые обратные вызова из петли игрока
- Удаляет только GPU активы
Звуковая подсистема
Цель сборки Выделенного Сервера отключает Аудио 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