Construa um Jogo ao Vivo Com Unity Gaming Services
Pacotes UGS
| Pacote | Versão Mínima | Propósito |
|---|---|---|
com.unity.services.core | 1.16.0 | Inicialização, grafo de dependências |
com.unity.services.authentication | 3.6.1 | Login e identidade do jogador |
com.unity.services.cloudcode | 2.10.3 | Módulos C# autoritativos do servidor |
com.unity.services.cloudsave | 3.4.0 | Armazenamento chave-valor por jogador e compartilhado |
com.unity.remote-config | 4.2.5 | Configuração de jogo no lado do servidor |
com.unity.services.deployment | 1.7.2 | Implantar recursos na nuvem a partir do Editor |
com.unity.services.tooling | 1.4.1 | Controle de Acesso e Game Overrides |
com.unity.services.apis | 1.1.1 | Clientes REST gerados para todos os serviços UGS |
- Padrão de Inicialização
- Mapa de Pacotes
- Arquitetura — Como os Pacotes se Combinam
- Serviços Principais — Referência Rápida
- Blocos de Construção da Asset Store
- Blueprints de Funcionalidades Prontas
- Padrões Comuns de Arquitetura
- Validação
- Lista de Verificação de Implantação
- Referências Detalhadas
Padrão de Inicialização
Todo jogo UGS começa da mesma forma. O com.unity.services.core deve inicializar primeiro, depois o jogador faz login:
using Unity.Services.Core;
using Unity.Services.Authentication;
await UnityServices.InitializeAsync();
await AuthenticationService.Instance.SignInAnonymouslyAsync();
// Todos os outros serviços estão prontos agora
Após a conclusão de InitializeAsync(), os singletons dos serviços (ex.: CloudSaveService.Instance, CloudCodeService.Instance) estão disponíveis.
Mapa de Pacotes
Fundação
| Pacote | Propósito | Singleton / Ponto de Entrada |
|---|---|---|
| Core | Inicialização, grafo de dependências, registro de componentes | UnityServices.InitializeAsync() |
| Authentication | Login do jogador (anônimo, social, Unity, nome de usuário/senha), identidade | AuthenticationService.Instance |
| Services APIs | Clientes REST gerados para todos os serviços UGS; acesso à API de administração via contas de serviço | Classes diretas da API |
Dados e Configuração do Jogador
| Pacote | Propósito | Singleton / Ponto de Entrada |
|---|---|---|
| Cloud Save | Dados chave-valor por jogador (Padrão, Público, Protegido) e dados Customizados globais do jogo | CloudSaveService.Instance.Data.Player / .Data.Custom |
| Remote Config | Configuração do jogo no lado do servidor, feature flags, definições JSON | RemoteConfigService.Instance |
| Economy | Moedas virtuais, itens de inventário, compras, lojas | EconomyService.Instance |
Lógica do Servidor e Segurança
| Pacote | Propósito | Singleton / Ponto de Entrada |
|---|---|---|
| Cloud Code | Módulos C# autoritativos do servidor para gravações confiáveis e validação | CloudCodeService.Instance → CallModuleEndpointAsync |
| Tooling | Criar e implantar arquivos de Controle de Acesso (.ac) e Game Overrides (.ugo) | Apenas Editor (Janela de Implantação) |
| Deployment | Implantar recursos na nuvem (.rc, .ac, .ccmr, .lb, etc.) a partir do Unity Editor | Apenas Editor (Services > Deployment) |
Social e Competitivo
| Pacote | Propósito | Singleton / Ponto de Entrada |
|---|---|---|
| Multiplayer | Sessões, matchmaking, salas de espera. Blocos de Construção: Sessão Multiplayer, Sessão Matchmaker, Sessão de Servidor | MultiplayerService.Instance |
| Leaderboards | Envio de pontuação, rankings, níveis, histórico de versão. Bloco de Construção: Leaderboards | LeaderboardsService.Instance |
Telemetria
| Pacote | Propósito | Singleton / Ponto de Entrada |
|---|---|---|
| Analytics | Eventos personalizados, eventos padrão, gerenciamento de consentimento | AnalyticsService.Instance |
Arquitetura — Como os Pacotes se Combinam
UnityServices.InitializeAsync()
│
▼
AuthenticationService
(fazer login → PlayerId)
│
┌───────────────┼───────────────┐
▼ ▼ ▼
Remote Config Cloud Save Economy
(config. do jogo, (estado do jog., (moedas,
definições, progresso, inventário,
feature flags) preferências) compras)
│ │ │
└───────┬───────┘ │
▼ │
Cloud Code │
(gravações │
autoritativas do ◄──────────┘
servidor,
validação,
lógica anti-cheat)
│
┌───────┼───────┐
▼ ▼ ▼
Cloud Save Economy Leaderboards
(gravações (conces- (envio de
protegidas) são de pontuação)
itens)
Princípio chave: Para qualquer dado que afete a integridade do jogo (XP, recompensas, moedas), roteie as gravações através de módulos Cloud Code. Gravações diretas do cliente são apropriadas apenas para dados não sensíveis (preferências, configurações de exibição).
Serviços Principais — Referência Rápida
Authentication
Pacote: com.unity.services.authentication (>= 3.6.1)
Gerencia a identidade do jogador. Métodos de login: anônimo, provedores sociais (Google, Apple, Steam, Facebook, Oculus, etc.), navegador Unity, nome de usuário/senha e fluxo de código de dispositivo.
Após o login: PlayerId e PlayerName estão disponíveis. Todos os métodos de login disparam o evento SignedIn. O PlayerAccountService (para login via navegador Unity) reside em um assembly separado (Unity.Services.Authentication.PlayerAccounts).
- Referência completa: references/authentication.md
- Bloco de Construção: Conta do Jogador — UI de login pronta e gerenciamento de identidade
Cloud Code
Pacote: com.unity.services.cloudcode (>= 2.10.3)
Executa módulos C# no lado do servidor (.NET 9) para operações confiáveis. Módulos são implantados como arquivos .ccmr. O cliente chama:
var result = await CloudCodeService.Instance.CallModuleEndpointAsync<TResult>(
"ModuleName", "FunctionName", args);
Prefira módulos C# em vez de scripts JavaScript para produção. Módulos também suportam mensagens push em tempo real via assinaturas, gatilhos orientados a eventos e escopo de sessão multiplayer.
- Referência completa: references/cloud-code.md
Cloud Save
Pacote: com.unity.services.cloudsave (>= 3.4.0)
Armazenamento chave-valor por jogador com três classes de acesso, além de dados Customizados globais do jogo:
| Classe de Acesso | Leitura | Gravação | Caso de Uso |
|---|---|---|---|
| Padrão | Proprietário | Proprietário | Configurações privadas, preferências |
| Público | Qualquer um | Proprietário | Perfis públicos, nomes de exibição |
| Protegido | Proprietário | Apenas servidor (Cloud Code) | Dados anti-cheat, estado concedido pelo servidor |
| Customizado | Qualquer jogador | Apenas servidor | Estado compartilhado do jogo, configurações globais |
Valores são serializados como JSON. Suporta controle de concorrência com bloqueio de gravação via SaveItem, consultas no lado do servidor via QueryAsync e armazenamento de arquivos binários.
- Referência completa: references/cloud-save.md
- Blocos de Construção: Usado por Conquistas