Unreal Engine에서 Android 동적 성능 프레임워크 (ADPF) 시작하기

Android 동적 성능 프레임워크 (ADPF)는 애플리케이션의 성능을 최적화하려는 개발자를 위한 Google의 강력한 도구입니다. ADPF는 열 API를 통해 기기 외부의 열 상태에 관한 실시간 정보를 제공하며, 이 정보는 애플리케이션의 그래픽 설정을 조정하는 데 사용됩니다.

Arm은 연구 목적으로 Unreal Engine과 ADPF를 사용하여 데모를 개발하여 ADPF가 게임 성능을 최적화하는 데 어떻게 사용되는지 조사했습니다.

ADPF는 열 상태를 모니터링하며 그에 따라 게임 엔진에서 그래픽 품질이 조정됩니다.

개발자를 염두에 두고 게임플레이 환경과 기기의 과도한 전력 소모에 영향을 주지 않으면서 사용자가 게임을 더 오래 플레이할 수 있도록 하는 것이 목표입니다.

시작하기 전에

데모를 자세히 살펴보기 전에 ADPF에 관한 공식 Google 문서를 살펴보는 것이 중요합니다. 이 문서는 ADPF 사용 방법에 관한 심층적인 통계와 안내를 제공하는 매우 유용한 리소스입니다.

그러나 맞춤설정 가능한 학습을 선호하는 경우 ADPF 샘플 저장소에 Android 애플리케이션에서 ADPF를 구현하는 실용적인 예시가 포함되어 있습니다.

그래픽 설정 조정

Unreal Engine 컨텍스트에서 성능을 유지하기 위해 그래픽 설정을 동적으로 조정할 수 있습니다.

ADPF에서 Thermal State Monitor와 Thermal Headroom API를 사용하여 열 제한을 모니터링했습니다. 그런 다음 기기에서 제한이 시작되면 그림자 품질, 반사 품질, 텍스처 품질과 같은 품질 설정을 조정할 수 있습니다.

Unreal Engine의 다음 그래픽 품질 설정은 다양한 설정을 수정하는 데 사용됩니다.

  • ViewDistanceQuality
  • ShadowQuality
  • GlobalIlluminationQuality
  • ReflectionQuality
  • AntiAliasingQuality
  • TextureQuality
  • VisualEffectQuality
  • PostProcessingQuality
  • FoliageQuality
  • ShadingQuality
  • OverallScalabilityLevel

실제 테스트

Arm은 모바일 그래픽 및 게임 기술을 연구하는 데 사용되는 자체 데모 게임을 만듭니다. 올해 Google은 그중 하나인 SteelArms 데모에서 ADPF를 테스트했습니다.

SteelArms는 다양한 수준의 그래픽 강도와 상당한 CPU 워크로드를 보유하고 있습니다. 최신 모바일 게임과 유사하게 빌드되므로 오늘날의 휴대전화에서 게임 동작을 모델링할 수 있습니다. 또한 Arm 기반 휴대기기의 게임에서 다양한 기술이 작동하는 방식을 테스트할 수 있습니다.

결과

그림 1: ADPF 유무에 따른 SteelArms 전체 화면 비교

위 이미지는 ADPF가 활성화되어 그래픽 설정을 조정할 때 가장 높은 화질 (시네마틱)과 가장 낮은 화질 (낮음)의 차이를 보여줍니다. 이 변화는 점진적이며 게임플레이 중에 사용자는 이를 느끼지 못합니다.

그림 2: ADPF 통합 게임: 화면 분할

왼쪽 (파란색 로봇)에는 가장 높은 그래픽 설정이, 오른쪽 (빨간색 로봇)에는 가장 낮은 그래픽 설정이 표시된 화면 분할 뷰

그림 3: ADPF 통합이 적용된 게임: 세부정보 비교
그림 4: ADPF 통합 게임: 나란히 표시

이전 그림 3과 4에서는 로봇의 동일한 뷰가 나란히 표시됩니다. 자세히 살펴보면 ADPF를 사용하여 조정된 그래픽 설정이 표시됩니다. 링의 바닥, 로봇의 어깨, 링의 로프, 관중을 확인해 보세요. 모두 약간 낮은 품질로 보이며 이는 ADPF를 사용했기 때문입니다.

제한이 임박하면 SteelArms 데모에서 이러한 효과가 축소되었습니다. 후처리 및 시각 효과에서 이러한 작은 감소를 발견하기는 어렵습니다. 또한 사용자는 일반적으로 재생 중에 이를 인식하지 못합니다. 즉, 게임플레이 환경에 영향을 주지 않으면서 게임의 시각적 환경 대부분을 유지할 수 있습니다. 게임의 전원 성능과 기기의 배터리 수명을 유지하면서 이 모든 작업을 할 수 있습니다.

앞서 언급한 바와 같이, 데모를 위해 가장 높은 품질 설정 이미지와 가장 낮은 품질 설정 이미지를 비교합니다. 따라서 자세히 살펴보면 여전히 차이가 보일 수 있습니다. 그러나 게임플레이 중에 다운스케일해도 사용자에게 거의 눈에 띄지 않으며 안정적인 게임플레이 환경을 유지할 수 있습니다.

결과

그림 5: ADPF를 사용 설정/사용 중지할 때의 FPS, 기기 온도, 열 상태, 헤드룸 비교(프레임 속도 약 57% 개선)

기기가 과열되지 않고 열 헤드룸 1.0 이내로 유지됩니다.

전력 소모량

그림 6: ADPF 사용 설정/사용 중지 시 전원 소모량 비교

ADPF 결과

ADPF를 사용 설정 및 중지했을 때의 결과는 앞의 그림에서 확인할 수 있습니다. 게임의 프레임 속도와 코어의 전원 소모량에 차이가 있음을 보여줍니다. ADPF를 사용 설정하면 프레임 속도가 최대 57% 향상됩니다. ADPF가 꺼져 있으면 GPU가 상당한 양의 전력을 소모합니다. 그러면 대형 CPU 코어에 GPU 워크로드와 일치하는 전원 스파이크가 발생합니다. 요청된 처리량을 따라잡기 때문입니다. 이에 비해 ADPF가 사용 설정된 경우 대형 CPU 코어는 제한에 응답하여 기기의 모든 코어의 전반적인 전원 소모량을 줄입니다.

결론

ADPF를 사용하면 게임의 전력 소비를 크게 개선할 수 있습니다. 이는 궁극적으로 게이머의 플레이 시간을 늘리고 배터리 수명을 개선하며 사용 중인 기기의 온도를 낮출 수 있다는 것을 의미합니다. 개발자 관점에서 ADPF는 게임의 올바른 프레임 속도를 유지합니다. 품질 설정을 축소할 수 있는 유연성을 제공하면서도 사용자에게 훌륭한 게임플레이 환경을 제공합니다.

최신 기기와 이전 기기 모두 ADPF를 사용하면 이점을 얻을 수 있습니다. 이를 통해 추가 최적화 작업 없이도 이전 세대 기기에서 게임을 높은 수준으로 실행할 수 있습니다.