Ideias e funcionalidades do jogo

A tua próxima funcionalidade

Conversação

Mensagens guardadas, subscrições explícitas e moderação limitada.

SDK: developRequer uma sessão de jogador
Unity
Ilustração de Conversação
O resultado visível

Duas sessões existentes: abrir canal do projeto, enviar uma vez, ler e denunciar uma mensagem guardada. Amizade para chat direto, participação ativa no grupo.

Vídeo em breve

Este passo ainda não tem vídeo. O guia e o pedido MCP já podem ser usados.

Conversação

Preparar o mesmo projeto

  1. Seleciona no painel o mesmo projeto que na configuração do teu jogo.

    Conversação →
  2. O primeiro pedido não exige outra definição. Um resultado vazio é válido enquanto faltarem dados do jogo.

    Duas sessões existentes: abrir canal do projeto, enviar uma vez, ler e denunciar uma mensagem guardada. Amizade para chat direto, participação ativa no grupo.

    PHP simpleServer devolve 501 NOT_SUPPORTED em todas as rotas Chat.

Integra esta funcionalidade

Podes consultar o guia. Para o executar, precisas de uma chave de projeto ativa. Preparar o projeto

SDK instalado, configuração do projeto importada e jogador com sessão iniciada.

Este exemplo do SDK usa develop. Verifica se as API necessárias existem no SDK instalado.

Concluam a ligação do início rápido com o jogador escolhido. Chamem ReadChannelSnapshot(channelId) através de um botão ou ação explícita da cena. Abrir o ficheiro não envia pedidos.

C#
Assets/Scripts/ChatDemo.cs
Chamada ao horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4// Existing imported SDK and authenticated player session required.
5// Call these methods explicitly from a player action; nothing runs on startup.
6public sealed class ChatDemo : MonoBehaviour
7{
8 public async void ReadChannelSnapshot(string channelId)
9 {
10 var user = UserManager.Instance.CurrentUser;
11 if (user == null || !user.IsValid()) return;
12 var result = await ChatManager.Instance.SyncChannel(user.UserId, channelId);
13 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
14 Debug.Log("Snapshot epoch: " + result.Data.channel.epoch);
15 foreach (var message in result.Data.messages) Debug.Log(message.text);
16 // This is the small authorized server window, not the full device history.
17 // A raw snapshot does not authorize or populate a managed realtime feed.
18 // WatchChannel waits for confirmed subscription; revocation hides the feed.
19 }
20​
21 public void ReadDeviceHistory(string channelId, string before = null)
22 {
23 var user = UserManager.Instance.CurrentUser;
24 if (user == null || !user.IsValid()) return;
25 var page = ChatManager.Instance.ReadLocalHistory(channelId, before, 50);
26 if (!page.IsSuccess) { Debug.LogWarning(page.ErrorCode); return; }
27 foreach (var message in page.Data.messages) Debug.Log(message.text);
28 // Continue only on an explicit action using page.Data.nextCursor.
29 // Local delivered history can outlive the small current server window.
30 // For send/report, import the SDK ChatExample and preserve its original
31 // operationId, issuedAt, channel and text before one explicit send.
32 // An uncertain outcome never permits a fresh identity or implicit retry.
33 }
34}
Abrir o exemplo SDK completo ↗

Dois jogadores, um canal

Duas sessões existentes: abrir canal do projeto, enviar uma vez, ler e denunciar uma mensagem guardada. Amizade para chat direto, participação ativa no grupo.

Fluxo gerido após confirmação de subscrição: evento/resync, um Sync e indicador de alterações. Sem sondagem nem alternativa desligada; revogar oculta texto.

Guarde o original exato por projeto/jogador antes de enviar. Host/sessão delimitam pedidos. Nunca substitua ID, data, texto ou revisão incertos.

Um 404 de operação não prova falha. Guarde o original após timeout ou OPERATION_EXPIRED; reconcilie só com o recibo correspondente.

Repita IDs e motivo originais. removed confirma repetição; REPORT_EXPIRED não cria outra denúncia.

PHP simpleServer devolve 501 NOT_SUPPORTED em todas as rotas Chat.

Testa a tua nova funcionalidade.

Duas sessões existentes: abrir canal do projeto, enviar uma vez, ler e denunciar uma mensagem guardada. Amizade para chat direto, participação ativa no grupo.

Seleciona no painel o mesmo projeto que na configuração do teu jogo.

Endpoints da API
  • GET/chat/limits
  • POST/chat/channels/open
  • POST/chat/channels/{channelId}/sync
  • POST/chat/channels/{channelId}/messages
  • GET/chat/operations/{operationId}
  • POST/chat/channels/{channelId}/messages/{messageId}/report
Todos os endpoints na referência da API
A nossa sugestão para o próximo passo

Dá uma pontuação máxima a cada partida.

Guarda a pontuação depois de uma partida e mostra quem está à frente. Continua a usar a ligação e a sessão do jogador.