# 월드 성능 최적화

## 퍼포먼스 가이드

### 개요

퍼포먼스 가이드 기능을 통해 FPS, Draw Call, 메모리 사용량 등 게임 성능과 관련된 주요 지표를 **스튜디오 내에서 실시간으로 확인**할 수 있습니다.

이를 통해 크리에이터는 게임 내 프레임 드랍, 렌더링 지연 등 성능 저하 요소를 사전에 파악하고 최적화 작업을 효과적으로 수행할 수 있고, 궁극적으로 전반적인 안정성을 확보하여 사용자에게 보다 부드럽고 쾌적한 게임 플레이 경험을 제공할 수 있습니다.

### 사용 방법

퍼포먼스 가이드는 OVERDARE Studio 최상단 탭 영역에서 **Play탭**을 선택하면 출력되는 **Stat 버튼**을 클릭해서 표시할 수 있습니다.

<figure><img src="/files/DhZ4WvU9GHFS7XY47JKr" alt=""><figcaption></figcaption></figure>

퍼포먼스 가이드는 스튜디오의 뷰포트 화면에 출력되며, 테스트 플레이 실행 중 각 성능 지표의 변화를 실시간으로 확인할 수 있습니다. 이를 통해 플레이어의 위치 이동, 오브젝트 생성, 이펙트 발동 등 다양한 게임 상황에서의 성능 변화를 직관적으로 파악하고, 상황별 최적화 작업에 활용할 수 있습니다.

<figure><img src="/files/QHrnWo8veMMnbq1pbtGT" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th>항목</th><th width="311.4560546875">설명</th><th>권장 수치</th></tr></thead><tbody><tr><td>FPS (Frames Per Second)</td><td>초당 화면에 그려지는 프레임 수.<br>높을수록 부드러운 화면을 제공함.</td><td>30 이상</td></tr><tr><td>CPU Usage</td><td>CPU의 사용 비율.<br>높을 경우 다른 프로세스에 영향을 줄 수 있음.</td><td>70% 이하</td></tr><tr><td>GPU Usage</td><td>GPU의 사용 비율.<br>렌더링 및 그래픽 처리에 영향을 줌.</td><td>85% 이하</td></tr><tr><td>Memory Usage</td><td>전체 메모리 사용량.<br>메모리 초과 시 게임 충돌 또는 성능 저하 유발 가능.</td><td>3GB 이하</td></tr><tr><td>Texture Memory</td><td>텍스처 데이터에 사용되는 메모리 용량.<br>너무 많을 경우 GPU 과부하 발생 가능.</td><td>150MB 이하</td></tr><tr><td>Texture Count</td><td>사용 중인 텍스처 개수.<br>텍스처가 많을수록 메모리 및 렌더링 부담 증가.</td><td>200개 이하</td></tr><tr><td>Mesh Tri Count</td><td>화면에 그려지는 메시의 삼각형 수.<br>너무 많을 경우 렌더링 속도 저하.</td><td>30만개 이하</td></tr><tr><td>Draw Calls</td><td>렌더링을 위해 CPU에서 GPU로 보내는 명령 수.<br>수치가 높을수록 성능 저하 위험.</td><td>200 이하</td></tr><tr><td>Network</td><td>네트워크 트래픽 및 지연 시간.<br>통신 응답성에 큰 영향을 줌.</td><td>20KB/s 미만, 80ms 미만</td></tr></tbody></table>

### 주의 사항

* 스튜디오 자체에서 사용하는 리소스가 측정에 포함되어, 실제 모바일 기기에서의 성능과 차이가 발생할 수 있습니다.\
  (특히 메모리 사용량이나 렌더링 성능 지표는 모바일 환경보다 높게 나타날 수 있습니다.)
* 멀티 테스트 플레이 기능을 사용할 경우, CPU, 메모리, 네트워크 사용량 등 성능 지표가 단일 플레이 대비 높게 측정될 수 있습니다.\
  (이는 실제 다인 플레이 환경을 시뮬레이션하는 데 유용하지만, 단일 클라이언트 성능과는 구분해서 해석해야 합니다.)
