PC용 Google Play 게임즈 PC 호환성 및 최적화

PC용 Google Play 게임즈를 사용하려면 게임의 PC 호환성 및 최적화를 변경해야 합니다. 이러한 변경사항을 통해 게임을 PC에서 실행하고 사용자 환경을 플랫폼에 맞게 최적화할 수 있습니다.

또한 PC용 Google Play 게임즈에는 그래픽, 기기 입력, 교차 기기 플레이 요구사항이 있습니다. 자세한 내용은 시작 가이드를 참고하세요.

x86-64 지원을 제외하고 PC 호환성 및 최적화를 변경할 때 PC용 Google Play 게임즈를 감지하도록 게임을 설정하고 플랫폼별 기능을 사용 중지하거나 사용 설정할 수 있습니다. 이렇게 하면 Android 모바일 및 PC 버전에 동일한 APK 또는 App Bundle을 사용할 수 있습니다.

다음은 이 페이지에 나온 요구사항 및 권장사항 요약입니다.

x86-64 ABI 아키텍처 포함

출시 프로세스에 필요

게임에 포함된 모든 라이브러리에는 x86-64 ABI 호환 버전이 있어야 플랫폼에서 최상의 성능과 안정성을 보장할 수 있습니다.

게임에서 64비트 x86 실행 파일을 제공하는 것이 기술적으로 불가능한 경우 검토팀에 예외를 요청해야 합니다. 게임이 예외로 전체 인증에 도달할 수는 없지만 카탈로그에 '플레이 가능한' 게임으로 배치될 수 있습니다.

라이브러리 컴파일

최상의 x86-64 프로세서 호환성을 보장하려면 라이브러리를 컴파일할 때 atom 명령 집합을 사용하지 마세요. 예를 들어 gcc를 사용할 때는 -march=atom 대신 -march=x86-64를 사용하세요.

Unity의 타겟 아키텍처

일부 Unity 2019 및 2020 버전은 Android에서 x86-64 아키텍처를 지원하지 않습니다. Unity 2019.4.31f1, 2020.3.19f1 또는 그 이상을 사용 중인지 확인합니다.

게임이 호환되는 Unity 게임 엔진 버전을 사용하는 경우 다음 안내를 따라 x86-64 Android 타겟을 사용 설정하세요.

  1. Player Settings(플레이어 설정) > Other Settings(기타 설정) > Configuration(구성) > Scripting Backend(스크립트 백엔드)로 이동한 후 드롭다운 메뉴에서 IL2CPP를 선택하여 IL2CPP 스크립트 백엔드를 사용 설정합니다.

  2. Unity 버전에 x86-64 Android 타겟을 사용 설정합니다.

    • Unity 2018 이하 버전: Player Settings(플레이어 설정) > Other Settings(기타 설정) > Target Architecture(타겟 아키텍처)로 이동하여 x86 체크박스를 선택합니다. Unity 2018은 x86 타겟만 지원하므로 x86-64를 빌드할 수 없습니다. 이 빌드에는 검토팀의 예외가 필요합니다. Google 담당자에게 문의하여 x86 예외를 요청하세요.

    • Unity 2019 장기적 지원(LTS) 버전 이상: Player Settings(플레이어 설정) > Other Settings(기타 설정) > Target Architectures(타겟 아키텍처)로 이동하여 x86-64(ChromeOS)를 사용 설정합니다.

PC용 Google Play 게임즈 감지

런타임 시 PC용 Google Play 게임즈 플랫폼을 감지할 수 있으므로 게임에서 플랫폼별 기능을 사용 설정 또는 사용 중지할 수 있습니다.

시스템 기능 com.google.android.play.feature.HPE_EXPERIENCE를 확인하여 게임이 PC용 Google Play 게임즈 플랫폼에서 실행 중인지 확인하세요.

Kotlin

    var isPC = packageManager.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
  

Java

    PackageManager pm = getPackageManager();
    boolean isPC = pm.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
  

C#

var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
var isPC = packageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
  

Android 수명 주기 이벤트 처리

PC용 Google Play 게임즈 환경에서 onPause(c++) 이벤트를 처리하는 것이 중요합니다. 플레이어가 에뮬레이터 오버레이를 활성화하면 게임이 표시되므로 onPause 이벤트를 수신 대기하지 못하면 사용자 환경이 저하될 수 있습니다.

UI 업데이트

특정 UI 요소와 동작은 PC에 적합하지 않으므로 업데이트해야 합니다.

