이 가이드에서는 Unity 플러그인을 사용하여 Unity 2017.4 이상에서 프레임 시간 데이터를 기록하고 업로드하는 방법을 설명합니다.
C 또는 C++를 사용하는 게임 엔진의 경우 네이티브 게임 엔진 가이드를 참고하세요.
배경
게임 환경의 핵심 구성요소는 렌더링 성능입니다. 렌더링 성능은 다음 두 가지 입력의 결과입니다.
- 프레임 속도: 프레임이 그려진 빈도입니다.
- 그래픽 품질 설정: 그래픽뿐만 아니라 시뮬레이션 충실도를 포함하여 프레임이 표시되는 충실도 수준입니다.
게임의 경우 우수한 렌더링 성능은 다음과 같이 정의됩니다.
- 안정적이고 일관된 프레임 속도(즉, 원하는 주파수로 렌더링되는 프레임의 비율) 구현
- 게임 유형에 따라 일반적으로 30 또는 60FPS의 안정성을 유지하면서 가능한 가장 높은 주파수로 프레임 렌더링
- 원하는 안정적인 프레임 속도를 달성하면서 화면 크기 및 밀도를 고려하여 사용자의 세부정보 수준 극대화
Android Frame Pacing 라이브러리는 프레임 시간의 많은 변동을 제한하여 게임에 안정적인 프레임 속도를 제공합니다. 프레임 시간의 나머지 변동은 게임플레이의 특정 장면에서 표시되는 세부정보 수준과 기기의 그래픽 기능으로 인해 발생합니다. Android Performance Tuner를 사용하면 게임플레이 도중 프레임 시간이 목표보다 느리거나 빠른 시점을 정확히 찾아내고 이러한 문제 및 기회를 다음과 상호 연관시킬 수 있습니다.
- 특정 품질 설정
- 게임의 특정 장면
- 특정 기기 모델 또는 기기 사양
데이터 기록 및 업로드
Tuning Fork 라이브러리는 Android Frame Pacing 라이브러리(또는 Frame Pacing 라이브러리가 없는 이전 Unity 버전의 경우 Unity 엔진)에서 각 프레임을 호출하는 틱 함수 중 하나를 사용합니다. 라이브러리 내에서 이 틱 정보는 히스토그램에 집계되며 이후에 HTTP 엔드포인트를 통해 Google Play에 주기적으로 업로드됩니다. 각 틱은 계측 키 및 주석과 연결된 것으로 기록됩니다. Unity 플러그인을 사용하여 주석을 정의합니다.
계측 키
계측 키는 프레임에서 틱이 시작되는 위치를 나타내며 각 틱 함수 호출에 전달되어야 하는 정수입니다. 이 작업은 Unity 플러그인에 의해 자동으로 실행됩니다. 게임에 관한 Unity 설정에서 Optimized Frame Pacing(최적화된 프레임 속도) 옵션이 사용 설정된 경우(Unity 버전 2019.3.14 이상에서 사용 가능) Android Performance Tuner는 Android Frame Pacing 라이브러리의 정보를 사용하여 향상된 측정항목을 보고합니다.
주석
주석은 틱이 기록될 때 게임이 어떤 작업을 하고 있는지에 관한 컨텍스트 정보를 제공합니다. 예를 들어 주석은 다음을 식별할 수 있습니다.
- 현재 게임 레벨
- 특정 장면이 로드 중인지 여부
- 화면에 '빅 보스'가 있는지 여부
- 관련 있는 기타 게임 상태 정보
주석은 Unity 플러그인에서 제공하는 대화상자에서 정의됩니다.
내부적으로 Tuning Fork 라이브러리는 Google의 프로토콜 버퍼 형식을 사용하여 주석 및 충실도 매개변수를 저장합니다. 프로토콜 버퍼는 확장 가능하고 구조화된 데이터를 위한 잘 정의된 다국어 프로토콜입니다. 자세한 내용은 프로토콜 버퍼 문서를 참고하세요.
충실도 매개변수
충실도 매개변수는 메시 세부정보 수준, 텍스처 해상도 및 앤티앨리어싱 방법과 같은 게임의 성능 및 그래픽 재현성에 영향을 줍니다. 주석과 마찬가지로 충실도 매개변수는 Unity 플러그인에서 제공하는 대화상자에서 정의됩니다.
메모리 및 CPU 오버헤드
게임플레이 도중 당황하는 일이 없도록 하기 위해 Tuning Fork 라이브러리에서 사용하는 모든 메모리는 초기화 시에 할당됩니다. 데이터의 크기는 계측 키 수, 가능한 주석 수 및 각 히스토그램의 버킷 수에 따라 다릅니다. 각 버킷에 대해 이러한 모든 수 x 4바이트의 배수입니다. 또한 이중 버퍼링 방식으로 제출할 수 있도록 모든 히스토그램 사본이 두 개 있습니다.
제출은 별도의 스레드에서 이루어지며 틱 호출을 차단하지 않습니다. 업로드 연결을 사용할 수 없다면 제출은 나중에 업로드되도록 큐에 추가됩니다.
틱 함수를 호출하는 데는 처리 오버헤드가 거의 없습니다. 단순히 히스토그램 버킷 배열로 색인을 계산하고 정수 카운트를 증가시킵니다.
웹 요청
라이브러리는 서버 엔드포인트에 다음과 같은 두 종류의 요청을 합니다.
- 초기화 시
generateTuningParameters
요청 - 게임플레이 도중에 주기적으로 서버에 데이터를 보내기 위한
uploadTelemetry
요청
오프라인 플레이어
초기화 시 사용 가능한 연결이 없다면 백오프 시간이 증가하면서 요청이 여러 번 다시 시도됩니다. 업로드 시 연결이 없다면 업로드가 캐시됩니다. 업로드는 임시 저장소에 파일로 저장됩니다.
요구사항
게임에서 플러그인을 사용하려면 다음과 같이 지원되는 Unity 버전을 사용해야 합니다.
- Unity 버전 2017.4 이상 및 .NET 버전 4.6
- APK 확장 파일을 사용하려면 Unity 2018.2 필요
- 프레임 속도 및 GPU 측정을 개선하려면 Unity 버전 2019.3.14 이상 필요
- Addressables 씬을 지원하려면 Unity 2019.3 이상 및 Addressables 패키지 1.19.4 이상 필요
Unity에서 Android Performance Tuner 통합
Unity에 Android Performance Tuner를 통합하는 방법에 관한 자세한 내용은 API 사용 설정을 참고하세요.