ゲームシステム

ゲーム内クエスト:デイリータスクと報酬

iDos Games の既製クエストの仕組み。デイリー、ウィークリー、1回限りのタスク、宝箱付きのポイントトラック、タスクのグループのボーナス、そしてダッシュボードでの設定方法。

クエストは既製のタスクシステムです。報酬付きのデイリー、ウィークリー、1回限りのクエスト、宝箱付きのポイント トラック、タスクのグループを終えたときのボーナス。 クエストはすべての新しいプロジェクトに含まれています。 進行と報酬はサーバーが計算し、ゲームはプレイヤーの行動を知らせて結果を表示するだけです。

プレイヤーに見えるもの

  • タブになったサイクル:デイリー、ウィークリー、実績。次のサイクルまでのタイマー付き。
  • タスクごとの進行バーと、すべての目標が見られる詳細のポップアップ。
  • 終わったタスク用の**「すべて受け取る」ボタン**。
  • ポイントがたまると宝箱が開くポイントトラック。
  • 終わったタスクが待っているときのタブのバッジ。
クエスト
12 450
320
デイリー2
週間
実績
新しいクエストまで 08:12:44
クエストポイント: 45
20
40
60
80
100
モンスターを20体倒す
20/20
+10
受け取る
ステージを3つクリア
3/3
+10
受け取る
ヒーローを10回強化
7/10
+15
受け取る
ショップで何か買う
0/1
+20
受け取る
すべて受け取る
サイクルはタブで、次のサイクルまでのタイマー付き。
ポイントトラック。受け取ったクエストでポイントが増え、途中で宝箱が開きます。
完了したクエストは「受け取る」待ち、残りは進行状況を表示。
「すべて受け取る」で完了したクエストを一度に受け取れます。
例. クエスト画面。サイクル、宝箱付きのポイントトラック、クエスト一覧。

クエストの構造

  • サイクル:スケジュールのあるタスクのまとまり。デイリー、ウィークリー、常設、期間限定イベント。サイクルは段階を 順に進めることもできます。たとえば8週間のシーズンで、週ごとに専用のタスクとポイントトラックがある形です。
  • クエスト:それぞれカウンターを持つ1つ以上の目標(「モンスターを20体倒す」)と報酬。先に別のクエストの完了を 条件にでき、連続クエストはこうして作ります。

報酬は3種類あり、すべて同時に働きます。

  1. クエストの報酬:すべての目標を達成したとき。
  2. ポイントトラックの宝箱:受け取ったクエストがサイクルのポイントを増やし、必要な合計で宝箱が開きます。
  3. グループのボーナス:1つのグループのクエストを決まった数だけ終えたとき。

進行はどこから来るか

出どころ例必要な作業
ゲームが知らせるモンスターを倒した、レベルをクリアした起きた場所に1行のコード
サーバーが数えるストアでの購入、別のクエストの受け取りなし、イベントを選ぶだけ
サーバースクリプトクラウドコードの独自ルールスクリプトからの呼び出し

ステップ 01サイクルを作る

ダッシュボードを開き、プロジェクトを選んで ライブ運営 → v2 → クエスト へ。 サイクルタブでサイクル(たとえばデイリー)を作り、必要なら宝箱付きのポイントトラックを追加します。

ステップ 02タスクを追加する

クエストタブでクエストを作ります:名前、サイクル、目標、報酬。目標ごとに進行の出どころを選びます。ゲームが 数えるなら、カウンター名を選びます。例:monsters_defeated。

ページの AI ボタンでアシスタントが開きます。「勝利、ストアでの購入、ヒーローの強化のデイリークエストを3つ 作って」。変更を提案してくれるので、確認して保存を押します。

ステップ 03ゲームに進行を知らせさせる

ゲームが数える目標については、AI コーダーに頼みます。「モンスターを倒すたびに monsters_defeated を数えて」。 コードの正しい場所に呼び出しを入れてくれます。放置 RPG テンプレートは、クリアした ステージとヒーローの強化をすでに知らせています。

開発者向け

クエストは @idosgames/core の client.quest で動きます。進行はクエストごとではなくカウンター名で送ります。 サーバーがそのカウンターを待っているすべての進行中のタスクに渡します。

TypeScript
// 起きた場所で:モンスターを倒した
await client.quest.addQuestProgress('monsters_defeated', 1)

// クエスト画面:プレイヤーの進行。サイクルは自動で進みます
const state = await client.quest.getUserQuestState()

// 終わったクエストの報酬を受け取る
const claim = await client.quest.claimQuestReward('daily_win_20', 'daily')
if (!claim.ok) return showError(claim.error)
  • addQuestProgress が進めるのは、出どころがゲームの目標だけです。サーバーが自分で数える目標は拒否されます。
  • 「念のため」に値を送らないでください。目標に1回あたりの上限があると、超えた時点でプレイヤーのアカウントが停止されます。
  • 付与された報酬は SDK のキャッシュの残高にすでに反映されているので、読み込み直す必要はありません。

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

よくある質問

クエストをプロジェクトに追加する必要はありますか?

いいえ。クエストはすべての新しいプロジェクトに含まれています。ダッシュボードでクエストを1つでも設定すると、クエストのタブがプレイヤーに表示されます。

タスクの完了をゲームはどう知るのですか?

進行はサーバーが数えます。購入や他のクエストのように自分で数えるタスクもあり、モンスターを倒すといったゲーム内の行動は、ゲームが1行のコードでサーバーに知らせます。

バトルパスは作れますか?

サイクルのポイントトラックで似た仕組みが作れます。クエストを受け取るたびにポイントが増え、トラックの宝箱は必要なポイントに達すると開きます。

関連ページ

自分のゲームを作ろう

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