ゲームシステム

ゲーム内ランキング:順位、ラウンド、報酬

iDos Games の既製ランキングの仕組み。ラウンドのあるボード、順位とポイントの報酬、水増しスコアの防止、そしてダッシュボードでの設定方法。

ランキングは既製の順位システムです。ラウンドのあるボードと、順位やポイントによる報酬。 スコア、順位、報酬は サーバーが計算します。ボードはダッシュボードで設定し、ゲームは結果を送って順位を表示します。

プレイヤーに見えるもの

  • タブになったボード:それぞれにプレイヤーのスコア、順位、ラウンド終了までのカウントダウンを示すカードがあります。
  • 上位のプレイヤー。プレイヤー自身は強調表示され、上位3人にはメダル。
  • ポップアップの順位の報酬とポイントの報酬。ポイントの報酬はその場で受け取れます。
  • 前のラウンドの報酬のポップアップ:ラウンドが終わると「受け取る」ボタン付きで自動表示されます。
  • ゲームにポイントを稼ぐモードがあれば、カードに**「プレイ」ボタン**。
  • 報酬が待っているときのタブのバッジ。
ランキング
12 450
320
週間!
シーズン
マイスコア12 840
順位#7
残り 2日 04:13
報酬
プレイ
ShadowFox25 120
2Mira22 980
3KnightOwl19 400
4Pixel_Pete15 210
5Luna14 030
6Arrow13 115
7あなた12 840
8Grizzly11 900
有効なランキングごとにタブがあり、バッジは受け取れる報酬があることを示します。
プレイヤーカード。スコア、順位、ラウンド終了までのカウントダウン。
順位とポイントの報酬はここから開き、「プレイ」でゲームモードへ。
上位3人にメダル、プレイヤーは一覧で強調表示されます。
例. ランキング画面。ラウンドタイマー付きのプレイヤーカードと上位一覧。

ボードの構造

  • ラウンド。 ボードはサイクルで繰り返す(たとえば毎週)、スケジュールで動く、またはラウンドの連なりとして進みます。
  • スコアの数え方。 すべての結果の合計、ベストの結果、ベストタイム、最後の値。
  • 順位の報酬:ラウンド終了時の順位の範囲ごと。1位、2〜3位、4〜10位など。
  • ポイントの報酬:ラウンド中のマイルストーン。「今週1000ポイント稼ぐ」。

ポイントはどこから来るか

ポイントはボードに設定した出どころから来ます。

  • ゲームからの結果(ClientScore)。ゲームが数値を送ります。たとえばランのスコア。⚠ 出どころには上限を設定して ください。1回あたりの上限、1日の上限、送信の間隔。この出どころがなければ、ボードはゲームからの数値をまったく受け取りません。
  • サーバーが自分で数えるイベント。たとえば購入や終えたクエスト。これはゲームからごまかせません。

ステップ 01プロジェクトにランキングを追加する

AI コーダーに伝えます。「ベストスコアの週間ランキングを追加して」。既製システムを入れて、ゲームが結果を送るように します。ダッシュボードでボードを1つでも有効にすると、タブがプレイヤーに表示されます。

ステップ 02ボードを設定する

ダッシュボードを開き、プロジェクトを選んで ライブ運営 → v2 → リーダーボード へ。

  1. ランキングを追加を押し、ID を決めます。例:weekly_score。
  2. ラウンドのスケジュールとスコアの数え方を選びます。
  3. ポイントの出どころを追加します。ゲームがポイントを送るなら、上限付きの ClientScore を使います。
  4. 順位の報酬と、必要ならポイントの報酬を設定します。
  5. 保存を押します。

ページの AI ボタンでアシスタントが開きます。ボードを言葉で説明すると変更を提案してくれるので、確認して保存します。

ステップ 03テストしてリリースする

テスト版で結果をいくつか送り、順位が変わるのを確かめます。設定は別の操作で本番アプリに送られます。 公開とリンクを参照してください。

開発者向け

ランキングは @idosgames/core の client.leaderboard で動きます。

TypeScript
// 結果を送る:サーバーが数え方のルールと上限を適用します
const sub = await client.leaderboard.submitScore('weekly_score', 150)
if (!sub.ok) return showError(sub.error)
sub.data.NewScore // 数えたあとのスコア

// 複数ボードの画面:上位の一覧とプレイヤーの進み具合を1回のリクエストで
const overview = await client.leaderboard.getOverviewBatch(['weekly_score', 'season_pvp'])

// 待っているものをすべて受け取る:順位の報酬とポイントの報酬
await client.leaderboard.claimAllRewardsBatch(['weekly_score', 'season_pvp'])
  • 0 以下のスコアは、SDK がリクエストを送らずに自分で拒否します。
  • 新しいスコアは応答の NewScore から取ります。「ベストの結果」では、悪い結果はスコアを変えません。
  • フレンドの順位は getFriendsLeaderboard(leaderboardID) です。

すべてのフィールドは、SDK の MCP サーバーが配るスキル leaderboard-system に説明があります。

よくある質問

プレイヤーがゲームから巨大なスコアを送ってズルできますか?

ボードを正しく設定していればできません。ボードがゲームから数値を受け取るのは ClientScore の出どころ経由だけで、そこには上限があります。1回あたりの上限、1日の上限、送信の間隔。

1つのゲームにランキングはいくつ作れますか?

複数作れます。有効なボードはそれぞれランキング画面の別のタブになり、専用のラウンドと報酬を持ちます。

フレンドのランキングはありますか?

はい。SDK が同じボードをプレイヤーのフレンドで絞り込んで返します。

関連ページ

自分のゲームを作ろう

アイデアを一文で書くだけで AI コーダーが作り、ゲームは専用リンクで公開されます。