ミッションパッケージ

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

ミッション機能パッケージは、プレイヤーが報酬を獲得し、ゲーム内で進行するために完了できるミッションを作成するための即時機能を提供します。すべてのミッションにはID、カテゴリ、およびプレイヤーがミッションを完了するために完了しなければならないタスクのリストが必要です。ただし、タスクリストは空にすることができ、ミッションの報酬をすぐに獲得できるようにすることができます。

パッケージのカスタマイズオプションを使用すると、次のようなユニークなゲームプレイ要件に合わせてすべてのミッションをパーソナライズできます。

パッケージを取得する

クリエイターストアは、プロジェクト内で使用するためにRobloxおよびRobloxコミュニティによって作成されたすべてのアセットを見つけるために使用できるツールボックスのタブです。モデル、画像、メッシュ、オーディオ、プラグイン、ビデオ、フォントアセットなど、1つまたは複数のアセットをオープンゲームに直接追加するためにクリエイターストアを使用できます。機能パッケージも含まれます!

すべての機能パッケージは、正常に機能するためにコア機能パッケージを必要とします。コアおよびミッション機能パッケージアセットがインベントリにあると、プラットフォーム上の任意のプロジェクトで再利用できます。

インベントリからゲームにパッケージを取得するには:

  1. Studioのウィンドウメニューまたはホームタブツールバーから、ツールボックスを開きます。

  2. ツールボックスウィンドウで、インベントリタブをクリックします。マイモデルのソートが表示されます。

    Studioのツールボックスウィンドウでインベントリタブが強調表示されています。
  3. 機能パッケージコアタイルをクリックし、次にミッション機能パッケージタイルをクリックします。両方のパッケージフォルダがエクスプローラーウィンドウに表示されます。

  4. パッケージフォルダをReplicatedStorageにドラッグします。

ミッションを定義する

各完了可能なミッションには、ミッションを完了するために終了しなければならないタスクのセット、構成オプション、およびオプションの表示メタデータが含まれ、これらはすべてReplicatedStorage.Missions.Configs.Missions内で定義できます。タイプは同じフォルダ内のTypesスクリプトからエクスポートされます。

必須フィールド

各ミッションには次のフィールドが必要です。

名前タイプ説明
missionIdstringメインのミッションテーブルキー。すべてのミッションは独自のユニークな文字列で識別されます。
categoryIdstringミッションはカテゴリに属し、UIでカテゴリごとにグループ化されます。
taskstableプレイヤーがミッションを完了するために終了しなければならないタスクのリスト。

アンロック条件

デフォルトでは、ミッションはプレイヤーに自動的にアンロックされ、正確に1回完了できます。ただし、次のオプションの構成オプションを使用してこの動作を変更できます。

名前タイプ説明
prerequisitestableミッションをアンロックする前に完了しなければならない他のmissionIdsのリスト。
manualOnlyboolミッションの自動アンロックを無効にします。代わりに、ミッションをアンロックするために関数を呼び出す必要があります。他のアンロック条件も満たす必要があります。
availableAfterUtcbool指定されたUTCの時間前にミッションをアンロックできません。
availableBeforeUtcbool指定されたUTCの時間後にミッションをアンロックできません。この時間前にアンロックされているが完了していない場合、ミッションは失敗します。
repeatableboolミッションは完了後に再度アンロックされます。
repeatLimitnumberミッションが再実行可能な場合、この回数以上は再実行できません。
repeatCooldownSecondsnumberミッションが再実行可能な場合、アンロックされるまでの遅延があります。
expireSecondsnumberミッションがアンロックされ、指定された秒数内に完了しない場合、代わりに失敗します。
expireCountOfflineboolミッションにexpireSecondsがあり、expireCountOfflineがtrueに設定されている場合、プレイヤーが実際にゲームにいない間の時間はミッションの期限切れにカウントされます。

メタデータ

ミッションには、ミッションユーザーインターフェースでどのように表示されるかを指定するメタデータがあります。次のオプションフィールドを使用して、そのメタデータをカスタマイズできます。

名前タイプ説明
displayNamestringユーザーインターフェースでmissionIdの代わりに表示されるミッションの名前。
descriptionstringミッションに関する追加情報やコンテキストを提供する長いテキストブロック。
visibleAfterCompletebooltrueに設定されている場合、ミッションは完了後もリストに表示されますが、完了済みとしてマークされます。
visibleAfterFailedbooltrueに設定されている場合、ミッションは失敗後もリストに表示されますが、失敗済みとしてマークされます。
visibleBeforeUnlockedbooltrueに設定されている場合、ミッションは完了可能になる前にリストに表示されますが、ロックされています。
invisibleWhileActivebooltrueに設定されている場合、ミッションは進行中でも表示されません。
rewardstable報酬表示情報のリスト。
  • assetID (number) - クエストの報酬の下にミッションUIに表示される画像ID。報酬が存在する場合は必須です。
  • displayName (string) - アイコンの下にミッションUIに表示される名前。

タスクを定義する

各ミッションにはゼロまたはそれ以上のタスクを持つことができます。ミッションにタスクがゼロの場合、アンロック後すぐに請求可能です。ミッションに1つ以上のタスクがある場合、タスクが完了すると、プレイヤーはミッションに関連付けられた報酬を収集できます。各タスクにはtaskIdがあり、これは特定のミッションに関連付けられたタスクのキーです。

タスクには2つのタイプがあります:

  • タイムタスク - タスクを異なる時点で開始および停止できます。タスクのタイマーが動作している間に一定の時間が経過する必要があり、その後タスクが完了します。
  • カウントタスク - タスクの進行状況を追加または設定できます。進行状況が設定された値に達すると、タスクが完了します。

両方のタスクタイプは次のフィールドを共有します:

