Pular para o conteúdo principal
Como o SDK funciona

Esta página ainda não foi traduzida: mostrando a versão em inglês.

Conceitos principais

Os termos que as demais páginas usam sem explicar. Cada um tem uma definição curta e um link para a página onde está o mecanismo por trás dele.

Três assuntos são grandes demais para um verbete e ganharam página própria: Quem toma as decisões — quem está chamando e o que só isso já decide; Como o SDK é construído — do que o SDK é feito; Herança e composição — como os módulos se apoiam uns nos outros.

four primitivesentityrooms · matchmaking · leaderboards · commerceeventsRPCdatagroups assembled intobuilt on
As quatro primitivas, montadas na entidade, e os módulos construídos sobre ela

As quatro formas de trabalhar com um módulo

Todo módulo oferece exatamente quatro coisas, e toda página de módulo se organiza em torno delas. Esse é o modelo de programação:

FormaO que significa
Declaraçõeso que existe e como se comporta, escrito no código ou no painel de administração; o modelo é o mesmo nos dois casos
Hooksas suas regras, que a plataforma chama em etapas nomeadas; publicadas como cloud functions
Eventoso que a plataforma avisa que aconteceu — assine em vez de ficar consultando
Operaçõeso que você pede ou comanda, a partir de uma função ou de um cliente

Ator

Quem está fazendo a chamada. O que uma chamada pode fazer depende do ator por trás dela, nunca do build em que o código foi compilado. O argumento está em Quem toma as decisões; o mecanismo (permissões atômicas, papéis (role) compostos, InterfaceGrant), em Access & Roles.

Os nomes de atores nestas páginas vêm dos presets que a plataforma traz. Um projeto pode dar nomes próprios aos seus atores; os presets são:

player · backend-service · operator · host · moderator · schema-author · architect · bot-brain · room-owner · room-visitor · entry-validator · spectator · match-organizer · warehouse-keeper · seller — e any quando a página se refere a todos eles.

Local de execução

Onde o código roda. Estas quatro tags aparecem em toda tabela de operações:

TagLocal
fnCloud function (C# · TypeScript · Python · Go). A autoridade fica no servidor; o lugar principal das suas regras
clCliente do jogo (Unreal C++ / Unity C#). API simétrica; os papéis liberam menos
mcQuem hospeda a sala (room): um cliente mestre (master-client) — um cliente que é dono de uma sala — ou um servidor dedicado Unreal com a sua chave de host
admPainel de administração / CLI / MCP — onde o SDK e o plano do operador compartilham o mesmo modelo

Onde o código roda não diz em nome de quem ele roda

Onde o código roda e qual interface de ator ele tem são perguntas separadas. O mesmo código tem os mesmos direitos onde quer que esteja; só mudam as permissões concedidas (grant).

Projeto e ambiente

Um projeto é o backend de um jogo, com um esquema e os seus dados em ambientes isolados (dev, prod). Toda chamada roda dentro de um projeto + ambiente.

Entidade

O substantivo central. Uma entidade é uma declaração de esquema mais os seus aspectos vivos: dados 0..*, estados 0..*, RPC 0..*, eventos 0..*, hooks e histórico de mudanças. Um tanque, uma porta, uma barra de stat e uma missão são todos entidades; a diferença está só nos aspectos que cada um carrega. As combinações comuns vêm prontas como presets (GameObject, Stat, Character, Interactable, Projectile). Veja Entity.

Estado esperado

Um pedido de transição pode indicar o estado que espera encontrar, e aí o resultado é esse estado ou uma recusa. Um pedido que não indica nenhum é avaliado contra o estado em que a máquina está quando a plataforma o processa — nunca contra o estado do momento em que foi enviado.

A resposta descreve aquele momento e não promete nada sobre o que vem depois: se a transição de outra pessoa chegar enquanto a resposta está a caminho, a resposta continua verdadeira e não é cancelada.

Indique o estado esperado quando ele importa

Quando o resultado depende do que havia antes, indique o estado esperado. Caso contrário, não leia a resposta como um snapshot que vale depois da chamada.

Sala

Uma sala é uma sessão de jogo, não um lugar onde o seu código roda. Para a plataforma, tanto faz quem a hospeda: um servidor dedicado, um cliente mestre ou o próprio backend. O funcionamento interno da sala é nosso; você conduz a sala de fora, a partir de cloud functions e clientes, por meio de declarações, hooks, eventos e operações. Veja Rooms.

Canal e fluxo

As primitivas assíncronas por baixo de tudo. Um canal é um tópico pub/sub endereçável: uma sala, um grupo, uma entidade ou um canal seu. Um fluxo (stream) é um envio em partes, em qualquer direção: arquivos são consumidos à medida que as partes chegam, consultas podem vir como fluxo, e um RPC pode se espalhar por um grupo e recolher as respostas. Veja Core.

Primitiva

Um dos quatro tijolos de que todo módulo é montado: eventos (declarar, emitir, assinar), RPC (chamar do outro lado da rede), dados e assinaturas (a mecânica de sincronização) e grupos (uma lista, muitos ouvintes). Uma sala, um chat e um pool de matchmaking são a mesma primitiva de grupo com regras diferentes.

Contrato dos hooks

Um só contrato em todo lugar. Um hook before roda antes da validação, recebe o payload tipado e pode alterá-lo ou rejeitá-lo. Um hook after roda depois que a operação foi confirmada, recebe o pedido e o resultado e só pode acrescentar efeitos colaterais — ele nunca faz a operação falhar. Os hooks têm ordem, e toda etapa registrada da plataforma pode recebê-los. Veja Extensibility.

Delta e revisão

Os clientes recebem o estado como deltas: só os campos que mudaram, codificados em relação ao último estado que o receptor confirmou. Todo registro carrega uma revisão; escritas condicionais são rejeitadas quando ela não confere. Um único conceito de versionamento atende à sincronização, à concorrência e ao histórico. Veja Data & Subscriptions. (O que o Unreal chama de replication — qual cliente vê qual estado e com que frequência — fica aqui e em Visibility e Prediction & Lag Comp. A página O que sobrevive à perda de um host trata da outra questão: qual máquina é dona de uma entidade e qual será a próxima.)

Tick

As salas simulam em passo fixo. Toda mudança de estado leva o número do seu tick; sincronização, predição, compensação de lag e histórico contam em ticks, não em tempo de relógio. Os dados carregam o momento real do evento, o que torna exatos o rewind e a reconciliação. Veja Prediction & Lag Comp.