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

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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

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

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

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

x86 ABI 아키텍처 포함

출시 프로세스에 필요

게임에 포함된 모든 라이브러리에는 x86 ABI 호환 버전이 있어야 플랫폼에서 최상의 성능과 안정성을 보장할 수 있습니다. Google Play 게임즈는 32비트 버전과 64비트 버전을 모두 지원하지만, 요구사항을 충족하기 위해서는 버전을 하나만 선택해야 합니다.

라이브러리 컴파일

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

Unity의 타겟 아키텍처

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

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

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

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

    • Unity 2018 이하 버전: Player Settings(플레이어 설정) > Other Settings(기타 설정) > Target Architecture(타겟 아키텍처)로 이동하여 x86 체크박스를 선택합니다.

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

게임 엔진 지원을 극대화하려면 x86 및 x86-64 지원을 모두 사용 설정하거나 32비트 메모리 공간으로 제한되지 않도록 x86-64만 사용 설정하는 것이 좋습니다.

Unity 2018은 x86 타겟만 지원하므로 x86-64 지원을 건너뛸 수 있습니다. 그러나 64비트 요구사항으로 인해 Android에서 해당 빌드를 출시할 수 없습니다. 이 경우 Google Play 게임즈를 위한 별도의 빌드를 유지해야 합니다.

Google Play 게임즈 감지

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

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

Kotlin

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

자바

    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 수명 주기 이벤트 처리

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

UI 업데이트

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

필수:

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

권장:

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

권한 대화상자 사용 중지

Google Play 게임즈는 권한 대화상자를 표시하지 않으므로 권한을 요청하기 전에 표시하려고 해서는 안 됩니다. 이전에 표시했다면 게임을 업데이트하여 더 이상 PC에 표시되지 않도록 해야 합니다.

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

출시 프로세스에 필요

PC에서는 휴대전화 또는 태블릿에서 사용할 수 있는 일부 Android 기능에 액세스할 수 없습니다. 카메라 같은 하드웨어 기능과 사용자 위치 같은 기타 기능이 여기에 해당합니다. 따라서 지원되지 않는 Android 기능 또는 권한을 게임에 사용해서는 안 됩니다. PC에서 지원되지 않는 권한 액세스를 게임에서 요청하면 요청이 자동으로 실패합니다.

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

  • 앱 매니페스트에서 Google Play 게임즈가 지원하지 않는 모든 기능의 <uses-feature> 선언에 android:required="false"를 추가합니다. 이는 앱 매니페스트에 이미 선언된 기능에만 적용됩니다.

  • PC에서 지원되지 않는 하드웨어 및 소프트웨어 기능을 사용하는 게임의 기능을 사용 중지합니다. 모바일 게임과 동일한 APK를 사용 중인 경우 그러한 기능을 PC에서 조건부로 사용 중지할 수 있습니다.

  • 지원되지 않는 Android 권한 요청을 게임에서 사용 중지하고 이러한 권한에 종속된 기능도 사용 중지합니다. 모바일 게임과 동일한 APK를 사용하는 경우 그러한 변경을 PC에서 조건부로 진행할 수 있습니다. 매니페스트에 선언된 권한은 변경해서는 안 됩니다.

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

기능 테스트 요구사항

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

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

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.microphone
  • 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에서 지원되지 않으므로 게임에서 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.RECORD_AUDIO
  • 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

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

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

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

출시 프로세스에 필요

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

지원되는 모듈

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

제한적 지원

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

지원되지 않음

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

손상됨

출시 프로세스에 필요

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

범위 지정 저장소 사용 설정

출시 프로세스에 필요

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

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

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

PC 버전 게임에서 모바일 광고 사용 중지

출시 프로세스에 필요

PC에 맞게 게임을 최적화하려면 PC 버전에서 모바일 광고를 사용 중지해야 합니다. 모바일 광고는 PC와 호환되지 않기 때문입니다. 여기에는 모바일 광고 SDK에서 제공되는 모든 광고 단위가 포함됩니다. 모바일 버전 게임에서는 광고를 변경할 필요가 없습니다. PC 버전 게임에서만 변경하도록 하는 기능 플래그를 사용하는 것이 좋습니다. ChromeOS에서는 계속 모바일 광고를 사용할 수 있습니다.

모바일 광고를 삭제할 경우 다음 조치가 필요합니다.

  • 배너, 전면 광고, 보상형 광고를 포함하여 모든 모바일 광고 단위를 중지합니다.

  • 보상형 광고를 사용하는 기능을 게임에서 중지합니다. 예를 들어 사용자가 동영상 광고를 시청하여 인게임 화폐를 얻을 수 있는 기능은 버튼을 비활성화하거나 완전히 삭제할 수 있습니다.

애널리틱스

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

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