Construye un Juego en Vivo con Unity Gaming Services
Paquetes UGS
| Paquete | Versión Mínima | Propósito |
|---|---|---|
com.unity.services.core | 1.16.0 | Inicialización, grafo de dependencias |
com.unity.services.authentication | 3.6.1 | Inicio de sesión e identidad del jugador |
com.unity.services.cloudcode | 2.10.3 | Módulos C# autoritativos del servidor |
com.unity.services.cloudsave | 3.4.0 | Almacenamiento clave-valor por jugador y compartido |
com.unity.remote-config | 4.2.5 | Configuración de juego del lado del servidor |
com.unity.services.deployment | 1.7.2 | Desplegar recursos en la nube desde el Editor |
com.unity.services.tooling | 1.4.1 | Control de Acceso y Anulaciones de Juego |
com.unity.services.apis | 1.1.1 | Clientes REST generados para todos los servicios UGS |
- Patrón de Inicialización
- Mapa de Paquetes
- Arquitectura — Cómo se Combinan los Paquetes
- Servicios Principales — Referencia Rápida
- Componentes de la Asset Store
- Planos de Características Listos para Usar
- Patrones de Arquitectura Comunes
- Validación
- Lista de Verificación de Despliegue
- Referencias Detalladas
Patrón de Inicialización
Cada juego UGS comienza de la misma manera. com.unity.services.core debe inicializarse primero, luego el jugador inicia sesión:
using Unity.Services.Core;
using Unity.Services.Authentication;
await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
// Todos los demás servicios ya están listos
Después de que InitializeAsync() se complete, los singletons de servicio (por ejemplo, CloudSaveService.Instance, CloudCodeService.Instance) están disponibles.
Mapa de Paquetes
Fundación
| Paquete | Propósito | Singleton / Punto de Entrada |
|---|---|---|
| Core | Inicialización, grafo de dependencias, registro de componentes | UnityServices.InitializeAsync() |
| Authentication | Inicio de sesión del jugador (anónimo, social, Unity, nombre de usuario/contraseña), identidad | AuthenticationService.Instance |
| Services APIs | Clientes REST generados para todos los servicios UGS; acceso a API de administración a través de cuentas de servicio | Clases API directas |
Datos del Jugador y Configuración
| Paquete | Propósito | Singleton / Punto de Entrada |
|---|---|---|
| Cloud Save | Datos clave-valor por jugador (Default, Public, Protected) y datos Custom de todo el juego | CloudSaveService.Instance.Data.Player / .Data.Custom |
| Remote Config | Configuración de juego del lado del servidor, banderas de características, definiciones JSON | RemoteConfigService.Instance |
| Economy | Monedas virtuales, artículos de inventario, compras, tiendas | EconomyService.Instance |
Lógica del Servidor y Seguridad
| Paquete | Propósito | Singleton / Punto de Entrada |
|---|---|---|
| Cloud Code | Módulos C# autoritativos del servidor para escrituras confiables y validación | CloudCodeService.Instance → CallModuleEndpointAsync |
| Tooling | Autor y desplegar archivos de Control de Acceso (.ac) y Anulaciones de Juego (.ugo) | Solo Editor (Ventana de Despliegue) |
| Deployment | Desplegar recursos en la nube (.rc, .ac, .ccmr, .lb, etc.) desde el Editor de Unity | Solo Editor (Servicios > Deployment) |
Social y Competitivo
| Paquete | Propósito | Singleton / Punto de Entrada |
|---|---|---|
| Multiplayer | Sesiones, coincidencia de partidas, lobbies. Componentes: Multiplayer Session, Matchmaker Session, Server Session | MultiplayerService.Instance |
| Leaderboards | Envío de puntuaciones, clasificaciones, niveles, historial de versiones. Componente: Leaderboards | LeaderboardsService.Instance |
Telemetría
| Paquete | Propósito | Singleton / Punto de Entrada |
|---|---|---|
| Analytics | Eventos personalizados, eventos estándar, gestión de consentimiento | AnalyticsService.Instance |
Arquitectura — Cómo se Combinan los Paquetes
UnityServices.InitializeAsync()
│
▼
AuthenticationService
(iniciar sesión → PlayerId)
│
┌───────────────┼───────────────┐
▼ ▼ ▼
Remote Config Cloud Save Economy
(config. juego, (estado jug., (monedas,
definiciones, progreso, inventario,
banderas) preferencias) compras)
│ │ │
└───────┬───────┘ │
▼ │
Cloud Code │
(escrituras ◄─────────┘
autoritativas,
validación,
lógica anti-trampas)
│
┌───────┼───────┐
▼ ▼ ▼
Cloud Save Economy Leaderboards
(escrituras (conces. (envío
protegidas) serv.) punt.)
Principio clave: Para cualquier dato que afecte la integridad del juego (XP, recompensas, moneda), enruta las escrituras a través de módulos de Cloud Code. Las escrituras directas del cliente solo son apropiadas para datos no sensibles (preferencias, configuración de pantalla).
Servicios Principales — Referencia Rápida
Authentication
Paquete: com.unity.services.authentication (>= 3.6.1)
Gestiona la identidad del jugador. Métodos de inicio de sesión: anónimo, proveedores sociales (Google, Apple, Steam, Facebook, Oculus, etc.), navegador Unity, nombre de usuario/contraseña y flujo de código de dispositivo.
Después del inicio de sesión: PlayerId y PlayerName están disponibles. Todos los métodos de inicio de sesión disparan el evento SignedIn. PlayerAccountService (para inicio de sesión en navegador Unity) reside en un ensamblado separado (Unity.Services.Authentication.PlayerAccounts).
- Referencia completa: references/authentication.md
- Componente: Player Account — interfaz de inicio de sesión y gestión de identidad listas para usar
Cloud Code
Paquete: com.unity.services.cloudcode (>= 2.10.3)
Ejecuta módulos C# del lado del servidor (.NET 9) para operaciones confiables. Los módulos se despliegan como archivos .ccmr. El cliente llama:
var result = await CloudCodeService.Instance.CallModuleEndpointAsync<TResult>(
"NombreDelMódulo", "NombreDeLaFunción", args);
Prefiere módulos C# sobre scripts JavaScript para producción. Los módulos también soportan mensajes push en tiempo real a través de suscripciones, disparadores basados en eventos y alcance de sesión multijugador.
- Referencia completa: references/cloud-code.md
Cloud Save
Paquete: com.unity.services.cloudsave (>= 3.4.0)
Almacenamiento clave-valor por jugador con tres clases de acceso, más datos Custom de todo el juego:
| Clase de Acceso | Lectura | Escritura | Caso de Uso |
|---|---|---|---|
| Default | Propietario | Propietario | Configuración privada, preferencias |
| Public | Cualquiera | Propietario | Perfiles públicos, nombres mostrados |
| Protected | Propietario | Solo servidor (Cloud Code) | Datos anti-trampas, estado otorgado por servidor |
| Custom | Cualquier jugador | Solo servidor | Estado de juego compartido, configuraciones globales |
Los valores se serializan como JSON. Soporta control de concurrencia con bloqueo de escritura mediante SaveItem, consultas del lado del servidor mediante QueryAsync y almacenamiento de archivos binarios.
- Referencia completa: references/cloud-save.md
- Componentes: Usado por Achievements (logros)