Resumen
Steam Cloud almacena automáticamente archivos de tu juego en los servidores de Steam para que los jugadores puedan iniciar sesión en Steam y acceder a sus partidas guardadas desde cualquier equipo.Nivel de integración
Configuración de las rutas de archivo necesarias en el sitio web de Steamworks. Alternativamente, las llamadas a la API que es necesario hacer desde dentro del código del juego a Steamworks para enumerar, leer, eliminar o escribir archivos en lSteam Cloud.Descripción general de Steam Cloud
Steam Cloud ofrece un sistema sencillo y transparente de almacenamiento remoto para los juegos. Los archivos especificados en la configuración de Auto-Cloud o guardados en disco (creados, modificados, borrados, etc.) con la API de Steam Cloud se duplican automáticamente en los servidores de Steam tras salir del juego.
Si el usuario cambia de equipo, los archivos se descargan automáticamente en el nuevo antes de iniciar el juego. A continuación, se puede acceder a los archivos leyéndolos a través de la API de Steam Cloud o directamente en el disco, como de costumbre. Evita configuraciones específicas del equipo, como los ajustes de video.
El cliente de Steam se ocupa de que todos los archivos estén sincronizados en todos los equipos a los que acceda el usuario.
Los usuarios pueden deshabilitar de manera global la sincronización de Steam Cloud en los ajustes de este servicio, desmarcando la opción "Activar sincronización de Steam Cloud para las aplicaciones que lo soporten".
Los usuarios también pueden desactivar la sincronización con la nube en las propiedades de cada juego.
Notas y prácticas recomendadas
Es importante recordar que Steam sincronizará los archivos de Steam Cloud del usuario para tu juego antes y después de cada sesión. Cualquier archivo coincidente que cambie durante la sesión se cargará al almacenamiento en la nube inmediatamente después. Si tu juego escribe archivos muy grandes, o muchos archivos pequeños, en Steam Cloud, esto puede causar un impacto notable en el ancho de banda de internet del usuario y también retrasar su capacidad de cerrar Steam o volver a iniciar el juego.
Como regla general, los archivos más pequeños funcionarán mejor. Si el estado de guardado para un usuario determinado se puede dividir en diferentes categorías (cosas que pueden cambiar con frecuencia y cosas que pueden no cambiar con frecuencia), entonces recomendamos usar archivos separados para esas categorías. De esa manera, el estado sin cambios no se volverá a cargar después de cada sesión.
Límites de tamaño de los archivos
Los límites absolutos de tamaño de los archivos de Steam Cloud pueden cambiar con el tiempo. Estos son algunos límites y umbrales actuales:
Tamaño | Restricción |
---|
100 MB | Tamaño máximo para una llamada a ISteamRemoteStorage::FileWrite or ISteamRemoteStorage::FileWriteStreamWriteChunk |
256 MB | Puede ocasionar una elección de punto final de almacenamiento no óptima para la ubicación del usuario, lo que afecta negativamente el rendimiento de carga/descarga. |
Rutas de archivos guardados
A la hora de decidir dónde guardar los archivos guardados, asegúrate de que sea una ruta exclusiva para el usuario de Steam actual. Si es necesario, puedes utilizar
ISteamUser::GetSteamID para obtener el id. de Steam exclusivo del usuario. Desde ahí, puedes utilizar GetAccountID() para acceder al id. de la cuenta y conseguir una variable exclusiva para crear la ruta de guardado.
Guardados multiplataforma
En caso de que tu juego esté disponible en varias plataformas, o tengas planes para ello en un futuro, deberías considerar esto al configurar Steam Cloud en tu juego.
Si planeas leer o escribir archivos directamente a través de la interfaz
ISteamRemoteStorage
, entonces puedes controlar la sincronización con otras plataformas por medio de
ISteamRemoteStorage::SetSyncPlatforms. La configuración predeterminada para archivos nuevos es sincronizar con
todas las plataformas.
Si deseas usar
Steam Auto-Cloud, hay algunas cosas importantes que debes saber. Primero, la configuración predeterminada para nuevos archivos es sincronizar
solo con lo que esté establecido en los parámetros del
sistema operativo (SO)
en la ruta de acceso raíz de Auto-Cloud asociada. Esto significa que, al definir raíces diferentes para cada SO, todos los archivos serán divididos por plataformas y, por lo tanto, no habrá guardados entre plataformas.
Para activar el guardado multiplataforma, deberías establecer una única ruta de acceso raíz (generalmente para Windows) y luego crear
reemplazos de ruta raíz
para las otras plataformas. Los archivos que se correspondan con una ruta de acceso raíz proporcionada que contenga reemplazos de ruta raíz para otras plataformas se sincronizarán con todas las plataformas establecidas en la raíz original y en los reemplazos. Consulta la documentación de
Steam Auto-Cloud para obtener más información.
Configuración inicial
Para configurar Steam Cloud, debes configurar la
Cuota de bytes por usuario
y el
Número de archivos permitidos por usuario
en la página
Configuración de Steam Cloud del panel de administración de la aplicación de Steamworks.
Esta cuota se impone en cada juego con la nube activada, por usuario y juego. Es recomendable fijar valores razonables para el juego en específico.
NOTA: No olvides hacer clic en "Guardar", en la parte inferior de la página, y publicar los nuevos ajustes. Hecho esto, todo el que posea el juego podrá ver el ícono de la nube en el cliente de Steam.
Si tu juego ya ha sido lanzado al público, puedes marcar la casilla
Habilitar solo soporte en la nube para desarrolladores
. Si está activado el modo solo para desarrolladores, solo verán el ícono de la nube y podrán usar Steam Cloud las cuentas de Steam que cuenten con licencia "Developer Comp" para ese título. Resulta útil para probar la integración con Steam Cloud sin interrumpir la experiencia del usuario público. No tiene ningún efecto en juegos que no se han publicado, ya que, como nadie tiene el juego aún, nadie puede ver o tener acceso al almacenamiento en la nube de ese id. de aplicación.
Puedes compartir el espacio de almacenamiento en Cloud entre dos ids. de aplicación completando el campo
Id. de aplicación de Cloud compartida
. Esto suele utilizarse para compartir partidas guardadas entre una demo y el juego completo. El valor
0 desactiva esta característica.
API de Steam Cloud y Steam Auto-Cloud
Steam ofrece dos métodos diferentes para utilizar Steam Cloud. Aquí señalamos las diferencias entre ambos métodos para facilitar la elección del más adecuado para cada aplicación.
Primero está la API de Steam Cloud.
Esta proporciona una serie de funciones que te permiten integrar directamente Steam Cloud en tu juego. La API de Cloud aísla los archivos de los usuarios de Steam y ofrece un mayor nivel de control sobre Steam Cloud.
La API de Steam Cloud se expone a través de la interfaz API
ISteamRemoteStorage y puedes encontrar ejemplos de uso en el proyecto
Ejemplo de aplicación de la API de Steamworks (Spacewar!).
El segundo es
Steam Auto-Cloud.
Steam Auto-Cloud fue diseñado para juegos en los que no se puede integrar la API de Steam Cloud. Es una forma rápida y sencilla de empezar, pero carece de la flexibilidad que sí ofrece la API de Steam Cloud.
Si prefieres una integración más profunda con Steam Cloud (por ejemplo, permitir elegir qué archivos guardados se almacenan en la nube), entonces debes usar la API de Cloud. De lo contrario, puedes usar Steam Auto-Cloud.
Steam Auto-Cloud
Steam Auto-Cloud es una alternativa a la API de Steam Cloud que permite usar Steam Cloud para aplicaciones sin tener que escribir código o modificar el juego en absoluto. Solo es necesario especificar los grupos de archivos que se desean conservar en la nube. Steam sincronizará automáticamente los grupos de archivos cuando la aplicación se inicie y se cierre. Evita usar configuraciones específicas de equipo, como la calidad de video.
Nota: El archivo steam_autocloud.vdf se creará en cada ubicación especificada por las rutas de la nube de Steamworks. Steam usa este archivo y tu juego puede ignorarlo.
Configuración
Después de completar
Configuración inicial la sección de configuración de Steam Auto-Cloud se desbloqueará en la página
Configuración de Steam Cloud.
Las rutas de acceso raíz describen grupos de archivos que se conservarán en Steam Cloud. Una ruta de acceso raíz puede ser tan específica como un único archivo o tan amplia como todos los archivos de una subcarpeta determinada. Usa una nueva ruta para cada grupo de archivos que deseas sincronizar.
Una ruta de acceso raíz se compone de cinco partes:
-
Raíz
Es una lista de rutas predeterminadas en las que se ubican habitualmente las partidas guardadas.
Raíz | Sistemas operativos soportados | Ruta correspondiente |
App Install Directory | Todos | [Steam Install]\SteamApps\common\[Game Folder]\ |
SteamCloudDocuments | Todos | Ruta específica de la plataforma, por ej. en Linux: ~/.SteamCloud/[username]/[Carpeta de juego]/ |
WinMyDocuments | Windows | %USERPROFILE%\My Documents\ |
WinAppDataLocal | Windows | %USERPROFILE%\AppData\Local\ |
WinAppDataLocalLow | Windows | %USERPROFILE%\AppData\LocalLow\ |
WinAppDataRoaming | Windows | %USERPROFILE%\AppData\Roaming\ |
WinSavedGames | Windows | %USERPROFILE%\Saved Games\ |
MacHome | macOS | ~/ |
MacAppSupport | macOS | ~/Library/Application Support/ |
MacDocuments | macOS | ~/Documents/ |
LinuxHome | Linux | ~/ |
LinuxXdgDataHome | Linux | $XDG\_DATA\_HOME/ |
Nota sobre las rutas de %USERPROFILE% de Windows: las rutas correspondientes que aparecen en la lista de arriba son las ubicaciones predeterminadas. Ahora el usuario puede configurar la instalación de Windows para que estas carpetas se encuentren en diferentes ubicaciones que no estén necesariamente en el perfil de %USERPROFILE%. Steam utiliza las API de Windows necesarias para encontrar la ubicación actual de estas carpetas, independientemente de si son carpetas predeterminadas o personalizadas.
-
Subdirectorio
Ruta del subdirectorio a los archivos almacenados en la nube, relativa a la raíz. Se usa "." si no se utiliza ningún subdirectorio.
Valores especiales de ruta de acceso de Auto-Cloud
Auto-Cloud permite el uso de identificadores de usuario de Steam únicos en la ruta Subdirectorio
. De esta forma, se pueden almacenar por separado las partidas guardadas de cada usuario de Steam en el ordenador. Se puede usar ISteamUser::GetSteamID en tu juego para obtener el SteamID o el AccountID del usuario actual para guardar y recuperar las partidas.
-
{64BitSteamID}
: usa esta variable en la ruta de Steam para insertar el id. de Steam de 64 bits del usuario. Id. de Steam de 64 bits se parece a: 76561198027391269
-
{Steam3AccountID}
: usa esta variable en la ruta de Steam para insertar el id. de la cuenta de Steam3 del usuario. Un id. de cuenta tiene este aspecto: 67125541
Ejemplo: SavesDir/{64BitSteamID}
-
Patrón
Patrón de máscara de archivo que debe coincidir. Puedes utilizar *
como comodín. Si deseas todos los archivos en el directorio, simplemente usa *
.
Ejemplo: *.sav
-
SO
Establece el sistema operativo para el que se sincronizarán estos archivos. Solo es necesario si los archivos son específicos del sistema operativo, ¡y es mejor que no lo sean!
-
Recursivo
Se incluyen los subdirectorios al buscar archivos coincidentes. Sirve para designar subdirectorios cuyos nombres no están fijados, como los que tienen nombres o identificadores de usuario distintos de los de Steam. Si se va a usar un id. de Steam, lo más recomendable es utilizar los valores especiales de ruta en el campo Subdirectorio.
Reemplazos de ruta raíz
Si tu aplicación es multiplataforma y requiere un directorio distinto para cada SO, puedes utilizar los reemplazos de rutas raíz para especificar un reemplazo para la ruta raíz configurada anteriormente.
Las rutas raíz especificadas arriba pueden ser sustituidas para apuntar a una ruta distinta en otro SO. Si utilizas el reemplazo de ruta raíz, debes especificar [Todos los sistemas operativos] en el cuadro desplegable de arriba para Ruta raíz del SO.
Un reemplazo de ruta raíz consta de cinco partes.
-
Raíz original
Corresponde a una de las raíces establecidas más arriba.
-
SO
Sistema operativo al que se aplica este reemplazo.
-
Nueva raíz
Ubicación del sistema operativo especificado que corresponderá a la de la raíz original.
-
agregar/Reemplazar ruta
Opcionalmente, se puede agregar la ruta de un subdirectorio que se insertará entre la nueva raíz y el subdirectorio original.
-
Reemplazar ruta
Si se habilita, hace que la ruta especificada en agregar/Reemplazar ruta sustituya por completo el subdirectorio original.
Ejemplo: Configuración de Auto-Cloud para aplicaciones Unity
El siguiente es un ejemplo de la configuración de Auto-Cloud para su uso con Unity y la propiedad
Application.persistentDataPath
donde el valor es diferente según el sistema operativo. La versión para Windows se configura como ruta de acceso raíz, la compañía en Unity es DefaultCompany y el proyecto se llama AutocloudSample. En macOS y Linux/SteamOS, las rutas alternativas de
Application.persistentDataPath
se configuran en el campo Agregar/Reemplazar ruta y Reemplazar ruta está habilitada.
Con esta configuración, los archivos de Auto-Cloud se sincronizarán entre las tres carpetas, tal como aparecen en las muestras de vista previa.
Pruebas prelanzamiento
Si agregas Auto-Cloud a un juego que ya se ha publicado y se ha habilitado el modo solo desarrolladores durante la
Configuración inicial, es necesario seguir unos pasos adicionales para probar la funcionalidad.
- Inicia sesión en Steam con una cuenta que posea la aplicación que estás probando.
- Abre la Consola Steam navegando a
steam://open/console
en tu navegador.
- Introduce
testappcloudpaths <AppId>
en la consola con el id. de la aplicación que estás probando. Ejemplo: testappcloudpaths 480
- Introduce
set_spew_level 4 4
en la consola.
- Inicia la aplicación desde Steam.
- Comprueba la actividad en la consola. Si hay archivos presentes en las rutas de acceso de Auto-Cloud, asegúrate de que se están cargando. Si no los hay, guarda algún archivo desde la aplicación y ciérrala para provocar la sincronización.
- Repite los pasos anteriores en otro equipo para probar la descarga de archivos desde Steam Auto-Cloud.
- Asegúrate de comprobarlo en todos los sistemas operativos compatibles.
- Establece
testappcloudpaths 0
y set_spew_level 0 0
para finalizar la prueba. Puedes reiniciar el cliente de Steam para deshacerte de la pestaña de la consola.
No olvides deshabilitar el modo solo desarrolladores y publicar los cambios cuando termines las pruebas.
Sincronización dinámica con Cloud
Steam Cloud ya es compatible con la sincronización dinámica, mediante la cual los cambios que aparecen en Cloud pueden descargarse al equipo local durante las sesiones de las aplicaciones. Por ejemplo, cuando se suspende una sesión de juego en Steam Deck. En las aplicaciones marcadas como compatibles con la sincronización dinámica con Cloud, Steam sincroniza los archivos con Steam Cloud en el momento en que se suspende la sesión. En ese momento el usuario puede ejecutar el juego en otro dispositivo y recibir las actualizaciones de la sesión en Steam Deck al iniciarlo. Al salir, los cambios se suben a Steam Cloud. Por último, cuando se reinicia Steam Deck, Steam sincroniza los cambios con el dispositivo y envía una notificación a la aplicación sobre los archivos locales que han cambiado. A continuación, la aplicación puede iterar dichos cambios y realizar las acciones oportunas. Por ejemplo, el juego podría cargar el progreso actualizado a partir del disco para que el usuario pueda seguir la partida exactamente donde la dejó en el otro dispositivo.
Echa un vistazo a
la publicación para obtener más información sobre por qué existe esta característica y cómo utilizarla.
Ten en cuenta que esta característica es compatible tanto con las aplicaciones que utilizan la API
ISteamRemoteStorage para administrar los archivos como con las que usan Auto-Cloud.
Para obtener más información, consulta la documentación de
ISteamRemoteStorage (específicamente,
ISteamRemoteStorage::RemoteStorageLocalFileChange_t,
ISteamRemoteStorage::GetLocalFileChangeCount y
ISteamRemoteStorage::GetLocalFileChange).
Consulta también
ISteamRemoteStorage::BeginFileWriteBatch y
ISteamRemoteStorage::EndFileWriteBatch. Estos contenedores deben utilizarse para proporcionarle a Steam pistas que lo ayuden a sincronizarse de forma segura con Steam Cloud en el momento en que el usuario inicie una suspensión del sistema.
Pruebas de prelanzamiento
Para probar compilaciones, puedes activar de forma local la sincronización dinámica con Steam Cloud en tu aplicación, lo cual se recomienda principalmente para los juegos ya lanzados, puesto que su activación para todos los usuarios puede dar lugar a pérdidas de datos cuando se ejecutan compilaciones que no son compatibles con los nuevos métodos y funciones callback de la API.
Para probar localmente desde una PC:
- Inicia sesión en Steam con una cuenta que posea la aplicación que estás probando.
- Introduce
steam://open/console
en el navegador para abrir la consola de Steam. También puedes ejecutar Steam con la línea de comandos steam -console
e ir a la sección de la consola directamente.
- Introduce
@cloud_testdynamicsyncapp <AppId>
en la consola con el id. de la aplicación que estás probando. Por ejemplo: @cloud_testdynamicsyncapp 480
.
- Inicia la aplicación desde Steam.
- Avanza en el juego hasta llegar al punto que desees.
- En la consola de Steam, introduce
prepare_for_suspend
. Steam suspenderá el proceso del juego y subirá a Steam Cloud los archivos que hayan cambiado.
- De manera optativa, puedes jugar al juego en otro dispositivo para avanzar más, y después salir del juego y dejar que los datos del cliente de Steam lleguen a Steam Cloud.
- En el dispositivo inicial, en la consola de Steam, introduce
resume_suspended_games
para sincronizar los archivos necesarios con los datos de Steam Cloud, enviar las llamadas de la API correspondientes al juego y reanudar el proceso del juego.
Para probar localmente desde Steam Deck:
- Conecta tu Steam Deck con un kit de desarrollo.
- Para usar la consola CEF, véase aquí.
- En la consola de JS, introduce
SteamClient.Console.ExecCommand(“@cloud_testdynamicsyncapp <AppId>”)
para activar las pruebas. Luego puedes introducir SteamClient.Console.ExecCommand(“@cloud_testdynamicsyncapp 0”)
para desactivarlas.
Depuración
En primer lugar, asegúrate siempre de haber publicado los cambios en el sitio web de asociados de Steamworks y de haber esperado al menos 10 minutos o haber reiniciado el cliente de Steam para recibir los cambios publicados.
Si tienes problemas con Steam Cloud, debes revisar el archivo de registro ubicado en
%Steam Install%\logs\cloud_log.txt
.
Mira
Depuración de la API de Steamworks para más información.