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

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

Достижения

Ключ открывается один раз на игрока. Ручной режим доверяет игре; пороги проверяются в той же транзакции затронутого отчёта.

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

После действия first_steps разблокирован для того же игрока. Повтор ключа не даёт второго достижения или награды.

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

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

Достижения

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

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

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

    Ключ
    first_steps
    Название
    First steps
    Правило открытия
    manual
    Активно
    true
    Скрыто до открытия
    false
    Без награды
    []

    Ключ открывается один раз на игрока. Ручной режим доверяет игре; пороги проверяются в той же транзакции затронутого отчёта.

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

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

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

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

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

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

C#
Assets/Scripts/AchievementsDemo.cs
Вызов horizOn
1using System.Linq;
2using UnityEngine;
3using PM.horizOn.Cloud.Core;
4using PM.horizOn.Cloud.Manager;
5​
6// Existing SDK/project configuration and authenticated player session required.
7// Call RunReviewedAction explicitly after reviewing this example and its data.
8// Награды начисляются сразу при разблокировке. Если начисление не удалось,
9// всё действие откатывается.
10// This explicit action unlocks the shown configured achievement key.
11public sealed class AchievementsDemo : MonoBehaviour
12{
13 public async void RunReviewedAction()
14 {
15 var sessionUser = UserManager.Instance.CurrentUser;
16 if (sessionUser == null || !sessionUser.IsValid()) return;
17 var userId = UserManager.Instance.CurrentUser.UserId;
18 var manager = AchievementsManager.Instance;
19 var loaded = await manager.GetAchievements(userId);
20 if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
21 foreach (var progress in loaded.Data.progress)
22 Debug.Log(progress.key + ": " + progress.rewardState);
23​
24 // Configure a manual first_steps definition, then call this on the matching game action.
25 var unlocked = await manager.Unlock(userId, "first_steps");
26 if (!unlocked.IsSuccess) { Debug.LogWarning(unlocked.ErrorCode); return; }
27 // Repeat the same key after timeout; never create a replacement reward identity.
28 // rewardState is complete, unlockedAt is null, and deliveryResults is empty.
29 // Values were credited atomically. Read PlayerValues again when showing the balance.
30 // No Inbox claim or local value addition. Refresh achievements after statistics updates.
31 }
32}
Открыть полный пример SDK ↗

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

После действия first_steps разблокирован для того же игрока. Повтор ключа не даёт второго достижения или награды.

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

Эндпоинты
  • GET/achievements
  • POST/achievements/unlock
  • POST/achievements/rewards/deliver
Все эндпоинты в справочнике API
Наше предложение для следующего шага

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

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