필수:

  • 두 개 이상의 손가락이 필요한 UI 작업(멀티 터치 동작)을 대체합니다. 예를 들어 손가락을 모으거나 펼쳐 확대/축소하는 동작과 기타 멀티 터치 동작을 상응하는 마우스 입력과 키보드 입력으로 대체해야 합니다. 기기 입력 변경사항에 관한 자세한 내용은 입력 지원을 참고하세요.

권장:

  • 사용자에게 표시되는 모든 텍스트는 '탭'이 아닌 '클릭'으로 표시되어야 합니다.
  • 스크롤 가능한 목록에는 스크롤바가 있어야 합니다.
  • 사용자가 화면 이동이 가능한 영역에는 스크롤바 또는 빠르게 멀리 이동하는 다른 방법이 있어야 합니다.
  • 텍스트 입력을 위해 화면에 클릭 가능한 키보드를 표시하지 않습니다.
  • 모든 텍스트 항목은 텍스트 필드 경계 내에 있어야 합니다.
  • 표시되는 요소를 클릭하면 다음과 같이 되어야 합니다.
    • 요소의 표시된 경계 내에서 아무 곳이나 클릭하는 것은 허용됩니다.
    • 표시되는 요소 외부 영역을 클릭하는 것은 허용되지 않습니다.
  • 대화상자에는 닫기 버튼이 표시되어 있어야 합니다. 대화상자 경계 외부의 클릭은 감지하지 않습니다.

대부분의 권한 대화상자 사용 중지

PC용 Google Play 게임즈에서는 마이크 권한 외에는 권한 대화상자를 표시하지 않으므로 런타임에 이를 표시하거나 권한을 요청해서는 안 됩니다. 이전에 권한 대화상자를 표시했다면 더 이상 PC에 대화상자가 표시되지 않도록 게임을 업데이트해야 합니다.

지원되지 않는 Android 기능 및 권한

출시 프로세스에 필요

휴대전화 및 태블릿의 일반적인 하드웨어 기능 중 일부는 PC에서 사용할 수 없습니다. 카메라 또는 플레이어의 위치와 같은 하드웨어 기능이 여기에 해당합니다. PC에서 사용할 수 없는 기능을 필요로 하는 게임은 플레이어의 PC에 다운로드하여 설치할 수 없습니다. PC에서 누락된 기능에 대한 요청은 자동으로 실패합니다.

사용 가능한 기능의 전체 목록을 보려면 다음을 입력하세요.

adb shell pm list features

게임을 PC와 호환되도록 하려면 다음과 같이 변경합니다.

  • <uses-feature> 선언에 android:required="false"를 추가하여 앱 매니페스트에서 기능을 선택사항으로 표시합니다. 이는 앱 매니페스트에 이미 선언된 기능에만 적용됩니다.

  • 런타임 시 누락된 기능을 사용하면 안 됩니다. 모바일 트랙과 PC 트랙에서 동일한 APK를 사용하는 경우 런타임에 PC 환경임을 감지하고 관련 코드 경로를 사용하지 않습니다.

  • 런타임 시 지원되지 않는 Android 권한을 요청하면 안 됩니다. 모바일 트랙과 PC 트랙에서 동일한 APK를 사용하는 경우 런타임에 PC 환경임을 감지하고 관련 코드 경로를 사용하지 않습니다. 매니페스트는 업데이트할 필요가 없습니다.

앱 매니페스트 호환성에 관한 자세한 내용은 Chromebook 앱 매니페스트 호환성 가이드를 참고하세요.

기능 테스트 요구사항

Google Play Console에 첫 번째 테스트 빌드를 제출하기 전에 다음 하드웨어 기능을 삭제합니다.

  • android.hardware.wifi
  • android.hardware.bluetooth
  • android.hardware.camera
  • android.hardware.location

이러한 기능 중 일부는 호환성 문제로 pm list features를 실행할 때 지원되는 것으로 표시될 수 있지만 구현이 완성되지 않았습니다. android.hardware.wifi 기능을 삭제하는 방법에 관한 자세한 내용은 연결 상태 및 연결 측정 모니터링을 참고하세요. 지원되지 않는 기능의 전체 목록은 Chromebook 앱 매니페스트 호환성 가이드를 참고하세요.

품질 테스트 요구사항