* 뷰포트 해상도 설정에 따라 GPU 사용량 및 FPS 수치에 영향을 줄 수 있습니다.
* 스튜디오가 실행되는 PC의 다른 백그라운드 프로그램에 의해서도 성능 수치가 달라질 수 있으므로 테스트 환경을 가능한 한 통제된 상태로 유지하는 것이 좋습니다.

### 활용 예시

* FPS를 안정적으로 유지할 수 있도록 점검하고, 특정 구간에서 프레임 드랍이 발생할 경우 해당 위치의 연산, 이펙트, 스크립트 등을 점검해 최적화합니다.
* CPU와 GPU 사용량이 일정 수준으로 유지되도록 체크하고, 특정 상황에서 급등하는 경우 해당 시점의 연산량, 병목 지점을 파악하여 처리 로직을 개선합니다.
* 장시간 테스트 플레이 중 메모리 사용량이 지속적으로 증가하는지 확인하여, 메모리 누수나 불필요한 오브젝트의 지속적인 유지 여부를 점검하고, 정리 루틴(예: Destroy(), 참조 변수 nil 할당)을 삽입해 안정화합니다.
* 텍스처 사용량이 과도할 경우 GPU 과부하나 로딩 지연을 유발할 수 있으므로, 고해상도 텍스처를 필요한 범위 내에서만 사용하고, 에셋의 해상도 조정을 통해 최적화합니다.
* 캐릭터 또는 환경의 메시 트라이 수가 많을 경우 GPU 렌더링 부담이 커지므로, 필요 이상으로 복잡한 메시를 단순화하여 퍼포먼스를 확보합니다.
* 드로우콜이 지나치게 많으면 CPU→GPU 간 호출 비용이 증가하므로, 오브젝트 배치를 합치거나, 머터리얼과 셰이더를 통일하는 방식으로 드로우콜을 최소화할 수 있습니다.
* 네트워크 트래픽이 짧은 시간 내 급증하면 서버 처리 지연이나 지연시간 상승의 원인이 될 수 있으므로, 과도한 패킷 전송을 유발하는 이벤트(예: 반복 업데이트, 고빈도 위치 전송 등)를 제어하고, 필요 시 전송 주기를 조정하여 트래픽을 최적화합니다.

## 월드 성능 분석

### 개요

OVERDARE App에 퍼블리시된 월드를 대상으로, **모바일 환경**에서의 실행 성능을 분석할 수 있습니다. FPS 안정성, 드로우 콜 수, 렌더링 시간, 메모리 사용량 등의 주요 성능 지표를 기반으로 월드 실행 중 발생하는 병목 현상을 진단하고, 이를 바탕으로 **저사양 기기에서도 원활하게 실행**될 수 있도록 최적화 작업에 활용할 수 있습니다.

본 기능은 현재 **실험적 기능(Experimental)** 으로 제공되며, 향후 크리에이터들이 보다 정밀한 성능 개선 방향을 설정할 수 있도록 지속적으로 고도화될 예정입니다.

### 사용 방법

OVERDARE App에서 월드에 입장한 다음, 화면 좌상단의 **채팅창 활성화 버튼**을 누른 다음, **채팅 입력창 영역(Tap here to chat)**&#xC744; 터치합니다.

<figure><img src="/files/nW3YA2EuJ8Cxg4Dxkg1R" alt=""><figcaption></figcaption></figure>

**profile on**을 입력한 다음, 채팅을 전송합니다.

<figure><img src="/files/6SodgGgXhUwsiEtS0uuc" alt=""><figcaption></figcaption></figure>

이제 화면 좌상단에 월드 성능 정보가 표시됩니다.

