Skip to main content

Inicio rápido de Game Saves

PlayFab Game Saves permite que los jugadores continúen su progreso sin problemas entre dispositivos mediante la sincronización de los datos de guardado con la nube. Esta guía de inicio rápido le guía por la implementación de una solución completa de guardado de juegos para las plataformas XBOX y Windows.

Requisitos previos

Antes de comenzar, asegúrese de haber:
  • Completado la incorporación a Game Saves
  • Revisado los requisitos de implementación en la sección de información general
  • Completado los requisitos que se enumeran a continuación
  • (Opcional) Clonado o revisado el ejemplo de Game Saves de un extremo a otro para Windows en GitHub: PlayFabGameSaveSample-Windows. El ejemplo demuestra los flujos de inicialización, sincronización, control de conflictos y carga a los que se hace referencia en este inicio rápido.

Qué aprenderá

En esta guía aprenderá a:
  • Inicializar el sistema Game Saves
  • Descargar datos de guardado existentes desde la nube
  • Cargar datos de guardado locales en la nube
  • Controlar conflictos y devoluciones de llamada de la interfaz de usuario
  • Administrar escenarios de dispositivo activo

Requisitos de desarrollo

Requisitos de software

Información general del flujo de Game Saves

El sistema Game Saves sigue un patrón sencillo que funciona sin problemas entre dispositivos:

Configuración inicial (una vez por sesión de juego)

  1. Inicializar los servicios: Configure los módulos PlayFab Core y Game Saves
  2. Autenticar al usuario: Inicie la sesión del jugador mediante la autenticación de XBOX
  3. Descargar los guardados existentes: Sincronice los datos de guardado de otros dispositivos con el dispositivo local
  4. Obtener la ubicación de guardado: Obtenga la carpeta raíz de guardado local donde su juego debe escribir los archivos de guardado

Durante el juego

  1. Escribir archivos de guardado: Su juego escribe los datos de guardado en la carpeta raíz de guardado local como de costumbre
  2. Cargar los cambios: Cargue periódicamente los archivos de guardado modificados en la nube
  3. Continuar jugando: Repita los pasos 5 y 6 según sea necesario durante la sesión de juego

Fin de la sesión

  1. Carga final: Cargue los cambios finales antes de que el jugador salga
  2. Sincronización en segundo plano: En XBOX/Windows, el sistema controla automáticamente las cargas finales cuando el juego se cierra

Ventajas clave

  • Compatibilidad sin conexión: Los jugadores pueden empezar a jugar incluso sin conexión a Internet
  • Resolución automática de conflictos: La interfaz de usuario integrada controla los conflictos de guardado entre dispositivos
  • Cargas incrementales: Solo se cargan los archivos modificados, lo que mejora el rendimiento
  • Continuidad entre dispositivos: Experiencia sin problemas al cambiar entre dispositivos

Detalles de implementación

Las secciones siguientes proporcionan ejemplos de código detallados para cada paso:

Paso 1: Inicializar Game Saves

Game Saves está diseñado para funcionar tanto en línea como sin conexión, lo que lo diferencia de otras API de PlayFab. Mantiene una identidad de usuario local persistente que funciona incluso cuando el dispositivo se inicia sin conexión.

Conceptos clave

  • PFLocalUserHandle: Un identificador de usuario persistente que funciona sin conexión
  • PFServiceConfigHandle: Configuración de su título de PlayFab
  • Diseño sin conexión primero: El sistema funciona de inmediato, incluso sin conectividad a Internet

Requisitos previos

Antes de inicializar Game Saves, asegúrese de haber:
  • Llamado a XGameRuntimeInitialize() para inicializar el entorno de ejecución de XBOX
  • Llamado a XUserAddAsync() para iniciar la sesión de un usuario y obtener un XUserHandle
  • Su Title ID de PlayFab de Game Manager

Implementación

