ADPF란 무엇인가요?
안드로이드 동적 성능 프레임워크(ADPF)는 개발자들이 앱의 수명 주기 동안 성능 안정성과 리소스 관리를 더욱 효과적으로 제어할 수 있도록 다양한 디바이스 정보를 제공합니다. 모바일 디바이스의 열 관리는 FPS와 배터리 사용량을 통해 추정되었으나, ADPF를 통한 실시간 열 정보 제공으로 개발자들은 배터리 과열을 방지하고 시스템의 수동적 성능 조절에 앞서 앱 콘텐츠를 조정할 수 있게 되었습니다. 최근 구글은 ADPF의 기능을 즉시 사용할 수 있게 하는 언리얼 플러그인을 GitHub에 공개하였습니다. 이 플러그인을 사용하면, 앱은 Unreal의 SetQualityLevels() 함수를 호출하여 열 지표에 따라 확장성 수준을 조정하고, 런타임 중에 개발자가 설정한 그래픽 설정에 맞춰 동적으로 변경할 수 있습니다.
Mori: 프로젝트 날다람쥐
그림 1: 실내 씬 트리 할로우와 실외 씬 숲의 모리
모리는 시베리아 날다람쥐의 숲 속 달리기와 활공을 통해 ImmortalisGPU의 최신 성능과 기능을 선보이는 사내 데모 프로젝트입니다. 언리얼 엔진 5.3을 사용하여 개발된 이 게임은, 나무 구멍에서 휴식을 취하는 날다람쥐로 시작하여, 루멘 기술로 글로벌 조명을 시뮬레이션해 사실적인 빛과 그림자를 렌더링합니다. 플레이어는 시작 버튼을 누르면, 잎사귀와 지형이 풍부한 침엽수림 속으로 진입하여 숨겨진 보물을 찾게 됩니다. 숲의 장면은 Vulkan Shader Model 5를 사용하여 모바일 기기에서 PBR 머티리얼과 수백만 개의 트라이앵글을 표현하고, 고품질 모션 블러로 그래픽을 향상시켜 콘솔급 품질을 제공합니다.
이 게임은 낮음, 중간, 높음의 세 가지 그래픽 품질 수준을 제공합니다. 각 수준은 폴리지, 시야 거리, 그림자, 포스트 프로세싱 및 텍스처 등 다양한 그래픽 설정을 조정합니다. 각 설정에 따른 시각적 성능은 관련 다이어그램에서 확인할 수 있습니다.
그림 2: 모리의 4가지 그래픽 품질 레벨의 확장성.
에픽 설정에서 눈에 띄는 깊이 필드 효과를 확인할 수 있습니다. 설정을 '높음'에서 '낮음'으로 조정하면 오른쪽 부시의 세부 수준이 조절됩니다. '중간' 설정에서는 그림자가 거칠어지고 화면 비율 때문에 에일리어싱이 발생합니다. '낮음' 설정에서는 조명, 식생, 선명도가 크게 감소합니다. 그래픽 품질을 '중간' 이상으로 유지하는 것이 게임의 시각적 경험을 저하시키지 않고 즐기는 데 도움이 됩니다.
Vivo X90S와 X100에서 30분간 게임 플레이를 테스트한 결과, 플레이어는 그래픽 설정을 조절하지 않고 '에픽' 품질로 게임을 진행했습니다. 차트를 통해 확인할 수 있듯이, 헤드룸이 빠르게 쌓이며 프레임 속도에 큰 변동이 있었습니다. 5분 후, 휴대폰이 과열되어 자동으로 주파수가 제한되며 프레임 속도가 감소합니다. 10분이 지나면 헤드룸이 90% 이상 쌓여 추가적인 주파수 감소와 프레임 속도 저하가 발생합니다.
그림 3: ADPF 적용 전 성능 및 디바이스 상태 차트
확장성을 위해 무엇을 구성했나요?
ADPF 설치 및 활성화 시, 게임의 기본 헤드룸 스케일에 따라 그래픽 설정이 자동으로 조정됩니다. 에픽 설정에서는 그림자 텍스처 크기, DistanceScale, Quality가 최대로 설정되며, 포스트 프로세스의 스크린 퍼센티지와 블룸 퀄리티가 적용됩니다. 높음 및 중간 설정에서는 그림자 텍스처 크기가 절반으로 감소하고, 품질이 단계적으로 낮아지며, 포스트 프로세스의 스크린 퍼센티지는 각각 80%와 60%로 설정됩니다. 블룸 퀄리티도 각 설정에 맞춰 줄어듭니다. 낮은 설정에서는 모든 설정이 최소화되며, 그림자의 최대 해상도는 512로, DistanceScale은 절반으로 감소합니다. 포스트 프로세스의 스크린 퍼센티지는 50%로, 블룸 퀄리티는 1로 설정되며, 기타 모든 설정은 언리얼 엔진의 기본 설정을 따릅니다.
Setting | Epic (L3) | High (L2) | Medium (L1) | Low (L0) |
Shadow Texture Size | 2048 | 1024 | 1024 | 512 |
Shadow Distance scale | 1 | 1 | 1 | 0.5 |
Shadow Quality | 4 | 3 | 2 | 1 |
Screen Percentage | 100% | 80% | 60% | 50% |
Bloom Quality | 5 | 4 | 2 | 1 |
차트에서 볼 수 있듯이 그래픽 설정을 자동으로 조정한 후 게임의 헤드룸이 상당히 안정화되어 X100은 60 FPS, X90S는 약 55 FPS를 유지합니다.그러나 자세히 살펴보면 게임이 빠르게 최저 품질 설정으로 빠르게 전환하여 FPS를유지하고 발열을 관리합니다. 이 좋은 성능을유지하지만, 장시간 사용 낮은 품질설정은 이상적이지 않습니다 .
그림 4: ADPF 적용 후 성능 및 디바이스 상태 차트
개발자가 확장성을 통해 더 많은 것을 할 수 있는 것은 무엇인가요?
플러그인의 기본 헤드룸 스케일 값이 임계값을 초과하거나 그 이하로 떨어지면즉시그래픽 설정을 전환하는 것을 발견했습니다. 이로 인해 그래픽 품질이 낮아진 후 쿨다운이 성공한 후 그래픽 품질이 빠르게 높아질 수 있으므로 시각적 깜박임이 발생할 수 있습니다. 따라서 전환 로직을 게임 레이어에서 제어하도록 변경하여 스케일 값을 조정할 수 있도록 하고, 가열과 냉각이 동일한 값을 공유하지 않도록 하여 품질 저하가 온도에 영향을 미칠 수 있는 충분한 시간을 확보했습니다( ).
그림 5: Mori에 ADPF를 통합하기 위한 UI
위에서 언급한 조정 외에도 개발자는AndroidScalability.ini 파일에서 파라미터를 수정할수 있을 뿐만 아니라 게임 레이어에서 그래픽 설정 전환을 위한 콜백 ()을 추가할 수도 있습니다. 이를 통해foliage.MinLOD, 컬 거리, 최대 그리기 거리, FPS 잠금 등을 조정하는 등 콘솔 명령을 통해추가 제어가 가능합니다.
Setting | Epic (L3) | High (L2) | Medium (L1) | Low (L0) |
foliage.MinLOD | 0 | 1 | 2 | 2 |
Cull Distance (Grass) | 2000~2500 | 1500~2000 | 1000~1500 | 500~1000 |
Max Draw Distance | 16000 | 15000 | 14000 | 13000 |
FPS locking | 60 | 45 | 30 | 30 |
Table 1: Recommended advanced settings by graphics level
그림 6: 블루프린트의 각 그래픽 레벨에 대한 고급 설정 예시
차트에서 볼 수 있듯이 화질을유지하는세부 컨트롤이 추가되면서 그래픽 설정은 최대 중간으로만 낮아졌습니다. 성능과 온도도 안정화되어 에픽 설정의 경우 고정 프레임 속도가 60 FPS, 높음 설정의 경우 45 FPS, 중간 이하 설정의 경우 30 FPS로 유지됩니다.
그림 7: 추가 구성으로 ADPF를 적용한 후의 성능 및 디바이스 상태 차트
결론
ADPF는 개발자가 휴대폰의 상태에 따라 그래픽 품질을 세밀하게 조정하고 제어할 수 있도록 하여 더 나은 게임 환경을유지하는 데효과적으로 도움이 됩니다. 휴대폰의 과열을 방지하고 배터리 소모를 해결하여 플레이어의 배터리 소모 없이 전체 프로세스가 시각적으로 만족스러울 수 있도록 합니다. ADPF를 활성화하면 Vivo X90S와 Vivo X100의 최종 배터리 방전 곡선이 느리게 감소하여 전력 소비가 개선되었음을 알 수 있습니다. 짧은 시간 내에 게임 품질을 크게 개선할 수 있으므로 개발자가 직접 이 간편하고 빠른 통합 프로세스를 시도해 볼 것을 권장합니다.
리소스:
Original topic