Pular para o conteúdo principal
RPC e Events

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

Sistema de Events

Última atualização: 16 de julho de 2026

No PlayServ, as interações entre cliente e servidor são baseadas em Events. Tanto o cliente quanto o servidor usam os Events do Client SDK.


Quando usar Events

Use Events quando precisar entregar um payload tipado de um lado para o outro pelo mecanismo de Events do Client SDK:

  • defina um contrato com [Event] — identificador e payload
  • envie o Event com Send(...) ou com o açúcar sintático gerado
  • receba-o assinando com Wait<T>(...)
  • pare de recebê-lo com Stop()

Informação

Os Events oferecem um contrato consistente e com tipos seguros para a troca de dados entre cliente e servidor:

  • a estrutura do payload é fixada pela definição [Event]
  • o mesmo contrato de Event fica disponível dos dois lados graças à geração automática das classes de descrição do Event
  • o açúcar sintático reduz o boilerplate ao enviar Events registrados

Definir um Event

O Event precisa ser definido primeiro. Isso lhe dá um identificador e especifica o payload que ele carrega.

[Event]
class ChatMessage {
  string text;
  int priority;
}

Depois que o Event é declarado, o analisador de código usa essas declarações para gerar açúcar sintático e simplificar o trabalho com Events registrados.


Enviar um Event

Um Event pode ser enviado na forma explícita ou pelo açúcar gerado.

PlayServ.Send(new ChatMessage { text = "hello", priority = 1 });

PlayServ.SendChatMessage({ text = "hello", priority = 1 });  // sugar
PlayServ.SendChatMessage("hello", 1);                        // sugar

Receber um Event

Para receber Events do lado remoto, crie uma Subscription com Wait.

var waiting = PlayServ.Wait<ChatMessage>(data => {
  chat.Write($"Message {data.text}");
});

Cancelar uma Subscription

Para cancelar uma Subscription, use Stop.

waiting.Stop();

Contratos de Event dos dois lados

contrato [Event]ChatMessagegerado dos dois ladosRemetenteSend(ChatMessage)DestinatárioWait<ChatMessage>(...)Event tipadoStop() cancela a Subscription

Para cada [Event] externo descoberto no código do lado do remetente, as classes de descrição do Event — por exemplo, ChatMessage — devem ser geradas automaticamente no código do lado do destinatário.

Atenção

Quando cliente e servidor compartilham o mesmo codebase, o que é comum, gerar a classe de descrição do Event no lado que recebe garante que o contrato continue unificado e com tipos seguros dos dois lados.


Próximos passos

  • RPC & Server-side Game Logic — operações nomeadas no servidor que funcionam ao lado dos Events
  • Groups — os Events de um Group usam a mesma API de Events e o mesmo padrão de açúcar sintático

Atualizado em 16 de jul. de 2026