Reemplace <titleId> por su Title ID de PlayFab real de Game Manager. El xuserHandle debe obtenerse de una llamada correcta a XUserAddAsync.

Plataformas alternativas

Para plataformas sin autenticación de XBOX y sin compatibilidad sin conexión, use otras versiones de PFLocalUserCreateHandle o PFLocalUserCreateHandleWithPersistedLocalId en su lugar. Consulte la documentación específica de la plataforma para obtener detalles de implementación. Por ejemplo:

Paso 2: Sincronizar los datos de guardado desde la nube

Después de la inicialización, agregue el usuario al sistema Game Saves para sincronizar los datos de guardado existentes de otros dispositivos. Este paso también configura la carpeta raíz de guardado local donde su juego leerá y escribirá los archivos de guardado.

Cuándo llamar a esto

  • Una vez por sesión de juego, después de la autenticación del usuario
  • Cuando el usuario vuelve al menú principal del juego
  • Después de reanudar desde la suspensión o el segundo plano

Qué hace este paso

  1. Descarga los guardados existentes de otros dispositivos (solo los archivos nuevos o modificados)
  2. Conserva las marcas de tiempo de los archivos cuando es posible para un control de versiones adecuado
  3. Controla los conflictos automáticamente mediante la interfaz de usuario integrada
  4. Establece el dispositivo como activo para este usuario
  5. Proporciona la ruta de la carpeta de guardado donde su juego debe escribir los archivos

Limitaciones importantes

  • Solo se puede llamar correctamente una vez por sesión de Game Saves
  • Requiere volver a inicializar el sistema Game Saves para llamarla de nuevo
  • Desencadena avisos de la interfaz de usuario por conflictos, problemas de almacenamiento y contención de dispositivos

Implementación

Pasos siguientes

Una vez que esta llamada se completa correctamente:
  • Su juego puede leer los archivos de guardado existentes del directorio saveFolder
  • Escriba nuevos archivos de guardado y cree subdirectorios según sea necesario
  • El dispositivo ahora se considera “activo” para este usuario
  • Otros dispositivos mostrarán una advertencia si el usuario intenta sincronizar en ellos

Paso 3: Cargar los datos de guardado en la nube

Una vez que su juego haya escrito archivos de guardado y subcarpetas en la carpeta raíz de guardado local, use este paso para cargar los cambios en la nube. El sistema detecta y carga automáticamente solo los archivos y subcarpetas que han cambiado desde la última carga. Las eliminaciones de archivos y carpetas también se sincronizan automáticamente con la nube.

Puntos sugeridos para realizar la carga

  • Después de un progreso significativo: Cuando el jugador alcanza un punto de control o completa un nivel
  • Antes de las transiciones de menú: Al volver al menú principal o cambiar de modo de juego
  • Al salir del juego: Antes de que el jugador salga del juego
  • Guardados periódicos: Cada pocos minutos durante sesiones de juego prolongadas

Opciones de carga

  • KeepDeviceActive: El dispositivo permanece activo, lo que permite cargas adicionales más adelante
  • ReleaseDeviceAsActive: Libera el dispositivo como activo, lo que permite una sincronización sin problemas en otros dispositivos

Comportamiento por plataforma

  • XBOX/Windows: La carga continúa en segundo plano después de que el juego se cierra
  • Otras plataformas (Steam Deck, etc.): La carga debe completarse antes de salir del juego, o los datos de guardado no llegarán a la nube

Implementación

¿Cuándo puedo volver a escribir en la carpeta de guardado?

Durante la carga, el sistema lee y comprime sus archivos de guardado locales antes de cargarlos. Una vez que el estado de sincronización pasa a Uploading (notificado mediante PFGameSaveFilesUiProgressCallback), el sistema ha terminado de leer sus archivos y es seguro volver a escribir en la carpeta de guardado. No es necesario esperar a que se complete toda la carga antes de reanudar los guardados. Si no usa la devolución de llamada de progreso, espere a que se complete el XAsyncBlock antes de escribir nuevos datos de guardado.

