Requisitos para la integración

En esta sección, se aborda la integración entre el SDK de Playables y el YouTube Playables SDK.

1 Carga el SDK de Playables

2 Notificación de juego listo

  • El juego DEBE llamar a firstFrameReady cuando renderice una pantalla de carga o una pantalla de presentación que le comunique explícitamente al usuario que el proceso de carga está en curso.
  • El juego DEBE llamar a gameReady y SOLO debe llamar a gameReady cuando esté listo para la interacción del usuario (por ejemplo, el menú principal o el juego está listo para jugar).
  • El juego NO DEBE llamar a gameReady mientras aún se muestren elementos no interactivos al usuario (por ejemplo: pantallas de presentación o pantallas de carga ).

YouTube no quita el "indicador de carga" hasta que se llama a esta API.

3 Puntuaciones de los usuarios

  • El juego PUEDE usar sendScore para enviar la puntuación del usuario.
  • Si el juego usa sendScore para enviar puntuaciones, DEBE cumplir con la especificación sendScore y DEBE asegurarse de que la mejor puntuación enviada coincida con la mejor puntuación en el guardado del juego.

4 Almacenamiento en la nube

  • El juego DEBE llamar a saveData para guardar el progreso cuando los usuarios hayan logrado un progreso significativo en el juego (por ejemplo, un cambio de nivel) en el que la mecánica del juego lleve al usuario a creer que se guardó su progreso.
  • El juego NO DEBE usar ningún otro mecanismo para guardar el progreso del usuario. Esta función permite a los jugadores reanudar el juego más adelante.
  • El juego DEBE esperar loadData antes de llamar a saveData. Si saveData se llama antes de que loadData se complete correctamente, se rechazará la solicitud. Esto evita que el juego sobrescriba los datos guardados anteriormente.
  • El juego DEBE poder usar datos guardados en la nube de versiones anteriores del juego sin errores ni fallas.
  • El juego DEBE usar los datos guardados en la nube para mantener el progreso del usuario en todas las versiones del juego en las que el usuario esperaría que se usaran sus datos.
  • Los juegos DEBEN guardar automáticamente el progreso del usuario en los hitos importantes del juego para evitar la pérdida de datos. Se realiza un guardado final cuando un usuario sale del juego, pero es el mejor esfuerzo y solo puede guardar hasta 64 KiB de longitud de contenido.

5 Activar o desactivar silencio

  • El juego DEBE respetar la configuración de audio del sistema y el botón para silenciar.
  • El juego DEBE respetar la configuración de audio y el botón para silenciar de YouTube usando isAudioEnabled y onAudioEnabledChange.
  • El juego DEBE respetar el control de volumen del dispositivo.
  • El sonido del juego NO DEBE reproducirse de forma inesperada.
  • Cuando se establece el silencio de YouTube, el audio NO DEBE emitirse y los controles de audio del juego NO DEBEN afectar la salida de audio.
  • Cuando no se establece el silencio de YouTube, los controles de audio del juego PUEDEN afectar la salida de audio.
  • El juego NO DEBE mostrar un botón para silenciar general dentro del juego; permite que los usuarios dependan de las funciones de nivel de YouTube para esto.
  • El juego PUEDE tener controles de audio detallados independientes en el juego, como para música y efectos de sonido, pero DEBEN seguir todos los demás requisitos de control de audio.

Diferentes parámetros de configuración de audio para el fondo, los efectos de sonido y los diálogos

6 Pausar y reanudar

El SDK de Playables proporciona devoluciones de llamada para las funciones de pausa y reanudación multiplataforma.

  • El juego DEBE pausar toda la ejecución después de que se llame a onPause y DEBE reanudar la ejecución solo cuando se llame a onResume. La ejecución incluye todas las funciones de Playables, como el bucle del juego, la música, las interacciones, las llamadas de red y la renderización.
  • El juego NO DEBE usar la API de Page Visibility web ni APIs web similares, y SOLO debe usar onPause y onResume del SDK de Playables.
  • El juego DEBE guardar el progreso del usuario cuando se produce onPause.