# 전용 서버 최적화

> Provides information about optimizing the build with default and manual optimizations to reduce resource utilization.

전용 서버 빌드 타겟은 네트워크 애플리케이션에 대한 최적화를 수행합니다. 이 빌드 타겟은 기본적으로 몇 가지 최적화를 자동으로 적용하는 반면, 다른 최적화는 게임 구현에 따라 영향이 달라지므로 선택 사항입니다.

## 자동 최적화##automatic-optimizations

기본적으로 전용 서버 빌드 타겟은 다음 최적화를 수행합니다.

* [오디오 보조 시스템 비활성화](#AudioSubsystem)
* [조명 스레드 제거](#LightingThreads)
* [일부 플레이어 루프 콜백 제거](#PlayerLoopCallbacks)
* [GPU 전용 에셋 제거](#GpuOnlyAssets)

### 오디오 보조 시스템##audio-subsystem

전용 서버 빌드 타겟은 빌드가 전용 서버로 실행될 때 오디오 지원이 필요하지 않기 때문에 [오디오](/engine/6000.0/manual/audio/overview.md) [보조 시스템](/engine/6000.0/script-reference/unity-engine/subsystem.md)을 비활성화합니다. 오디오 보조 시스템을 비활성화하면 CPU 로드가 감소합니다.

### 조명 스레드##lighting-threads

전용 서버 빌드 타겟은 서버 빌드에 조명을 렌더링할 필요가 없기 때문에 조명과 관련된 프로세스 스레드를 제거합니다.

### 플레이어 루프 콜백##player-loop-callbacks

전용 서버 빌드 타겟은 다음 [PlayerLoop 콜백](/engine/6000.0/script-reference/unity-engine-low-level/player-loop.md)이 서버 빌드에 필요하지 않기 때문에 비활성화합니다.

* [`SendMouseEvents`](/engine/6000.0/script-reference/unity-engine-player-loop/pre-update/send-mouse-events.md)의 플레이어 업데이트 루프 등록
* [`UpdateAllRenderers`](/engine/6000.0/script-reference/unity-engine-player-loop/post-late-update/update-all-renderers.md)의 플레이어 업데이트 루프 등록
* [`PlayerUpdateCanvases`](/engine/6000.0/script-reference/unity-engine-player-loop/post-late-update/player-update-canvases.md)의 플레이어 업데이트 루프 등록
* 모든 오디오 콜백(예: [`UpdateAudio`](/engine/6000.0/script-reference/unity-engine-player-loop/post-late-update/update-audio.md))의 플레이어 업데이트 루프 등록
* 모든 UI 콜백(예: [`UIElementsUpdatePanels`](/engine/6000.0/script-reference/unity-engine-player-loop/pre-late-update/ui-elements-update-panels.md))의 플레이어 업데이트 루프 등록
* 모든 입력 콜백(예: [`UpdateInputManager`](/engine/6000.0/script-reference/unity-engine-player-loop/early-update/update-input-manager.md))의 플레이어 업데이트 루프 등록

### GPU 전용 에셋##gpu-only-assets

전용 서버 빌드 타겟은 서버에 필요하지 않은 텍스처 픽셀 데이터와 메시 버텍스 데이터와 같은 GPU 전용 에셋을 제거합니다. 빌드 타겟은 CPU 읽기/쓰기 권한이 있는 에셋과 [리소스 폴더](/engine/6000.0/manual/working-in-unity/assets-and-media/asset-workflow/scripting-assets/loading-resourcesat-runtime.md)에 있는 에셋을 보존합니다.

CPU 읽기/쓰기 권한이 비활성화된 상태로 임포트된 텍스처와 메시는 GPU에서만 액세스할 수 있고 CPU에서는 액세스할 수 없습니다. 전용 서버 빌드 타겟이 그래픽스 기기를 초기화하지 않으므로 이 데이터를 포함할 필요가 없습니다. 이 데이터를 제외하면 실행 파일의 메모리 사용량이 감소합니다.

전용 서버 빌드 타겟이 어떤 에셋을 제거하고 보존하는지 자세히 알아보려면 다음 리스트를 참조하십시오.

**제거된 항목**:

* CPU 읽기/쓰기 권한이 비활성화된 텍스처
* CPU 읽기/쓰기 권한이 비활성화된 메시에 대한 버텍스 데이터

**보존된 항목**:

* CPU 읽기/쓰기 권한이 활성화된 텍스처
* CPU 읽기/쓰기 권한이 활성화된 메시에 대한 버텍스 데이터
* 보호되는 [리소스 폴더](/engine/6000.0/manual/working-in-unity/assets-and-media/asset-workflow/scripting-assets/loading-resourcesat-runtime.md)에 있는 에셋
* 텍스처 [메타데이터](/engine/6000.0/manual/working-in-unity/assets-and-media/asset-workflow/asset-metadata.md)(예: 텍스처 크기 값)
* CPU 읽기/쓰기가 비활성화되어 있지만 CPU에서 실행되는 내부 시스템에 필요한 메시 데이터(예: [물리](/engine/6000.0/manual/physics-section.md))

**참고**: CPU 읽기/쓰기 액세스에 대한 자세한 내용은 [Texture.isReadable](/engine/6000.0/script-reference/unity-engine/texture/is-readable.md) 및 [Mesh.isReadable](/engine/6000.0/script-reference/unity-engine/mesh/is-readable.md)을 참조하십시오.

## 추가 최적화##additional-optimizations

Player Settings 창의 [Enable Dedicated Server Optimizations](/engine/6000.0/manual/platform-specific/dedicated-server/get-started/player-settings.md#Optimization) 프로퍼티를 통해 추가 최적화를 적용할 수도 있습니다. 이러한 최적화는 **셰이더** 및 **폰트** 같은 에셋을 제거합니다. 하지만 제거된 에셋이 게임 구현 과정에서 참조되는 경우 이러한 최적화를 적용하면 문제가 발생할 수 있습니다.

**제거된 에셋**:

* 셰이더
* 폰트

전용 서버 빌드 타겟을 통해 적용되는 자동 최적화 외에도 다음과 같은 구현별 최적화를 수동으로 적용할 수 있습니다.

* [조건부 컴파일](/engine/6000.0/manual/scripting/compilation-and-code-reload/script-compilation/conditional-compilation/platform-dependent-compilation.md)을 사용하여 빌드 타겟에 따라 코드를 선택적으로 포함하고 제외할 수 있습니다.
* 클래스 구현을 통해 플레이어별 코드와 서버별 코드를 분리할 수 있습니다.
* 서버 빌드의 PlayerLoop에서 추가 항목을 제거합니다. [PlayerLoop](/engine/6000.0/script-reference/unity-engine-low-level/player-loop.md) 및 [PlayerLoopSystem](/engine/6000.0/script-reference/unity-engine-low-level/player-loop-system.md)을 참조하십시오.

## 추가 리소스##known-limitations

* [Unity 최적화에 대한 이해](/engine/6000.0/manual/analysis/understanding-performance.md)
* [Unity UI 최적화 팁](https://unity.com/how-to/unity-ui-optimization-tips)
* [Unity에서 성능 최적화를 위한 베스트 프랙티스](https://unity.com/how-to/advanced-programming-and-code-architecture)
