Input en WebGL
iOS

Construyendo juegos para Apple TV

Esta página de manual está dirigida principalmente a ayudar a los desarrolladores a pasar de iOS a tvOS. La plataforma de Apple TV (también conocida como tvOS) se basa en la plataforma iOS y crea nuevos paradigmas y desafíos para los desarrolladores de juegos. El despliegue de un juego móvil existente en tvOS es solo un clic, pero el contenido del juego a menudo necesita ser adaptado para funcionar correctamente con los nuevos controles de entrada de Unity y el hecho de que el juego se muestre en una pantalla grande.

Pre-requisitos

Para desarrollar en tvOS usted necesita lo siguiente:

  • Usted necesita un dispositivo Apple TV de 4ta generación (también necesita un USB C <-> USB 3.0 cable, el cual no está incluido en el paquete de consumo).
  • Xcode 7.1 o posterior.
  • Debe configurar el aprovisionamiento para este dispositivo de la misma forma que para los dispositivos iOS. Se recomienda crear una aplicación tvOS vacía con Xcode para probar que el aprovisionamiento funciona correctamente.

Puntos para tener en cuenta antes de comenzar

  • Muchos plugins de iOS no son compatibles con Apple TV, ya que sólo admite un subconjunto del framework de iOS. Se recomienda que cree una rama o una copia separada de su juego y realice la transferencia a Apple TV. Comuniquese con los proveedores de plugins para pedirles que actualicen los plugins incompatibles.
  • Si su juego usa más de 200 MB en disco, debe dividirlo en partes más pequeñas y usar On Demand Resources. Para el soporte de recursos en demanda en Unity, consulte la sección Recursos en Demanda siguiente. Tenga en cuenta que Bitcode se incluye con las compilaciones de tvOS, que añade ~ 130 MB a sus ejecutables. Este tamaño añadido no se contabiliza en el tamaño de la distribución, ya que es eliminado por los servidores de App Store. Puede estimar el tamaño de Bitcode analizando las secciones de LLVM en su ejecutable desde la línea de comandos con otool -l.

Implementando input

El Apple TV Remote (Siri Remote) sirve como un dispositivo de entrada multiusos, funcionando tanto como un controlador de navegación de menú tradicional, controlador de juego, girocompás y sensor de aceleración, y como un dispositivo de gesto táctil. La entrada de Apple TV Remote es procesada mínimamente por Unity y en su mayoría encaminada a las API de Unity correspondientes.

Por lo general, cada juego necesita un ligero ajuste de su esquema de entrada para aprovechar las características únicas de entrada de Apple TV Remote. Algunos juegos se beneficiarían al tratarlo como un controlador de juego tradicional, con un eje analógico y un botón de acción adicional, mientras que otros se beneficiarían al usar el acelerómetro (por ejemplo, para propósitos de dirección). Se recomienda que experimente con varios esquemas al portar un juego a tvOS.

