ゲームのアイデアと機能

次に追加する機能

実績

各キーはプレイヤーごとに一度だけ解除されます。手動ルールはゲームを信頼し、統計しきい値は対象報告と同じトランザクションで評価します。

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// This explicit action unlocks the shown configured achievement key.
10public sealed class AchievementsDemo : MonoBehaviour
11{
12 public async void RunReviewedAction()
13 {
14 var sessionUser = UserManager.Instance.CurrentUser;
15 if (sessionUser == null || !sessionUser.IsValid()) return;
16 var userId = UserManager.Instance.CurrentUser.UserId;
17 var manager = AchievementsManager.Instance;
18 var loaded = await manager.GetAchievements(userId);
19 if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
20 foreach (var progress in loaded.Data.progress)
21 Debug.Log(progress.key + ": " + progress.rewardState);
22​
23 // Configure a manual first_steps definition, then call this on the matching game action.
24 var unlocked = await manager.Unlock(userId, "first_steps");
25 if (!unlocked.IsSuccess) { Debug.LogWarning(unlocked.ErrorCode); return; }
26 // Repeat the same key after timeout; never create a replacement reward identity.
27 // rewardState is complete, unlockedAt is null, and deliveryResults is empty.
28 // Values were credited atomically. Read PlayerValues again when showing the balance.
29 // No Inbox claim or local value addition. Refresh achievements after statistics updates.
30 }
31}
完全なSDKサンプルを開く ↗

新しい機能をテストしましょう。

操作後、同じプレイヤーのfirst_stepsが解除されます。同じキーを再実行しても追加の実績や報酬は得られません。

ゲームの設定と同じプロジェクトをダッシュボードで選択してください。

エンドポイント
  • GET/achievements
  • POST/achievements/unlock
  • POST/achievements/rewards/deliver
API リファレンスのすべてのエンドポイント
次のステップへのおすすめ

毎ラウンドにハイスコアを。

ラウンド終了後にスコアを保存し、上位のプレイヤーを表示します。現在の接続とプレイヤーセッションを引き続き使用します。