Procedimientos recomendados

  1. Controle los errores correctamente: Los problemas de red no deben bloquear su juego
  2. Use las opciones adecuadas:
    • Use KeepDeviceActive durante el juego para realizar cargas adicionales
    • Use ReleaseDeviceAsActive cuando el jugador vaya a salir o a volver al menú
  3. Advierta a los usuarios en plataformas que no sean XBOX: Informe a los jugadores de que no deben salir durante la carga

Consideraciones sobre la frecuencia

  • Se admiten varias cargas por sesión y son eficientes
  • Solo se cargan los archivos modificados, lo que minimiza el uso de ancho de banda
  • Consulte la documentación de límites para conocer las cuotas y restricciones específicas

Paso 4: Controlar las devoluciones de llamada de la interfaz de usuario (opcional)

Game Saves proporciona una interfaz de usuario integrada para las plataformas XBOX y Windows. En otras plataformas (como Steam Deck), su juego debe proporcionar su propia interfaz de usuario mediante el control de las devoluciones de llamada. Las devoluciones de llamada de la interfaz de usuario se activan durante PFGameSaveFilesAddUserWithUiAsync y PFGameSaveFilesUploadWithUiAsync. Cada devolución de llamada pausa la operación asincrónica hasta que su juego responde: la devolución de llamada de XAsyncBlock no se activa hasta que se resuelven todas las devoluciones de llamada de la interfaz de usuario.
Para ver la lista completa de tipos de devolución de llamada, API de respuesta, acciones de usuario y detalles sobre cómo funciona la máquina de estados, consulte Devoluciones de llamada de la interfaz de usuario de Game Saves.

Descripción de los conflictos de guardado

Los conflictos de guardado se producen cuando los mismos datos del juego se han modificado en varios dispositivos. Game Saves trata cada subcarpeta de nivel raíz como una unidad atómica para la resolución de conflictos, y los jugadores pueden elegir conservar los datos locales o los de la nube cuando surgen conflictos. Para conocer escenarios detallados de control de conflictos y procedimientos recomendados, consulte Conflictos de Game Saves.

Descripción del modo sin conexión de Game Saves

Game Saves funciona tanto en línea como sin conexión. Cuando está conectado a la nube, todas las API funcionan con normalidad. Cuando está sin conexión o desconectado, los guardados locales siguen funcionando, pero las operaciones en la nube devuelven E_PF_GAMESAVE_DISCONNECTED_FROM_CLOUD. Use PFGameSaveFilesIsConnectedToCloud() para comprobar el estado de la conexión e implemente devoluciones de llamada de error de sincronización para controlar correctamente los problemas de red. Para conocer el comportamiento detallado sin conexión y los procedimientos recomendados, consulte Modo sin conexión de Game Saves.

Descripción de los cambios de dispositivo activo de Game Saves

Cuando un jugador cambia de dispositivo a mitad de sesión, es importante evitar que pierda progreso accidentalmente por jugar en varios dispositivos a la vez. Si su juego solo inicia sesión mediante la característica Single Point of Presence (SPOP) de XBOX, este escenario se evita automáticamente. SPOP garantiza que un usuario solo pueda tener la sesión iniciada en un dispositivo XBOX a la vez. De lo contrario, también debe implementar la devolución de llamada de cambio de dispositivo activo para controlar los escenarios en los que un jugador cambia de dispositivo a mitad de sesión Para conocer el comportamiento detallado y los procedimientos recomendados, consulte Cambios de dispositivo activo de Game Saves.

Depuración

La manera más sencilla de ver los resultados y depurar cualquier llamada en el SDK es habilitar el seguimiento de depuración. Habilitar el seguimiento de depuración le permite ver los resultados en la ventana de salida del depurador y conectar los resultados a los registros propios de su juego.
Última modificación el 28 de agosto de 2026