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

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

Общие объекты

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

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

Перед созданием получите данные об использовании владельца. Создание использует их ревизию; обновление и удаление используют исходную ревизию объекта. Владелец, группа и срок истечения, заданный при создании, не меняются.

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

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

Общие объекты

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

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

    Общие объекты →
  2. Создайте или используйте эти тестовые записи в форме панели. Это примеры значений, а не текущие данные проекта.

    Ключ
    bases
    Политика чтения
    all
    Политика записи
    owner
    Позиция в сетке
    true
    Максимум байт на объект
    1024
    Максимум объектов на владельца
    1

    Ключи остаются зарезервированными. После первого использования политики, схема поиска, TTL и позиция неизменяемы. Архивирование блокирует новые записи; чтение и удаление остаются доступны.

    Первый пример читает данные. Он не создаёт группу, матч или объект. Пустой список является допустимым первым ответом.

  3. Сохраните, загрузите заново и проверьте записи до запуска примера. Сохраните остальные определения.

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

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

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

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

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

C#
Assets/Scripts/SharedObjectsDemo.cs
Вызов horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3using PM.horizOn.Cloud.Objects.Network.Responses;
4​
5public sealed class SharedObjectsDemo : MonoBehaviour
6{
7 // Initialize/connect and restore the existing player in the Quickstart first.
8 // Wire an explicit player action; do not add this read to a startup/poll loop.
9 public async void ReadWorldMap()
10 {
11 var user = UserManager.Instance.CurrentUser;
12 if (user == null || !user.IsValid()) return;
13 var result = await SharedObjectsManager.Instance.QueryObjects(user.UserId, "bases", new SharedQuery {
14 mode = SharedQueryMode.Rectangle,
15 minX = -10, maxX = 10, minY = -10, maxY = 10, limit = 20
16 });
17 if (!result.IsSuccess) {
18 Debug.LogWarning(result.ErrorCode);
19 return;
20 }
21 foreach (var item in result.Data.objects) {
22 byte[] bytes = item.data; // Opaque game bytes; validate your game's own format.
23 Debug.Log($"Object {item.id}: {bytes.Length} bytes");
24 }
25 // Respect result.Data.pollAfterSeconds; no automatic poll or next-page loop.
26 // Keep exact dataBase64 and typed search metadata unchanged on metadata edits.
27 // Persist original target, bytes and If-Match revision before a single mutation.
28 // Unknown CREATE: explicit GetRecoveryUsage/QueryRecoveryObjects; never resend.
29 // Generic/defense/ranked VA starts share one start/submit lease; do not replace a pending run.
30 // Trusted validation and durable ordinary Inbox delivery belong to the game backend.
31 }
32}
Открыть полный пример SDK ↗

Карта мира

Храните базы владельцев как неинтерпретируемые байты. Явно запрашивайте настроенный прямоугольник сетки с целочисленными координатами; обновляйте с исходной ревизией объекта. Позиция служит индексом запросов и не проверяет правила игры.

Асинхронное PvP

Выберите противника ограниченным целочисленным запросом с неравномерным распределением. Загрузите его байты защиты и проверьте игру через запуск Validated Actions под управлением сервера. Только доверенный бэкенд определяет результат и отправляет неизменяемое уведомление Inbox.

Используйте соответствующие сессии игроков, надёжно сохранённое исходное намерение записи и явные ограниченные чтения. Доверенная проверка результата и доставка Inbox выполняются на бэкенде игры; Account Keys никогда не должны попадать в сборки игры.

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

Перед созданием получите данные об использовании владельца. Создание использует их ревизию; обновление и удаление используют исходную ревизию объекта. Владелец, группа и срок истечения, заданный при создании, не меняются.

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

Эндпоинты
  • GET/shared-objects/collections
  • GET/shared-objects/{collection}/usage
  • GET/shared-objects/{collection}/objects/{objectId}
  • POST/shared-objects/{collection}/query
  • POST/shared-objects/{collection}/objects
  • PUT/shared-objects/{collection}/objects/{objectId}
  • DELETE/shared-objects/{collection}/objects/{objectId}
Все эндпоинты в справочнике API
Наше предложение для следующего шага

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

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