Skip to main content
Steam habilita el almacenamiento en la nube de una de estas dos maneras. Puede realizar todas sus lecturas y escrituras mediante los métodos de la API ISteamRemoteStorage, que escriben los archivos en la carpeta de almacenamiento del juego en el disco duro local y los sincronizan con la nube. Como alternativa, puede realizar todas sus lecturas y escrituras directamente en el sistema de archivos del equipo y, a continuación, usar Steam Auto-Cloud para sincronizar con la nube la carpeta local que contiene los datos del juego. Microsoft Game Development Kit (GDK) admite ambos enfoques:
Los guardados en la nube sin código no se admiten en las consolas XBOX ni en XBOX Cloud Gaming. Si su título se dirige a consolas o a la nube además de a PC con Windows, use el contenedor de XGameSave o la API completa de XGameSave en su lugar.
El contenedor basado en código es la ruta recomendada para los títulos que se distribuyen en consola o en la nube. Se corresponde estrechamente con la escritura de archivos localmente o mediante la API Remote Storage de Steam. Este tema se centra en el contenedor simplificado.
La API completa de XGameSave, sin contenedor, ofrece más funcionalidad y flexibilidad que el contenedor simple. Si necesita alguna de esas funcionalidades, no use el contenedor. Los juegos no deben alternar entre los dos ni mezclar llamadas de ambas API. Para obtener más información sobre la API XGameSave, consulte Guardados de juego.
Los siguientes ejemplos de código muestran cómo funcionan las operaciones básicas de archivos en el SDK de Steamworks y en Microsoft Game Development Kit (GDK), junto con algunas diferencias sutiles entre las dos API.

Comparación de operaciones de archivos

Los siguientes ejemplos de código muestran cómo realizar operaciones básicas de archivos en la API Remote Storage de Steamworks y su equivalente en el GDK. Asumen que la variable provider contiene un puntero a un objeto Microsoft::Xbox::Wrappers::GameSave::Provider inicializado. Si no usa la API Remote Storage de Steam y en su lugar optó por usar Steam Auto-Cloud, reemplace las llamadas a la API Remote Storage por sus equivalentes de la API del sistema de archivos.

Lectura de un archivo

Steamworks

o

GDK

Documentación de referencia

Microsoft.Xbox.Wrappers.XGameSave.Provider.Load

Escritura de un archivo

Steamworks

o

GDK

Documentación de referencia

Microsoft.Xbox.Wrappers.XGameSave.Provider.Save

Eliminación de un archivo

En Steam, puede eliminar un archivo de la nube pero conservar la copia local (FileForget), o eliminar un archivo de ambas ubicaciones (FileDelete). La API del contenedor de XGameSave no tiene un equivalente de FileForget. Su función Delete funciona como FileDelete en Steamworks.

Steamworks

o

GDK

o
o

Documentación de referencia

Obtención de todos los archivos

Steamworks

GDK

Documentación de referencia

Comprobación del espacio disponible

En los ejemplos siguientes, totalBytes es la cantidad de espacio que se asigna a su juego en el proveedor de almacenamiento en la nube. availableBytes es la cantidad de espacio libre restante (es decir, availableBytes = totalBytesbytesUsed).

Steamworks

GDK

Documentación de referencia

Microsoft.Xbox.Wrappers.XGameSave.Provider.GetQuota

Diferencias de terminología

En Steam, los datos del almacenamiento remoto se administran como archivos, que funcionan como los archivos de un disco duro local. Para leer o escribir, especifique el archivo y, a continuación, obtenga o establezca los bytes que contiene. En Microsoft Game Development Kit (GDK), el equivalente de los archivos de Steam son los blobs. Los blobs se agrupan en una estructura llamada contenedor. Un contenedor es un grupo de blobs con nombre. Por ejemplo, puede usar contenedores para admitir varias ranuras de guardado por usuario, con los mismos nombres de archivo en cada ranura. Si no necesita la capa organizativa adicional que proporcionan los contenedores, coloque todos sus blobs (archivos) en el mismo contenedor.
Los nombres de contenedor no pueden incluir espacios. Intentar acceder a un nombre de contenedor que incluya un espacio, o crearlo, hace que el método del proveedor devuelva un HRESULT de 0x80830001: el volumen especificado no admite niveles de almacenamiento.

Límites de almacenamiento

Microsoft Game Development Kit (GDK) tiene un tamaño máximo de escritura de blob o archivo y un límite de almacenamiento general inferiores a los de Steam. En Steam, cada operación de escritura de archivo está limitada a 100 mebibytes (MiB), y cada archivo no puede superar los 200 MiB. En cambio, la API XGameSave y su contenedor limitan cada blob a 16 MB y permiten un máximo de 256 MB por usuario y juego. Si necesita almacenar más de 16 MB de datos en un blob, divida los datos en varios blobs. A continuación, implemente una función de lectura y escritura secuencial para procesar los datos blob a blob.

Las funciones del contenedor son bloqueantes

La interfaz ISteamRemoteStorage ofrece dos versiones de las funciones de lectura y escritura: FileRead y FileWrite, además de FileReadAsync y FileWriteAsync. Las versiones Async devuelven la llamada cuando el archivo se ha leído o escrito. Las funciones simplificadas del contenedor de XGameSave no ofrecen versiones asincrónicas de sus equivalentes de FileRead y FileWrite. Provider::Load y Provider::Save son ambas bloqueantes, así que tenga en cuenta este comportamiento cuando las use en su juego. Por este motivo, Provider::Initialize produce una excepción si la llama desde el subproceso de la interfaz de usuario.

Inicialización

Incluya el archivo de encabezado del contenedor en la solución de su juego antes de usar cualquier método del contenedor. Puede encontrarlo en %GRDKLatest%\GameKit\Include\xgamesavewrappers.hpp. Antes de usar los métodos del contenedor de XGameSave, cree una instancia de la clase Provider y llame al método Provider::Initialize. Conserve un puntero a la instancia de Provider durante toda la vida útil de su juego. Llame a Provider::Initialize desde un subproceso distinto del subproceso de la interfaz de usuario. El método produce una excepción si lo llama desde el subproceso de la interfaz de usuario. Para inicializar el proveedor del contenedor, necesita un XUserHandle del usuario actual y el identificador de configuración de servicio (SCID) de su juego.

Documentación de referencia

Microsoft.Xbox.Wrappers.XGameSave.Provider.Initialize
Última modificación el 28 de agosto de 2026