> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Descripción del flujo de sincronización de Game Saves

> Recorra el flujo de sincronización de seis pasos de Game Saves de XBOX: inicio del título, comprobación de conexión, propiedad de los datos, sincronización en la nube, bucle de juego y fin de la sesión.

Este artículo describe el flujo de sincronización de seis partes de Game Saves. Aunque el comportamiento puede diferir ligeramente según la API de Game Saves específica que use, el flujo general para un guardado iniciado por el usuario es el mismo. Los pasos son los siguientes.

1. [Inicio del título](/build/core-features/common/game-save/game-saves-syncing#title-start)
2. [Comprobación de conexión](/build/core-features/common/game-save/game-saves-syncing#connection-check)
3. [Comprobación de propiedad de los datos](/build/core-features/common/game-save/game-saves-syncing#data-ownership-check)
4. [Sincronización de datos con la nube](/build/core-features/common/game-save/game-saves-syncing#syncing-data-with-the-cloud)
5. [Bucle de juego](/build/core-features/common/game-save/game-saves-syncing#gameplay-loop)
6. [Fin de la sesión](/build/core-features/common/game-save/game-saves-syncing#session-end)

## Inicio del título

Cuando el título se inicia, el primer paso es determinar el usuario para el que se administran las Game Saves. Si el usuario tiene una sesión de juego activa en otro dispositivo, un cuadro de diálogo del sistema le pide que cambie de dispositivo. Si el usuario cambia, el otro dispositivo sincroniza sus datos locales de Game Saves más recientes con el nuevo dispositivo. Si desea que los datos sean locales y estén vinculados al dispositivo, puede usar un proveedor solo de máquina. Esta opción pasa un identificador de usuario `null` a las API de Game Saves.

Después de que el título seleccione al usuario, inicializa Game Saves con el identificador de ese usuario. Durante la inicialización, Game Saves se conecta a la red XBOX para preparar el espacio de almacenamiento del usuario.

| API              | Función de inicialización del proveedor de Game Saves |
| ---------------- | ----------------------------------------------------- |
| `XGameSave`      | `XGameSaveInitializeProvider()`                       |
| `XGameSaveFiles` | `XGameSaveFilesGetFolderWithUIAsync()`                |

Cuadro de diálogo del sistema pertinente:

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/signed-into-another-device.png?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=b333cb6234262d4b20d1b00cfa7119f7" alt="Parece que has iniciado sesión en otro dispositivo." width="792" height="1026" data-path="images/gdk/features/common/signed-into-another-device.png" />

Para obtener información sobre los modelos de usuario y la administración de usuarios, consulte [Modelos de usuario](/build/core-features/common/game-save/game-saves-developer-guide#user-models).

Para obtener información sobre el almacenamiento, consulte [Sistemas de almacenamiento de Game Saves](/build/core-features/common/game-save/game-saves-storage-systems).

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-1-title-start.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=e73bde01a012a367ec751c0f00a760c5" alt="Diagrama de flujo del primer paso del proceso de sincronización." width="663" height="1258" data-path="images/gdk/features/common/sync-flow-1-title-start.jpg" />

## Comprobación de conexión

A continuación, el título determina si puede conectarse a la red XBOX para confirmar que la sincronización con la nube es posible. Si el título no puede conectarse, el usuario tiene la opción de reintentarlo o de reanudar el título en modo sin conexión. Game Saves puede ejecutarse en modo sin conexión.

Cuadros de diálogo del sistema pertinentes: <img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-failed-network-dialogue.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=2d1a2c71ac69baac7aa3863e5308554d" alt="No pudimos sincronizar tus datos con la nube en este momento." width="1006" height="559" data-path="images/gdk/features/common/sync-failed-network-dialogue.jpg" />

<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/build/core-features/common/game-save/game-saves-dialogues#we-couldnt-get-your-latest-saved-data" alt="No pudimos obtener tus datos guardados más recientes." />

### Comportamiento sin conexión

| Acceso a la red XBOX | Patrón de sincronización de datos                                                                                                                       |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Sí                   | Flujo normal de sincronización en la nube. Continúe con la comprobación de propiedad de los datos.                                                      |
| No                   | Modo sin conexión: el título guarda los datos en el almacenamiento local de Game Saves del usuario, pero la sesión actual no se sincroniza con la nube. |

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-2-connection-check.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=abc4d0abd4bcce59bce850fb348d19fb" alt="Diagrama de flujo del paso de comprobación de conexión del proceso de sincronización." width="598" height="444" data-path="images/gdk/features/common/sync-flow-2-connection-check.jpg" />

## Comprobación de propiedad de los datos

Una vez confirmada la conexión, el título determina si el dispositivo tiene derecho a modificar los datos. Si es así, puede adquirir un bloqueo del título. Para que un título obtenga y libere un bloqueo, el título requiere acceso a los servicios de XBOX.

El título comprueba si hay otro dispositivo que mantiene un bloqueo sobre los datos del usuario. Ese dispositivo podría seguir reteniendo un bloqueo por los siguientes motivos.

* Estar desconectado de la red XBOX, lo que impide que el dispositivo llame a `WebReleaseLock`.
* El otro dispositivo está cargando una Game Save de gran tamaño y no puede llamar a `WebReleaseLock`.

Si otro dispositivo mantiene el bloqueo, el usuario tiene las siguientes opciones.

* Adquirir a la fuerza el bloqueo del otro dispositivo, lo que hace que el otro dispositivo pierda los datos de la sesión.
* Intentar adquirir el bloqueo de nuevo con normalidad.
* Cancelar la adquisición del bloqueo.

Si el usuario cancela la adquisición del bloqueo, el título se inicia en modo sin conexión.

Para obtener más escenarios de pérdida de conexión y de bloqueo, consulte [Pérdida de conexión y escenarios de bloqueo](/build/core-features/common/game-save/game-saves-syncing#connection-loss-and-lock-scenarios).

Cuadros de diálogo del sistema pertinentes:

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/lock-contention-dialogue.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=38894f740f55a181c2137b3c9b84cb18" alt="Tu otra consola XBOX está tardando mucho tiempo en sincronizarse con la nube" width="639" height="563" data-path="images/gdk/features/common/lock-contention-dialogue.jpg" />

Para obtener detalles sobre la supervisión de la adquisición de bloqueos a través de la red XBOX, consulte [Inspección del tráfico de red de Game Saves](/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic).

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-3-data-ownership-check.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=b21137181a92b3e1afaad2618bea46ae" alt="Diagrama de flujo de la comprobación de propiedad de los datos del proceso de sincronización." width="846" height="1092" data-path="images/gdk/features/common/sync-flow-3-data-ownership-check.jpg" />

## Sincronización de datos con la nube

Después de que el título adquiera el bloqueo de los datos del usuario, sincroniza esos datos con la nube. A continuación, el título determina si realiza una de las siguientes acciones:

* Cargar los datos locales de Game Saves.
* Descargar los datos de la nube y actualizar los datos locales de Game Saves.
* No realizar ninguna acción.
* Resolver los conflictos de datos.

El título lo determina comparando dos marcas de tiempo.

* **Hora de guardado local**: cuándo escribió este dispositivo un guardado por última vez
* **Hora de guardado en la nube**: cuándo se actualizó por última vez la copia de la nube

### Los cuatro resultados de sincronización

| Local frente a nube  | Acción                                  | Qué significa                                                                                  |
| -------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Ninguno cambió       | No hacer nada                           | Los datos coinciden en ambas ubicaciones. No hay progreso nuevo.                               |
| Solo cambió el local | Cargar local>nube                       | El usuario jugó sin conexión. Se envían los datos de guardado locales más recientes a la nube. |
| Solo cambió la nube  | Descargar nube>local                    | El usuario jugó en otro dispositivo. Se obtienen sus datos de guardado desde la nube.          |
| Ambos cambiaron      | Conflicto>pedir confirmación al usuario | Cada ubicación muestra un progreso. El otro dispositivo no. El usuario lo resuelve.            |

<Note>
  Si se produce la descarga desde la nube, aparece un cuadro de diálogo de sincronización, [Sincronizando datos para ...](/build/core-features/common/game-save/game-saves-dialogues#syncing-data). Si el usuario cancela las Game Saves con este cuadro de diálogo, el título continúa en modo sin conexión.
</Note>

### Estados de cambio y guardado

Este escenario supone que el usuario está jugando en dos dispositivos, el dispositivo A y el dispositivo B.

**El local cambió**

El usuario progresó mientras estaba sin conexión en el dispositivo A. Por ejemplo, el usuario subió al nivel 126 en el dispositivo A sin conexión a Internet.

**La nube cambió**

Se cargó progreso desde el dispositivo B desde la última vez que el usuario sincronizó el dispositivo A. Por ejemplo, el usuario subió al nivel 99 en el dispositivo B y lo cargó en la nube.

**Ambos cambiaron**

El usuario jugó sin conexión en el dispositivo A. El usuario también jugó en el dispositivo B desde la última vez que sincronizó el dispositivo A. Por ejemplo, el dispositivo A está en el nivel 126. La nube está en el nivel 99.

Si hay un conflicto, el sistema pide al usuario que lo resuelva mediante un cuadro de diálogo: [¿Cuál quieres usar?](/build/core-features/common/game-save/game-saves-dialogues#which-one-do-you-want-to-use)

### Atomicidad

Las Game Saves son atómicas en el nivel de contenedor (carpeta). Si la carpeta de la nube incluye un blob que la carpeta local equivalente no contiene, el sistema trata las dos carpetas como independientes. Esta diferencia crea un conflicto.

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-4-sync-data-with-cloud.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=2e20d3966826e47b9b79c5bf30cc9227" alt="Diagrama de flujo de la sincronización en la nube del proceso de sincronización." width="930" height="1119" data-path="images/gdk/features/common/sync-flow-4-sync-data-with-cloud.jpg" />

## Bucle de juego

El *bucle de juego* es la parte activa de la sesión de juego. Comienza después de que el título termine de sincronizar los datos de guardado con la nube.

Durante la sesión de juego activa, el título lee y escribe los datos de guardado localmente. Todos los datos creados o actualizados en este período permanecen en el almacenamiento local de Game Saves hasta que el sistema realiza una sincronización en la nube.

El bucle de juego termina cuando finaliza la sesión de juego del usuario si se cumple una de las siguientes condiciones para consola o PC. Una sesión termina cuando una consola o un PC desencadena un cambio de estado, como una suspensión, una finalización, un cierre de sesión u otro evento del sistema.

### Sincronización periódica con la nube

Cada 30 minutos de juego, el título intenta sincronizarse automáticamente con la nube. Este comportamiento se basa en los siguientes escenarios.

| API de Game Saves                                 | Acción            | Cuándo                                                                                  |
| ------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------- |
| `XGameSaveFiles`, guardados en la nube sin código | Cargar local>nube | Transcurrieron 30 minutos desde que el juego escribió en el área de guardado designada. |
| `XGameSave`                                       | Cargar local>nube | Cada 30 minutos de juego.                                                               |

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-5-gameplay-loop.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=3a0165fb65cfb429d4455e018b4fd95f" alt="Diagrama de flujo de las interacciones del bucle de juego con Game Saves." width="714" height="977" data-path="images/gdk/features/common/sync-flow-5-gameplay-loop.jpg" />

## Fin de la sesión

Una vez finalizada la sesión de juego, el título carga los datos nuevos en la nube. El dispositivo intenta cargar los datos en la nube cuando tiene conexión. Después de cargar los datos, se libera el bloqueo.

Para ver la liberación del bloqueo en la red XBOX con fines de depuración, consulte [Inspección del tráfico de red de Game Saves](/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic).

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-6-session-end.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=fb2ca714223c6846bcf37775a7d98c6f" alt="Diagrama de flujo del comportamiento de fin de sesión en el proceso de sincronización." width="1384" height="587" data-path="images/gdk/features/common/sync-flow-6-session-end.jpg" />

## Pérdida de conexión y escenarios de bloqueo

Los datos escritos durante una pérdida de conexión se almacenan en el almacenamiento local de Game Saves y se cargan cuando se reanuda la conexión. Sin embargo, si el usuario intenta usar otro dispositivo, el dispositivo actual no puede liberar el bloqueo porque se perdió la conexión. El usuario puede forzar una transferencia del bloqueo a otro dispositivo. Según el momento en que se produzcan estas transferencias de bloqueo, un título puede experimentar comportamientos distintos.

### Pérdida de conexión antes del inicio del título

> **Cuándo:** el usuario inicia un título sin conexión.

El título ofrece al usuario la opción de iniciarse en modo sin conexión porque no hay conexión. Cuando el dispositivo se vuelve a conectar a la red XBOX y la nube contiene datos más recientes, el título trata los datos locales como obsoletos. En este caso, el título finaliza la sesión de juego terminando la aplicación con una operación de suspensión.

Cuadro de diálogo del sistema pertinente: [Necesitamos cerrar este juego o aplicación](/build/core-features/common/game-save/game-saves-dialogues#we-need-to-close-this-game-or-app)

### Pérdida de conexión durante el bucle de juego

> **Cuándo:** el usuario está en una sesión de juego activa y el título aún mantiene el bloqueo. En algún momento, se pierde la conexión. El título permite entonces jugar durante esta pérdida.

| Dispositivo sin conexión | Estado del bloqueo al reconectarse | Acción del título al reconectarse                                                                          | Experiencia del usuario/interfaz           |
| ------------------------ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| Consola                  | Aún mantiene el bloqueo            | Continúa guardando localmente.                                                                             | Los guardados van al almacenamiento local. |
| Consola                  | Otro dispositivo tomó el bloqueo   | El título finaliza.                                                                                        | Salida a la pantalla de inicio.            |
| PC                       | Aún mantiene el bloqueo            | Continúa guardando localmente.                                                                             | Los guardados van al almacenamiento local. |
| PC                       | Otro dispositivo tomó el bloqueo   | El juego se reanuda con normalidad. La resolución de conflictos se realiza en la siguiente sincronización. | El juego se reanuda.                       |

### Pérdida de conexión antes del fin de la sesión (finalización o suspensión)

> **Cuándo:** el jugador sale del título o lo suspende mientras el dispositivo está desconectado. El dispositivo aún tiene datos locales sin sincronizar.

| Dispositivo sin conexión | Momento de la pérdida de conexión | Estado del bloqueo al reconectarse | Acción del dispositivo al reconectarse                                                                   |
| ------------------------ | --------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Consola                  | Antes de la finalización          | Aún mantiene el bloqueo            | Los datos se cargan y el bloqueo se libera.                                                              |
| Consola                  | Antes de la finalización          | Otro dispositivo tomó el bloqueo   | Los datos pasan por la resolución de combinación en el siguiente inicio del título.                      |
| Consola                  | Antes de la suspensión            | Aún mantiene el bloqueo            | Los datos se cargan y el bloqueo se libera.                                                              |
| Consola                  | Antes de la suspensión            | Otro dispositivo tomó el bloqueo   | El título finaliza y los datos pasan por la resolución de combinación en el siguiente inicio del título. |
| PC                       | Antes de la finalización          | Aún mantiene el bloqueo            | Los datos se cargan y el bloqueo se libera.                                                              |
| PC                       | Antes de la finalización          | Otro dispositivo tomó el bloqueo   | Los datos pasan por la resolución de combinación en el siguiente inicio del título.                      |
| PC                       | Antes de la suspensión            | Aún mantiene el bloqueo            | Los datos se cargan y el bloqueo se libera.                                                              |
| PC                       | Antes de la suspensión            | Otro dispositivo tomó el bloqueo   | Los datos pasan por la resolución de combinación en el siguiente inicio del título.                      |

## Pérdida de energía

La pérdida de energía actúa de forma similar a la pérdida de conexión. La diferencia principal es que las operaciones de guardado que estaban activas se pierden.


## Related topics

- [Información general de Game Saves](/es/build/core-features/common/game-save/game-saves-overview.md)
- [Depuración de Game Saves](/es/build/core-features/common/game-save/game-saves-debugging.md)
- [Cuadros de diálogo del sistema de Game Saves](/es/build/core-features/common/game-save/game-saves-dialogues.md)
- [Información general de la API XGameSave](/es/build/core-features/common/game-save/xgamesave.md)
- [Tutoriales y ejemplos de Game Saves](/es/build/core-features/common/game-save/game-saves-walkthroughs-and-samples.md)
