Cómo empaquetar un juego para Google Play Juegos para PC

Dado que Google Play Juegos para PC proporciona un entorno estándar de Android Runtime, no hay diferencias entre empaquetar tu juego para dispositivos móviles o para PC más allá de asegurarte de incluir objetos binarios x86 o x86-64. Cuando sea posible, debes usar el mismo APK o paquete de aplicación en PC que en las compilaciones para dispositivos móviles.

Cuando se usa un paquete en dispositivos móviles y Google Play Juegos para PC, se recomienda habilitar funciones específicas de Google Play Juegos para PC en el tiempo de ejecución detectando la presencia de un teclado:

Kotlin

val hasKeyboard = resources.configuration.keyboard == KEYBOARD_QWERTY

Java

boolean hasKeyboard = getResources().getConfiguration().keyboard == KEYBOARD.QWERTY

C#

var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
var resources = currentActivity.Call<AndroidJavaObject>("getResources");
var configuration = resources.Call<AndroidJavaObject>("getConfiguration");
var keyboard = configuration.Get<int>("keyboard");
var hasKeyboard == 2; // Configuration.KEYBOARD_QWERTY

Otra forma de habilitarlas es verificando la función del sistema "com.google.android.play.feature.HPE_EXPERIENCE":

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");