名前タイプ説明
taskTypestringタスクタイプがカウントまたはタイムであるかを指定します。
counterobject(オプション) このタスクが追跡するカウンター。カウンターは、数値またはタイマーのためのプレイヤー固有の永続ストレージです。複数のタスクが単一のカウンターを追跡できます。たとえば、複数のタスクがプレイヤーが収集したコインの数を追跡する場合、すべてが同じ「コイン」カウンターを共有できます。これらのタスクは、ゼロから新しいコインを独立して追跡するか、カウンター値(すでに収集されたすべてのコイン)からカウントを続けることができます。
  • counterId (string) - 追跡されるカウンターのID。このIDを使用してカウンターの値を取得または設定します。
  • continueFromCounter (オプション bool) - trueに設定されている場合、タスクの進行状況は増加した量ではなく、カウンターの値に直接一致します。
metadataobject(オプション) タスクがUIに表示される方法に関する情報。
  • displayName (string) - UIに表示されるタスクの名前。
  • numericType (オプション string) - タスクの進行状況の数値がどのように表示されるべきか。
    • 分数、例:5/10または5k/50k
    • パーセンテージ、例:50%または10%
    • 長い分数、例:5/10または5000/50000
    • ブール値、例:未完了
callToActionobject(オプション) コールバック関数をトリガーするボタン。
  • callback (function) - callToActionボタンによってトリガーされる関数。
  • buttonText (string) - ボタンUIに表示されるテキスト。

カウントタスクフィールド

カウントタスクには必須の値があります。タスクの進行状況がこの量に達すると、タスクが完了します。

名前タイプ説明
goalCountnumber(オプション) タスクを完了するために必要な進行状況。

タイムタスクフィールド

タイムタスクには、費やすべき目標時間があり、開始および停止されます。目標時間が満たされると、タスクが完了します。

名前タイプ説明
goalSecondsnumberタスクを完了するために経過する必要がある秒数。
startImmediatelyboolタスクがアンロックされるとすぐに時間をカウントし始めるべきか、開始された後のみカウントするべきか。
includesOfflineTimeboolプレイヤーがゲームに積極的に参加していない間に費やした時間を含めるべきか。

カテゴリを構成する

カテゴリは明示的に定義する必要はなく、ミッションのカテゴリにはデフォルト値が使用されます。ただし、ReplicatedStorage.Missions.Configs.Categoriesでこれらの値を構成して、カテゴリに追加の効果を追加できます。カテゴリはユニークなCategoryIdsで識別され、これはミッション構成で参照されるものと同じです。

名前タイプ説明
repeatDelaySecondsnumber(オプション) 設定されている場合、指定された時間が経過するたびにカテゴリ内のすべてのミッションがリセットされ、再度アンロック、完了、および報酬を請求できるようになります。これは、指定されたカテゴリ内で再実行可能なミッションとは別です。

サーバーロジックを統合する

ReplicatedStorage.Missions.Server.Examples.MissionsExampleを確認してください。これは、サーバーがミッション機能パッケージとどのように相互作用するかを示しています。

ミッション機能パッケージをゲームにドラッグした後、主に4つのことをフックアップする必要があります:

  1. ミッション構成でミッションを定義します。

  2. タスクの進行状況や進行状況が結びついているカウンターを更新するためのロジックをゲームに追加します。

    README
    -- ジャンプタスクでミッションJumpingの進行状況を増加させる
    Missions.addProgressToTask(player, "Jumping", "Jumps", 1)
    -- タイムインバトルタスクでミッションBattlingTimeのタイマーを開始する
    Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")
    -- タイムインバトルタスクでミッションBattlingTimeのタイマーを停止する
    Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Jumpsカウンターに結びついたすべてのタスクの進行状況を増加させる
    CounterSystem.addCounter(player, "Jumps", 1)
    -- タイムインバトルタイマーカウンターに結びついたすべてのタイムタスクのタイマーを開始する
    CounterSystem.startTimer(player, "TimeInBattle")
    -- タイムインバトルタイマーカウンターに結びついたすべてのタイムタスクのタイマーを停止する
    CounterSystem.stopTimer(player, "TimeInBattle")
  3. ミッション完了ハンドラーを設定し、オプションでアンロックまたは失敗ハンドラーを設定します。完了ハンドラーを使用して、ゲーム内でミッションからの報酬を授与します。

    README
    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player}がミッション{missionId}を完了しました`)
    -- プレイヤーに報酬を授与します。
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. 自動的にアンロックされないミッションをアンロックします。ミッション機能パッケージのロジックは、すべてのミッション要件が満たされることを保証し、ミッションが完了し、その報酬が収集可能になります。

    README
    Missions.unlockMission(player, "Manual")

定数を構成する

コア機能パッケージの定数は2つの場所にあります:

  • 共有定数はReplicatedStorage.FeaturePackagesCore.Configs.SharedConstantsにあります。

  • パッケージ固有の定数、ここではミッション機能パッケージは、ReplicatedStorage.Missions.Configs.Constantsにあります。

さらに、翻訳用の文字列は1つの場所に分けられており、ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStringsにあります。

UIコンポーネントをカスタマイズする

パッケージオブジェクト(色、フォント、透明度など)を変更することで、ミッションUIの視覚的プレゼンテーションを調整できます。たとえば、ReplicatedStorage.Missions.Configs.ConstantsSingleTaskModeを有効にすると、単一のタスクのみを持つミッションの進行状況バーをミッション自体に直接表示できます。

さらに、ゲームに既存のUIがあり、ミッション機能パッケージと統合したい場合、クライアントのModuleScript MissionsClientには、サーバーからプレイヤーのミッションに関する情報を取得するために必要なすべての関数が含まれています。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。