Escenarios comunes de error de Game Saves
Identificador de configuración de servicio mal configurado
Si se produce el error 0x80830002 (E_GS_NO_ACCESS) al llamar a XGameSaveFilesGetFolderWithUiAsync, es probable que el identificador de configuración de servicio (SCID) del código fuente sea incorrecto. Asegúrese de que el SCID coincida con el que aparece en Microsoft Partner Center. Es posible que aparezca el siguiente mensaje de error del sistema.Implicaciones del enlace de juegos
Si su título usa el enlace de juegos y más adelante agrega una versión para PC del Microsoft Game Development Kit (GDK), debe usar el AppID de la cuenta Microsoft (MSA) (MSAppID) del producto principal. Usar el MSAAppID del producto secundario provoca errores 0x80830002.Configuración incorrecta en Partner Center
Una configuración incorrecta en Partner Center puede ser una causa común de errores de Game Saves. Para que las partidas guardadas del usuario se sincronicen con la nube y desde ella, seleccione la opción Connected Storage en Partner Center, en Gameplay settings > Title Storage. La siguiente imagen ilustra la configuración de Connected Storage en Partner Center necesaria para garantizar que las partidas guardadas puedan sincronizarse correctamente con la nube y desde ella.Limpieza de identificadores
La sincronización de Game Saves con la nube y desde ella se administra con varios identificadores. Si la duración de estos identificadores no se administra correctamente, puede producirse un comportamiento indefinido al sincronizar con la nube y desde ella.XGameSaveFiles:
- Llame a XGameSaveFilesGetFolderWithUiAsync cuando el título se inicia y cuando se reanuda. Esta llamada crea implícitamente un identificador de proveedor de Game Saves. El sistema operativo lo elimina cuando el título se suspende o finaliza.
XGameSave:
- Elimine
XGameSaveUpdateHandledespués de una llamada a XGameSaveSubmitUpdate, tanto si la actualización se realizó correctamente como si no. - Elimine
XGameSaveContainerHandlecuando el título se suspenda o finalice. - Elimine
XGameSaveProviderHandlecuando el título se suspenda o finalice.
Confirmación de Game Saves
Para confirmar que las partidas guardadas se están cargando en la nube, el título debe iniciar el proceso de liberación del bloqueo del título y, a continuación, empezar a cargar los datos. Puede ver este tráfico con Fiddler inspeccionando el tráfico de red de Game Saves. Para obtener más información sobre el flujo de sincronización de Game Saves, consulte Descripción del flujo de sincronización de Game Saves.Errores comunes
Si el intento de sincronización se deniega, vuelva a llamar a
XGameSaveFilesGetFolderWithUI para que la ruta de acceso del archivo se escriba localmente. Esta llamada devuelve S_OK.
Este error también se produce al llamar a XGameSaveFilesGetFolderWithUIResult con un proveedor obsoleto. Este error también se produce cuando Gaming Runtime Services (GRTS) desinicializa un proveedor de Game Saves al suspender un título o cuando se producen otros eventos administrados por el sistema. Cuando el título se reanude, llame a XGameSaveFilesGetFolderWithUiAsync para reinicializar el proveedor y asegurarse de que los datos guardados están actualizados. Si el título se reanuda sin realizar esta llamada, el proveedor permanece sin inicializar. Las operaciones de Game Saves fallan.| | 0x8007000E | E_OUTOFMEMORY | No queda memoria para atender la solicitud. | Este error suele producirse por varios motivos. Puede capturar las asignaciones de memoria con PIX y comprobar si hay pérdidas de memoria. Tenga en cuenta lo siguiente:
1. Los identificadores tienen recuento de referencias. Compruebe si hay pérdidas de identificadores. Cierre los identificadores de actualización después de una actualización correcta o incorrecta. Evite tener grandes cantidades de actualizaciones pendientes.
2. Use
XMemTransferMemory como solución alternativa para transferir parte de la memoria a la partición del sistema.3. Fragmentación intensa de la memoria. | | 0x80070057 | E_INVALIDARG | Se proporcionó un argumento no válido. El parámetro es incorrecto. | Este error puede producirse si el SCID usado en
XGameSaveFilesGetFolderWithUI en PC no es un GUID válido. | | --- | --- | XGameSaveFilesGetFolderWithUI se bloquea indefinidamente o falla de forma esporádica. | Asegúrese de que no aparezcan cuadros de diálogo del sistema de GameSave abiertos en la máquina en la que se está ejecutando ni cuadros de diálogo en otras consolas para el usuario. Un cuadro de diálogo abierto de inicio de sesión o de sincronización puede provocar un comportamiento indefinido si se ignora. | 0x80830006 | E_QUOTA_EXCEEDED | El juego superó la cuota por usuario del juego. De forma predeterminada, esta cuota es de 256 MB. | Use los siguientes procedimientos recomendados para la administración de datos de Game Saves. 1. No almacene datos dependientes en varios contenedores.
2. Use menos blobs en el contenedor para mejorar el rendimiento.
Para obtener más información, consulte Límites y cuotas de los sistemas de almacenamiento | | 0x80830005 | E_GS_UPDATE_TOO_BIG | El tamaño de la actualización de guardado es demasiado grande. | El tamaño total de una actualización de
XGameSave debe ser menor que GS_MAX_BLOB_SIZE (16 MB), independientemente del número total de blobs en el contexto de actualización. | | 0x8924010c | E_GAMERUNTIME_INVALID_HANDLE | Este valor de identificador ya no es válido. | Este error se produce cuando se intenta reutilizar identificadores no cerrados de un usuario anterior. Cierre los identificadores que ya no estén en uso. | | 0x80830001 | E_GS_INVALID_CONTAINER_NAME | El nombre del contenedor no es válido. | Los caracteres válidos para la parte de la ruta de acceso (hasta la barra diagonal final inclusive) incluyen letras mayúsculas (A-Z), letras minúsculas (a-z), números (0-9), guiones bajos (_) y barras diagonales (/). La parte de la ruta de acceso puede estar vacía.Los caracteres válidos para la parte del nombre de archivo (todo lo que hay después de la barra diagonal final) incluyen letras mayúsculas (A-Z), letras minúsculas (a-z), números (0-9), guiones bajos (_), puntos (.) y guiones (-). El nombre de archivo no puede estar vacío, terminar en punto ni contener dos puntos consecutivos. | | 0x80830003 | E_GS_OUT_OF_LOCAL_STORAGE | El dispositivo no tiene capacidad de almacenamiento suficiente para guardar la partida. | Los usuarios deben liberar espacio de almacenamiento de Game Saves en el dispositivo. Este error puede producirse aunque no se supere la cuota por usuario.
Para obtener más información, consulte Administración de Game Saves a través del dispositivo. | | 0x80830007 | E_GS_PROVIDED_BUFFER_TOO_SMALL | El búfer proporcionado a la API era demasiado pequeño. | Este error se produce si el autor de la llamada pasa a las API de Game Save un búfer más pequeño que el tamaño de los datos de blob leídos. Llame a XAsyncGetResultSize si usa llamadas
Async para asegurarse de que se usa el tamaño de búfer correcto. | | 0x80830008 | E_GS_BLOB_NOT_FOUND | No se encuentra el blob especificado. | Para confirmar que existe un blob, use las herramientas xbstorage o gamesaveutil para descargar el blob. Realice este paso después de que el título libere el bloqueo (cuando finalice o se suspenda) para evitar un comportamiento indefinido.Para obtener más información, consulte Herramientas de Game Saves. | | 0x80830009 | E_GS_NO_SERVICE_CONFIGURATION | El título no está configurado correctamente para el almacenamiento conectado. | Este error se produce cuando el SCID es incorrecto o cuando el título no está configurado correctamente en Partner Center.
Para obtener más información, consulte Configuraciones de Partner Center. | | 0x8083000A | E_GS_CONTAINER_NOT_IN_SYNC | El contenedor aún no está sincronizado. | Asegúrese de que el contenedor de XGameSave esté sincronizado antes de enviarle actualizaciones. | | 0x8083000B | E_GS_CONTAINER_SYNC_FAILED | La sincronización del contenedor falló. | Confirme que la conexión a Internet es estable al sincronizar datos desde la nube. | | 0x8083000C | E_GS_USER_NOT_REGISTERED_IN_SERVICE | Indica que la MSA del usuario aún no es una cuenta de servicios de XBOX. | Confirme que el usuario que está usando está registrado correctamente en Partner Center. | | 0x8083000D | E_GS_HANDLE_EXPIRED | El identificador usado por la función expiró y debe volver a adquirirse. |
XGameSaveUpdateHandle no se puede reutilizar después de un envío ni cuando el título está suspendido | | 0x8083000E | E_GS_ASYNC_FUNCTION_REQUIRED | La función se está llamando en un subproceso sensible al tiempo, con riesgo de interbloqueos. | Use la implementación asincrónica en su lugar. | | 0x8083000F | E_GS_PROVIDER_MISMATCH | El juego está mezclando llamadas de XGameSave y XGameSaveFiles, lo que no se admite. | Solo se puede inicializar un tipo de API de Game Saves a la vez dentro de un título. Además, use una sola API de Game Saves por título. En caso de que trabaje con varios títulos, existen métodos para la interoperabilidad entre distintas API. Para obtener más información, consulte Interoperabilidad entre XGameSave y XGamesaveFiles | | 0x80831001 | E_GS_TERMINATEDTITLE_STALE_DATA
o
TerminateApplicationAfterSuspend| Esta información no se expone a través de API orientadas al usuario. El comportamiento es el esperado. La administración de la vida útil del proceso (PLM) detiene el título cuando detecta datos obsoletos y el dispositivo vuelve a conectarse a Internet. Después de un evento de suspensión, la aplicación se cierra. | Esta salida de depuración no es un error. Cuando el juego se termina porque no obtuvo el bloqueo de Game Saves en el momento de la inicialización (por ejemplo, durante el juego sin conexión o una elección en el cuadro de diálogo de conflicto), el sistema operativo termina el juego al suspenderlo para garantizar un estado limpio en el siguiente inicio. |
Códigos NTSTATUS de Win32
ConXGameSaveFiles, pueden aparecer los siguientes códigos de estado.
Documentación de referencia de la API
- XGameSave (contenido de la API)
- Funciones
- XGameSaveFiles (contenido de la API)
- Funciones
- xasync (contenido de la API)
- Funciones
