게임 모드 개입은 더 이상 개발자가 업데이트하지 않는 게임의 성능을 개선하기 위해 OEM (Original Equipment Manufacturers)에서 설정한 게임별 최적화입니다. 예를 들면 다음과 같습니다.
- WindowManager 백버퍼 크기 조정 사용
- 네이티브 GLES 드라이버 대신 ANGLE 사용
게임에서 Game Mode API를 지원하고 관리하여 OEM에서 제공하는 게임 모드 개입을 재정의하도록 할 수 있습니다.
Game Mode API 및 개입은 다음에서 사용할 수 있습니다.
- Android 12 기기 선택
- Android 13 이상을 실행하는 기기
각 게임은 다음을 수행할 수 있습니다.
- Game Mode API 동작을 구현합니다.
- OEM에 게임 모드 개입 설정을 제안합니다.
- 게임 모드 개입을 명시적으로 선택 해제합니다.
배경
이 섹션에서는 게임 모드 개입의 작동 방식과 각 모드에 맞게 게임을 최적화하는 방법을 설명합니다.
WindowManager 백버퍼 크기 조정
WindowManager 백버퍼 크기 조정 개입은 기기의 GPU 로드를 줄일 수 있습니다. 또한 목표 프레임 속도에서 게임을 실행할 때 배터리 소모를 줄일 수도 있습니다.
크기 조정을 사용 설정하면 GPU 전력이 최대 30%, 전체 시스템 전력 사용량이 10% 감소할 수 있습니다. 결과는 사용된 기기, 환경 조건, 동시 처리와 같은 기타 요소에 따라 달라질 수 있습니다.
GPU에 바인딩되어 속도 조절이 되지 않는 게임은 GPU 로드가 감소하면서 프레임 속도가 높아질 수 있습니다.
균일하지 않은 프레임 속도는 사용자가 성능을 인식하는 방식에 크게 영향을 미치므로 모든 게임은 속도 조절되는 것이 좋습니다.
FPS 제한
Android FPS 제한은 배터리 소모를 줄이기 위해 게임이 보다 안정적인 프레임 속도로 실행되도록 하는 게임 모드 개입입니다. 이러한 개입은 Android 13 또는 이후 버전에서 사용할 수 있습니다. 자세한 내용은 FPS 제한 개요를 참고하세요.
게임 모드 개입 평가
이 섹션에서는 adb 명령어를 사용합니다.
모드 설정
게임 모드 개입을 테스트하기 전에 앱의 게임 모드 구성 파일에서 게임 모드를 선택 해제해야 합니다. 그러지 않으면 플랫폼에서 이를 우회하고 게임 내 최적화만 따릅니다.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:supportsBatteryGameMode="false"
android:supportsPerformanceGameMode="false"
/>
(선택사항) 기존 기기 구성 백업
Pixel 또는 기타 기기의 경우 기기 구성에 사전 존재하는 게임 개입 구성이 있을 수 있습니다. 다음 명령어를 사용하여 구성을 쿼리할 수 있습니다.
adb shell device_config get game_overlay <PACKAGE_NAME>
쿼리가 null
를 반환하면 기존 구성을 무시합니다. 그렇지 않으면 저장하고 평가 후 재설정합니다.
개입 평가
WindowManager 백버퍼 크기 조절 개입을 자체적으로 평가하려면 다음 명령어를 사용하여 게임 모드 전체에 걸쳐 서로 다른 WindowManager 버퍼 크기 조절 값을 설정합니다.
adb shell device_config put game_overlay <PACKAGE_NAME>
mode=2,downscaleFactor=0.9:mode=3,downscaleFactor=0.5
위 예에서 mode=2
는 'Performance'이고 mode=3
는 'Battery Saver'입니다. downscaleFactor
값은 크기 조정 설정에 적용되는 백분율로 지정됩니다 (예: 0.7은 70%, 0.8은 80%). 90%(0.9) 크기 조정은 거의 무시할 수 있지만 50% (0.5)는 중대합니다.
경고: Android 12에서 하위 프로세스의 크기가 올바르게 조정되지 않을 수 있습니다. 특히 토스트와 팝업이 올바르게 렌더링되는지 확인합니다. 크기 조정 설정을 70% 이상으로 제한하는 것이 좋습니다.
새 크기 조정 값을 설정한 후 게임 모드 간에 전환하여 WindowManager 백버퍼 크기 조정 개입이 게임에 미치는 영향을 확인합니다.
adb shell cmd game mode [standard|performance|battery] <PACKAGE_NAME>
게임 모드를 선택할 때마다 게임을 다시 시작해야 합니다. 다운스케일링 개입을 사용하려면 앱을 다시 시작해야 합니다.
개입 거부
거부를 통해 게임에 개입이 적용되는지 여부를 제어할 수 있습니다. 각 개입에는 자체 거부 설정이 있습니다.
- 게임 모드 선택 및 선택 해제를 제어하는 데 사용되는 것과 동일한 구성 XML 파일이 개입 설정에도 사용됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<game-mode-config
xmlns:android="http://schemas.android.com/apk/res/android"
android:allowGameDownscaling="false"
android:allowGameFpsOverride="false"
/>
- 게임을 다시 빌드한 다음 다시 제출하여 거부합니다.
기본적으로 OEM(Original Equipment Manufacturers)에서 설정한 개입은 게임에서 명시적으로 사용하지 않도록 선택하지 않는 한 사용됩니다.
리소스
게임 성능 측정 및 최적화에 관한 자세한 정보는 다음을 참조하세요.
시스템 프로파일러 - CPU 사용량 및 그래픽 호출을 분석합니다.
Android GPU 검사기 - Android에 그래픽을 프로파일링합니다.
Android Frame Pacing Library - OpenGL 및 Vulkan 게임에서 원활한 렌더링 및 적절한 프레임 속도를 달성할 수 있습니다.
Android Performance Tuner - Android 기기 전체에서 대규모로 프레임 속도와 그래픽을 측정하고 최적화합니다.
전원 프로파일러 - 앱에서 필요한 것보다 더 많은 에너지를 사용하는 위치를 찾습니다.