Version: 2023.2
Language : English
Dedicated Server Player settings
Build your application for Dedicated Server

Dedicated Server optimizations

Dedicated Server build target performs optimizations for networked applications. The build target applies some optimizations automatically by default, while others are optional because their impact depends on the game’s implementation.

Automatic optimizations

By default, the Dedicated Server build target performs the following optimizations:

Audio Subsystem

The Dedicated Server build target deactivates the Audio Subsystem because builds don’t need audio support when running as a dedicated server. Disabling the Audio Subsystem reduces CPU load.

Lighting threads

The Dedicated Server build target removes process threads related to lighting because there’s no need to render lighting on a server build.

Player loop callbacks

The Dedicated Server build target disables the following PlayerLoop callbacks because they aren’t necessary for a server build.

GPU-only assets

The Dedicated Server build target removes GPU-only assets such as texture pixelThe smallest unit in a computer image. Pixel size depends on your screen resolution. Pixel lighting is calculated at every screen pixel. More info
See in Glossary
data for textures and meshThe main graphics primitive of Unity. Meshes make up a large part of your 3D worlds. Unity supports triangulated or Quadrangulated polygon meshes. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. More info
See in Glossary
vertex data, that the server doesn’t need. The build target preserves assets with CPU Read/Write access and assets in the Resource Folders.

Textures and meshes imported with CPU Read/Write access disabled are only accessible by the GPU, whereas the CPU can’t access them. Because the Dedicated Server build target doesn’t initialize a graphics device, there’s no need to include this data. Excluding this data reduces the memory usage of the executable.

Refer to the following lists to learn more about which assets the Dedicated Server build target removes and preserves.

Removed:

  • Textures with CPU Read/Write access disabled.
  • Vertex data for meshes with CPU Read/Write access disabled.

Preserved:

  • Textures with CPU Read/Write access enabled.
  • Vertex data for meshes with CPU Read/Write access enabled.
  • Assets in the protected Resource Folders.
  • Texture metadata (such as the texture size value).
  • Mesh data that internal systems that run on the CPU require (such as physics), even if CPU Read/Write is disabled.

Note: To learn more about CPU Read/Write access, refer to Texture.isReadable and Mesh.isReadable.

Additional optimizations

You also have an option to apply additional optimizations through Enable Dedicated Server Optimizations property in the Player SettingsSettings that let you set various player-specific options for the final game built by Unity. More info
See in Glossary
window. These optimizations remove assets such as ShadersA program that runs on the GPU. More info
See in Glossary
and Fonts. However, applying these optimizations may cause issues if the removed assets are referenced in the game’s implementation.

Assets removed:

  • Shaders
  • Fonts

In addition to the automatic optimizations applied through the Dedicated Server build target, you can apply the following implementation-specific optimizations manually.

  • Use conditional compilation to selectively include and exclude code depending on the build target.
  • Separate player-specific and server-specific code through class implementations.
  • Remove additional items from the PlayerLoop in server builds. Refer to PlayerLoop and PlayerLoopSystem.

Additional resources

Dedicated Server Player settings
Build your application for Dedicated Server