Estos son algunos detalles técnicos sobre el acceso a las características específicas de TV Remote:

  • Si todavía no has añadido la compatibilidad de Made For iOS (MFi) para tu juego, consulta la página dedicada a MFi Game Controller. Utilice las asignaciones que aparecen en la lista mientras configura sus asignaciones de acciones personalizadas en el Editor de Unity (Edit > Project Settings > Input**).
  • El área de toque de Apple TV Remote se asigna tanto a Input.touches (Touch.type está configurado como Indirect y es ignorado por la Unity GUI), y la habitual API de entrada de Joystick (por ejemplo` Input.GetAxis “Horizontal”);)
  • La Aceleración remota y giroscopio del Apple TV Remote se asignan en consecuencia a Input.acceleration yInput.gyro. Input.acceleration internamente se deriva del API del giroscopio y puede tener algunas inestabilidades. Desafortunadamente no hay una API de acelerómetro dedicada en el SDK de tvOS. Input.giro.attitude se deriva del vector de gravedad, y por lo tanto carece de rotación alrededor del eje paralelo al vector de gravedad. Lo mismo se aplica a Input.gyro.rotationRate.
  • El botón de Pausa/Reproducción del mando a distancia se asigna al botón “X” (que se asigna a joystick button 15).
  • El click del área del tacto del control de Apple TV se asigna al botón “A” (que se asigna entonces a joystick button 14).
  • El botón del Menú tiene un comportamiento especial en este dispositivo; Una prensa larga invoca el selector de tareas de tvOS. Este comportamiento no se puede sobreescribir. Los golpes cortos se pueden procesar de dos maneras:
    • a) Regresar a la pantalla de inicio del sistema tvOS (si UnityEngine.Apple.TV.Remote.allowExitToHome es true)
    • b) Dejando que su app responde a tactos (asignado al botón “Pause” / joystick button 0), cuando UnityEngine.Apple.TV.Remote.allowExitToHome es false. Este es el comportamiento predeterminado.
    • Su app debería cambiar entre a) y b) basado en el estado actual de su juego. Si el usuario está interactuando con el menú superior, habilite el comportamiento a); si está interactuando en tiempo real con el juego debería habilitar el comportamiento b) e invocar el menú de pausa dentro del juego cuando este botón fue presionado.
  • El mando a distancia de Apple TV también genera botones de dirección hacia arriba / abajo / izquierda / derecha cuando se desliza hacia el borde del mando a distancia. Consulte la página de manual de Controladores de juegos iOS para las asignaciones.
  • Los modos operativos de Apple TV Remote se pueden controlar a través de una API dedicada:
    • UnityEngine.Apple.TV.Remote.allowExitToHome
    • UnityEngine.Apple.TV.Remote.allowRemoteRotation
    • UnityEngine.Apple.TV.Remote.reportAbsoluteDpadValues
    • UnityEngine.Apple.TV.Remote.touchesEnabled
  • Otros dos controladores de juegos inalámbricos para iOS (MFi) pueden conectarse a un dispositivo de Apple TV, convirtiéndolo en una consola de juegos. Su juego puede utilizarlos de la misma manera que los controladores iOS MFi (como se mencionó anteriormente), aunque su juego debe seguir siendo reproducible con el Apple TV Remote solo. Actualmente, el número de controladores adicionales está limitado a dos; Se trata de una limitación del sistema tvOS documentada.

Advertencia: debido a que el botón “Menú” del Apple TV Remote aparece como joystick button 0 cuando UnityEngine.Apple.TV.Remote.allowExitToHome está configurado como false, Y botón virtual de “Submit” (enviar) del Input Manager predeterminado se asigna al mismo joystick botón 0, este botón dispara acciones en los elementos de la interfaz de usuario al presionar el botón “Menu”. Para evitar este problema, quite o modifique los enlaces de botón virtuales “Submit” en el Input Manager.

Configurando la navegación de Unity GUI mediante Apple TV Remote

  • Abra el Input Manager en el Editor de Unity. Encuentre la primera ocurrencia del input virtual “Submit”, expándalo y cambie su “Alt Positive Button” a “joystick button 14”.
  • Seleccione el game object EventSystem en su escena. En el Inspector, encuentre el componente EventSystem y pueble el campo “First Selected” con el game object Ui que debería recibir foco. Usted tendría que revisar por la flag “Force input module” en el componente “Standalone Input Module”.

Esto le permite navegar su interfaz de usuario a través del teclado mientras se ejecuta en el editor y a través de Apple TV Remote y hacer clic en el dispositivo cuando haga clic en su dispositivo.

Nota: La navegación del Apple TV Remote no funciona mientras se ejecuta el TV Simulator.

Añadiendo recursos de leadeboard al proyecto de Xcode

El Game Center requiere recursos visuales personalizados para su interfaz gráfica de usuario nativa. Aquí hay instrucciones rápidas sobre cómo configurarlas en Xcode:

  • Seleccione Images.xcassets en el proyecto de Xcode
  • Haga click derecho debajo de los archivos listados, y desde el menú escoja Game Center > New AppleTV Leaderboard.
  • Agregue sus imágenes.
  • Seleccione Leaderboard y en el panel derecho seleccione Edit View. Encuentre el campo “Identificador” e ingrese su leaderboard ID ahí.
  • Si después de estas modificaciones su compilación de assets comienza a fallar, intente desactivar “On Demand Resources” en Xcode “Build Settings”.

Implementando soporte de On Demand Resources (recursos en demanda)

TvOS tiene requisitos estrictos sobre la cantidad de espacio en disco que puede reservar su aplicación. El tamaño del paquete de instalación de la aplicación principal no puede superar los 200 MB. Sin embargo, los límites para contenido descargable adicional son mucho más altos (hasta 2 GB para assets en uso y hasta 20 GB de contenido descargable total). Apple recomienda On Demand Resources (ODR) para contenido descargable de tvOS, ya que permite las mejores estrategias de administración de espacio en disco para tvOS. Unity soporta ODR a través de Asset Bundles. Una guía de implementación de ODR se puede encontrar en nuestro dedicada blogpost sobre el tema.

Limitaciones conocidas

  • El teclado en pantalla está limitado a entradas de una sola línea.
  • El tvOS Simulator no emula el Apple TV Remote como un Controlador del Juego, por lo tanto hace de su input inaccesible a los juegos.
Input en WebGL
iOS