Por qué la nube#
Un guardado local vive en un dispositivo: si el jugador cambia de móvil o entra desde el PC, no está. El cloud save guarda el progreso en un servidor asociado a la cuenta del jugador, y lo recupera en cualquier dispositivo (cross-save). Además, al vivir en un servidor, abre la puerta a protegerlo de trampas.
Unity Cloud Save (UGS)#
Unity ofrece Cloud Save dentro de los Unity Gaming Services (UGS): un almacén clave-valor por jugador, sin montar tu propio backend.
Necesitas vincular el proyecto a la Unity Dashboard (un Project ID) e instalar los paquetes Authentication y Cloud Save desde el Package Manager. El servicio tiene una capa gratuita generosa y luego escala con el uso.
El flujo: autenticar y luego guardar#
Antes de guardar en la nube hay que identificar al jugador (aunque sea de forma anónima):
using Unity.Services.Core;
using Unity.Services.Authentication;
using Unity.Services.CloudSave;
using System.Collections.Generic;
using UnityEngine;
public class GuardadoNube : MonoBehaviour
{
async void Start()
{
await UnityServices.InitializeAsync();
// Login anónimo: crea/recupera una cuenta ligada al dispositivo
if (!AuthenticationService.Instance.IsSignedIn)
await AuthenticationService.Instance.SignInAnonymouslyAsync();
}
public async void Guardar(int nivel, int monedas)
{
var datos = new Dictionary<string, object> { { "nivel", nivel }, { "monedas", monedas } };
await CloudSaveService.Instance.Data.Player.SaveAsync(datos);
}
public async void Cargar()
{
var claves = new HashSet<string> { "nivel", "monedas" };
var datos = await CloudSaveService.Instance.Data.Player.LoadAsync(claves);
if (datos.TryGetValue("nivel", out var v)) Debug.Log("Nivel: " + v.Value.GetAs<int>());
}
}El patrón robusto: guarda siempre en local (rápido, funciona sin conexión) y sincroniza con la nube cuando hay red. Si el jugador está offline, el juego sigue; al reconectar, subes. Nunca dependas de la nube para poder jugar.
La nube y las trampas#
Aquí está la gran ventaja de fondo: un guardado local siempre se puede editar; solo el servidor puede ser autoridad.
Guardar en la nube protege el progreso entre dispositivos, pero si el cliente decide "tengo 999 monedas" y lo sube, la nube lo cree. Para datos competitivos (rankings, economía real) necesitas lógica en servidor que valide (Cloud Code / tu backend): el cliente propone, el servidor decide. Es el mismo principio del servidor autoritativo en multijugador.
Errores frecuentes#
- Intentar guardar en la nube sin autenticar primero (falla).
- Depender de la conexión para poder jugar (guarda local y sincroniza).
- Subir datos sensibles sin validarlos en servidor y creer que están "seguros".
- No gestionar conflictos (jugó offline en dos sitios): decide una política (último gana, o fusionar).
- Bloquear el hilo esperando la nube: las llamadas son
async, úsalas sin congelar el juego.
Ponte a prueba#
Resumen#
El cloud save guarda el progreso por cuenta en un servidor (cross-save entre dispositivos). Con Unity Cloud Save (UGS) tienes un almacén clave-valor sin montar backend: inicializas UGS, autenticas (login anónimo vale) y usas SaveAsync/LoadAsync. El patrón sano es local primero, nube después, para funcionar sin conexión. Y recuerda: la nube protege el progreso, pero solo la validación en servidor frena las trampas — el cliente propone, el servidor decide. Para lo local, sigue con JSON o binario.