<figure><img src="/files/4TY6hlth1qX6yaUigWdK" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="234">항목</th><th>설명</th></tr></thead><tbody><tr><td>FPS (Frames Per Second)</td><td>초당 화면에 그려지는 프레임 수.<br>높을수록 부드러운 화면을 제공함.</td></tr><tr><td>Frame</td><td>프레임 하나를 처리하는 데 걸리는 시간 (33.33ms = 약 30FPS)</td></tr><tr><td>Game</td><td>게임 로직 처리에 소요된 시간</td></tr><tr><td>Draw</td><td>드로우 콜 수행에 걸리는 시간 (GPU 렌더링 요청)</td></tr><tr><td>RH</td><td>RHI(Render Hardware Interface) 작업에 소요된 시간</td></tr><tr><td>Draw Calls</td><td>렌더링을 위해 CPU에서 GPU로 보내는 명령 수.<br>수치가 높을수록 성능 저하 위험.</td></tr><tr><td>Primitives</td><td>렌더링된 기본 도형(삼각형 등)의 수</td></tr><tr><td>Device Temp</td><td>현재 기기의 온도 (AOS 디바이스용)</td></tr><tr><td>Temp Status</td><td>현재 기기의 온도 (iOS 디바이스용)</td></tr><tr><td>[OS API] Memory</td><td>지원 예정</td></tr><tr><td>[UE] Memory</td><td>전체 메모리 사용량</td></tr></tbody></table>

### 활용 예시

OVERDARE App의 월드 성능 분석 기능과 **퍼포먼스 가이드**를 함께 활용하면, Studio 환경에서 보다 체계적인 최적화 작업이 가능합니다.

월드 실행 중 수집된 FPS, 드로우 콜, RHI 처리 시간 등 다양한 성능 데이터를 바탕으로 성능 저하 구간을 식별하고, 퍼포먼스 가이드의 권장 수치를 참고하여 모델 구조, 라이트 사용, 스크립트 구조 등 전반적인 콘텐츠 구성을 개선할 수 있습니다.

## 모바일 저사양 최적화 가이드

모바일 저사양 최적화는 **다양한 성능의 기기에서도 게임이 원활하게 동작하도록 보장**하기 위해 필수적입니다. 이를 통해 사용자 이탈을 줄이고, **더 넓은 유저층**을 확보하며, 전반적인 플레이 경험의 안정성과 일관성을 유지할 수 있습니다.

아래의 가이드를 준수하면 OVERDARE 전체 유저의 99.9%에게 **동등하고 쾌적한 플레이 경험**을 안정적으로 제공할 수 있습니다.

### 저사양 기기 정의

OVERDARE에서 저사양 기기는 PowerVR Rogue GE8320과 같은 저사양 GPU를 사용하는 **Galaxy A04e(SM-A042F/DS)** 기종을 저사양 기기로 정의합니다.

GE8320 같은 저사양 GPU 기기를 보유하고 있다면 **해당 기기에서의 테스트를 권장**합니다. 저사양 환경에서의 안정적인 실행 여부를 확인하는 데 도움이 됩니다.

### 저사양 기기 최적화 가이드라인

월드에 미리 배치된 **정적(static) 배경 요소**는 리소스 예산(Resource Budget)을 아래와 같이 설정하는 것을 권장합니다:

* 화면에 보이는 Vertex 최대 갯수 : 70,000 이하
  * 저사양 기기에서는 Tri나 Primitive보다 **Vertex 수 관리가 더 중요**하므로, Vertex를 우선적으로 최적화하세요.
  * 가능하다면 **하나의 메시가 700개 이하의 Vertex로 구성**되도록 제작하는 것이 이상적입니다.
* 화면에 보이는 최대 드로우콜 : 70 이하
* 텍스쳐 : 512x512 기준 100개 이하

ParticleEmitter와 같은 **이펙트(VFX)**&#xB294; 다음의 기준을 참고하세요:\\

* 화면에 보이는 Vertex 최대 갯수 : 15,000 이하
* 화면에 보이는 최대 드로우콜 : 30 이하


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.overdare.com/korean/manual/studio-manual/game-development/world-performance-optimization.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
