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:

val hasKeyboard = resources.configuration.keyboard == KEYBOARD_QWERTY

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

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":

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