Идеи и функции для игры

Ваша следующая функция

Общение

Сохранённые сообщения, явные подписки и ограниченная модерация.

SDK: developТребуется сессия игрока
Unity
Иллюстрация функции «Общение»
Видимый результат

Две существующие сессии: открыть канал проекта, отправить раз, прочитать и пожаловаться на сохранённое сообщение. Личный чат требует дружбы, групповой активного членства.

Видео появится позже

Для этого шага пока нет видео. Инструкция и запрос MCP уже доступны.

Общение

Подготовьте тот же проект

  1. Выберите в панели тот же проект, что указан в конфигурации игры.

    Общение →
  2. Для первого запроса дополнительное определение не нужно. Пустой результат допустим, пока нет соответствующих игровых данных.

    Две существующие сессии: открыть канал проекта, отправить раз, прочитать и пожаловаться на сохранённое сообщение. Личный чат требует дружбы, групповой активного членства.

    PHP simpleServer возвращает 501 NOT_SUPPORTED для всех маршрутов Chat.

Добавьте эту функцию

Вы можете просмотреть руководство. Для выполнения нужен активный ключ проекта. Подготовить проект

SDK установлен, конфигурация проекта импортирована, игрок вошёл в систему.

Этот пример SDK использует develop. Проверьте наличие нужных API в установленном SDK.

Завершите подключение нужного игрока по быстрому старту. Вызовите ReadChannelSnapshot(channelId) явной кнопкой или действием сцены. Открытие файла само по себе запрос не отправляет.

C#
Assets/Scripts/ChatDemo.cs
Вызов 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}
Открыть полный пример SDK ↗

Два игрока, один канал

Две существующие сессии: открыть канал проекта, отправить раз, прочитать и пожаловаться на сохранённое сообщение. Личный чат требует дружбы, групповой активного членства.

Управляемая лента после подтверждения подписки: событие/resync, один Sync и флаг изменений. Без опроса или автономной подмены; отзыв прав скрывает текст.

Сохраните точный оригинал для проекта/игрока до отправки. Хост/сессия ограничивают запросы. Не заменяйте неопределённые ID, время, текст или ревизию.

404 операции не доказывает сбой. Сохраните оригинал после timeout или OPERATION_EXPIRED; сверяйте только с совпадающей квитанцией.

Повторяйте исходные ID и причину. removed подтверждает повтор; REPORT_EXPIRED не создаёт новую жалобу.

PHP simpleServer возвращает 501 NOT_SUPPORTED для всех маршрутов Chat.

Проверьте новую функцию.

Две существующие сессии: открыть канал проекта, отправить раз, прочитать и пожаловаться на сохранённое сообщение. Личный чат требует дружбы, групповой активного членства.

Выберите в панели тот же проект, что указан в конфигурации игры.

Эндпоинты
  • 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
Все эндпоинты в справочнике API
Наше предложение для следующего шага

Добавьте рекорд для каждого раунда.

Сохраняйте результат после раунда и показывайте лидеров. Продолжайте использовать подключение и сессию игрока.