흔히 사용되는 다음 하드웨어 기능은 PC와 호환되지 않으므로 Google Play Console에 최종적으로 제출하기 전에 이를 삭제해야 합니다.

  • android.hardware.audio.pro
  • android.hardware.bluetooth
  • android.hardware.camera
  • android.hardware.consumerir
  • android.hardware.location
  • android.hardware.nfc
  • android.hardware.sensor.light
  • android.hardware.sensor.accelerometer
  • android.hardware.sensor.barometer
  • android.hardware.sensor.compass
  • android.hardware.sensor.gyroscope
  • android.hardware.sensor.proximity
  • android.hardware.telephony
  • android.hardware.touchscreen
  • android.hardware.usb.accessory
  • android.hardware.usb.host
  • android.hardware.wifi
  • android.software.midi

지원되지 않는 권한

흔히 사용되는 다음 권한은 PC에서 지원되지 않으므로 게임에서 PC용 Google Play 게임즈에 대한 이 권한을 사용 중지해야 합니다.

  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_WIFI_STATE
  • android.permission.BLUETOOTH
  • android.permission.CAMERA
  • android.permission.FOREGROUND_SERVICE
  • android.permission.GET_ACCOUNTS
  • android.permission.INSTALL_PACKAGES
  • android.permission.READ_CONTACTS
  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.READ_PHONE_STATE
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.REQUEST_INSTALL_PACKAGES
  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.USE_CREDENTIALS
  • android.permission.WRITE_EXTERNAL_STORAGE
  • android.permission.WRITE_SETTINGS
  • com.google.android.gms.permission.ACTIVITY_RECOGNITION

외부 웹사이트 및 WebView

브라우저 인텐트는 PC용 Google Play 게임즈 환경의 웹브라우저가 아닌 PC의 기본 웹브라우저에 로드됩니다. 이는 대부분의 상황에서 플레이어에게 이상적인 환경입니다.

포팅을 쉽게 하기 위해 PC용 Google Play 게임즈는 WebView를 지원합니다. 이는 PC용 Google Play 게임즈 환경에서 열리므로 일반적인 데스크톱 브라우저가 없습니다. 따라서 서비스 약관, 개인정보처리방침 또는 기타 유사한 콘텐츠를 공유하기 위해 WebView를 사용했다면 브라우저 인텐트를 호출해야 합니다.

지원되지 않는 Google Play 서비스 API 사용 중지

출시 프로세스에 필요

PC용 Google Play 게임즈는 Google Play 서비스 API 중 일부만 포함하는 Google Play 서비스 자체 대안을 제공합니다. 애플리케이션이 PC에서 생략되거나 지원되지 않는 모듈에 크게 의존하지 않는지 확인해야 합니다. 일부 모듈의 경우 사용할 수는 있지만 관련 기능이 항상 지원되는 것은 아니라는 점에 유의하세요. 예를 들어 PC용 Google Play 게임즈를 종료하면 Firebase 클라우드 메시징이 작동하지 않습니다.

지원되는 모듈

다음 모듈은 현재 PC용 Google Play 게임즈에서 제공 및 지원되며 추가 기능 지원 계획도 있습니다.

제한적 지원

다음 모듈은 부분적으로 작동합니다. Google에서는 이러한 모듈을 PC용 Google Play 게임즈에서 지원하기 위해 최선을 다할 예정이나 기능을 보장할 수는 없습니다.

지원되지 않음

다음 모듈은 PC용 Google Play 게임즈에서 지원되지 않지만 실패하더라도 PC용 Google Play 게임즈에 문제가 발생하지는 않습니다.

손상됨

출시 프로세스에 필요

다음 모듈은 PC용 Google Play 게임즈에서 예기치 않은 동작을 유발할 수 있으므로 PC에서 사용하면 안 됩니다.

범위 지정 저장소 사용 설정

출시 프로세스에 필요

이 섹션은 게임이 외부 저장소를 읽거나 저장소에 쓰는 경우 적용됩니다. 범위 지정 저장소 적용은 저장소를 읽고 쓰기 위한 대체 방법으로 필요합니다. 범위 지정 저장소를 적용하면 다음과 같은 민감한 권한을 요구하는 메시지가 플레이어에게 더 이상 표시되지 않습니다.

  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE

범위 지정 저장소에 관한 자세한 내용은 다음을 참고하세요.

애널리틱스

기존 Google 애널리틱스 제품은 PC용 Google Play 게임즈에서 작동하지 않습니다. 게임에 이러한 상황이 발생하면 Google 애널리틱스 4로 이전해야 합니다.

이는 현재 Google 애널리틱스 360을 사용하는 경우에만 게임에 영향을 미칩니다. Firebase SDK를 사용하여 게임의 애널리틱스 이벤트를 추적하고 있고 Google 애널리틱스 콘솔에서 게임을 속성으로 볼 수 있는 경우에는 추가 작업을 실행할 필요가 없습니다.