ミッションパック

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

ミッション 機能パッケージは、プレイヤーが完了することで報酬と経験の進捗を達成できるミッションを作成するための箱外機能を提供します。すべてのミッションには、ID、カテゴリ、プレイヤーがミッションを完了するために完了する必要のあるタスクのリストがある必要があります。しかし、タスクリストは空であることができ、ミッションの報酬をすぐに受け取ることができます。

パッケージのカスタマイズオプションを使用して、すべてのミッションをカスタマイズして、特別なゲームプレイ要件を満たすことができます。たとえば:

  • 新しいプレイヤーをあなたのエクスペリエンスに乗船させ、D1の継続利用率を向上させるミッションを作成します。
  • 中期から長期の目標と進捗感を追加して、ターゲット D7 と D30 の保持 を目指す
  • ゲーム内のさまざまなシステムを浮かび上がらせ、それらと対話することでプレイヤーを報酬に与えることで、エンゲージメントを増やす。

パッケージを取得

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

すべての機能パッケージには、適切に機能するには コア 機能パッケージが必要です。コア と ミッション 機能パッケージのアセットがインベントリ内持ち物リストあると、プラットフォーム上のどのプロジェクトでも再利用できます。

インベントリからエクスペリエンスにパッケージを取得するには:

  1. 次のコンポーネントの コアミッション をクリックして、スタジオ内のインベントリに追加し、 インベントリに追加 リンクをクリックして、インベントリに追加します。

  2. ツールバーで ビュー タブを選択します。

  3. クリックして ツールボックスツールボックス ウィンドウが表示されます。

    Studio's View tab with the Toolbox tool highlighted.
  4. ツールボックス ウィンドウで、 インベントリ タブをクリックします。 マイモデル ソートが表示されます。

    Studio's Toolbox window with the Inventory tab highlighted.
  5. クリックする 機能パッケージコア タイル、次に ミッション機能パッケージ タイル。両方のパッケージフォルダが エクスプローラー ウィンドウに表示されます。

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

ミッションを定義する

完了可能な各ミッションには、ミッションを完了するために完了する必要のあるタスクのセット、構成オプション、オプションの表示メタデータが含まれており、すべて ReplicatedStorage.Missions.Configs.Missions に同じフォルダの Types スクリプトから輸出されたタイプが定義できます。

必須のフィールド

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

名前種類説明
missionIdstringメインのミッションテーブルキー。すべてのミッションは、独自の文字列によって識別されます。
categoryIdstringミッションはカテゴリに属し、UI でカテゴリにグループ化されなければなりません。
taskstableプレイヤーがミッションを完了するために完了する必要のあるタスクのリスト。

条件を解除する

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

名前種類説明
prerequisitestableミッションがアンロックされる前に完了する必要がある他のミッションIDのリスト。
manualOnlyboolミッションの自動解除を無効にします。代わりに、ミッションをアンロックするために機能を呼び出す必要があります。他のアンロック条件もまだ満たされている必要があります。
availableAfterUtcbool指定された UTC 時間前にミッションをアンロックすることはできません。
availableBeforeUtcbool指定された UTC 時間後にミッションをアンロックすることはできません。この時間前にアンロックされて完了しない場合、ミッションは失敗します。
repeatableboolミッションは完了後、再びアンロックされます。
repeatLimitnumberミッションが繰り返し可能な場合、これより多くの回数繰り返すことはできません。
repeatCooldownSecondsnumberミッションが繰り返し可能な場合、アンロックされる前に遅延が発生します。
expireSecondsnumberミッションがアンロックされ、指定された秒数内に完了しない場合、代わりに失敗します。
expireCountOfflineboolミッションに expireSecondsexpireCountOffline が設定されており、プレイヤーが実際にエクスペリエンスにいない期間の時間が真実に設定されている場合、ミッションの期限切れに向けて時間がカウントされます。

メタデータ

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

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

タスクを定義する

各ミッションには、ゼロかそれ以上のタスクがあることができます。ミッションにゼロのタスクがある場合、ミッションがアンロックされた直後に請求できます; ミッションに 1つまたは複数のタスクがある場合、タスクが完了した後、プレイヤーはミッションに関連する報酬を集めることができます。各タスクには taskId があり、特定のミッションに関連するタスクのキーです。

タスクは 2 種類あります:

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

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

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

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

タスクの数には必須の値があります。タスクの進行がこの量に達すると、タスクは完了します。

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

タイムタスクフィールド

タイムタスクにはターゲットの時間量があり、開始と停止が行われます。ターゲットの時間量が達したとき、タスクは完了します。

名前種類説明
goalSecondsnumberタスクを完了するには秒数が必要です。
startImmediatelyboolタスクがロック解除されたときに時間をカウント開始するのではなく、開始後すぐに時間をカウント開始する必要がある場合
includesOfflineTimeboolタスクがプレイヤーが経験に積極的に参加していない間に費やした時間を含む場合。

カテゴリを構成する

カテゴリは、ミッションのカテゴリに使用されるデフォルト値があるため、使用するために明示的に定義する必要はありません。しかし、これらの値を ReplicatedStorage.Missions.Configs.Categories で構成して、カテゴリに追加の効果を加えることができます。カテゴリは、唯一の CategoryIds によって識別され、ミッション構成で参照されたものと同じものです。

名前種類説明
repeatDelaySecondsnumber(オプション) 設設定するされている場合、カテゴリのすべてのミッションは、指定された期間が経過するたびにリセットされ、ロック解除、完了、そして報酬が再び主張される可能性があります。これは、指定されたカテゴリ内で繰り返し可能なミッションとは別です。これらは、指定されたカテゴリ内で繰り返し可能です。

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

を見てみてください、これはあなたのサーバーが ミッション 機能パッケージとどのように対話するかを示しています。

主に、 ミッション 機能パッケージをエクスペリエンスにドラッグした後、4つのものを接続する必要があります:

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

  2. エクスペリエンスにロジックを追加して、タスクの進行状況または進行状況に結び付いているカウンターを更新します。

    読み込みメモ

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

    読み込みメモ

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

    読み込みメモ

    Missions.unlockMission(player, "Manual")

定数を構成する

コア 機能パッケージの定数は 2つの場所でライブです:

  • 共有されたコンスタントは ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants で生きています。

  • パッケージ固有のコンスタント、この場合は ミッション 機能パッケージ、は ReplicatedStorage.Missions.Configs.Constants でライブします。

さらに、1つの場所に分離された翻訳用のストリングを見つけることもできます:ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings

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

色、フォント、透明性などのパッケージオブジェクトを変更することで、ミッション UI のビジュアルプレゼンテーションを調整できます。たとえば、ReplicatedStorage.Missions.Configs.Constants では、単一のタスクのみのミッションの場合、進行バーをミッション自体に直接表示するように SingleTaskMode を有効にすることができます。

さらに、エクスペリエンスにはすでに、 ミッション 機能パッケージと統合したい既存の UI がある場合、クライアント Class.ModuleScript``MissionsClient には、サーバーから送信されたプレイヤーのミッションに関する情報を取得するためのすべての機能が含まれています。