シーズンパス 機能パッケージは、期間限定のクエストベースの進捗システムを作成するための箱外機能を提供し、プレイヤーがクエスト目標を完了して、期間限定の期間にのみ利用可能な報酬を獲得できるクエスト目的の制限付きシステムを作成できます。パッケージのカスタマイズオプションを使用して、オーディエンスに新しいコンテンツを提供し、プレイヤーの継続利用を促進し、収入を生成することができます。

パッケージを取得
クリエイターストアは、 Roblox と Roblox コミュニティが作成したすべてのアセットを見つけるために使用できるツールボックスのタブ で、モデル、画像、メッシュ、オーディオ、プラグイン、ビデオ、フォントのアセットを含むプロジェクト内で使用されるすべてのアセットを見つけることができます。クリエイターストアを使用して、機能パッケージを含むオープンエクスペリエンスに 1つまたは複数のアセットを直接追加できます!
すべての機能パッケージには、 コア 機能パッケージが正しく機能するために、 シーズンパス パッケージがシーズンのミッションを定義する必要があり、 ミッション 機能パッケージが必要です。3つのパッケージアセットがすべてインベントリ内持ち物リストあると、プラットフォーム上のどのプロジェクトでも再利用できます。
インベントリからエクスペリエンスにパッケージを取得するには:
スタジオ内のインベントリに コア 、 ミッション 、および シーズンパス パッケージを追加するには、次のコンポーネントの インベントリに追加 リンクをクリックしてください。
ツールバーで ビュー タブを選択します。
クリックして ツールボックス 。 ツールボックス ウィンドウが表示されます。
ツールボックス ウィンドウで、 インベントリ タブをクリックします。 マイモデル ソートが表示されます。
クリックする 機能パッケージコア タイル、 ミッション機能パッケージ タイル、そして シーズンパス機能パッケージ タイル。3つのパッケージフォルダがすべて エクスプローラー ウィンドウに表示されます。
パッケージフォルダを ReplicatedStorage にドラッグします。
データストア呼び出しを許可して、パッケージでプレイヤー購入を追跡する
- ツールバーの ホーム タブで、 ゲーム設定 を選択します。
- ナビゲート to the セキュリティ tab, then enable API サービスへの Studio アクセスを有効にする 。
ミッションの依存性を構成する
シーズンが適切に機能するには、 シーズンパス 機能パッケージがプレイヤーの進捗状況を追跡し、UIコンポーネントを更新できるように、ロジックを追加する必要があります。シンプルさのため、以下の例では ミッション 機能パッケージを使用し、プレイヤーがミッションを完了した後に SeasonPasses.addProgressToSeason() を呼び出しますが、好きなようにプレイヤーの進捗状況を追跡できます。ミッションを定義するかどうかにかかわらず、 ミッション 機能パッケージをエクスペリエンスに追加して、 シーズンパス コードが機能するようにする必要があります。
各ミッションには、ミッション、設定オプション、オプションの表示メタデータを完了するためのタスクセットがあります。ミッションとそのタスクの構成方法に関する詳細なガイドについては、ミッションを定義するを参照してください。
ミッションから季節へのXPを追加
この例では、 ミッション 機能パッケージを使用して、プレイヤーが経験値 (XP) を獲得し、シーズンを通して進歩するために完了できるミッションを定義します。定義されたミッションを完了したときにプレイヤーにXPを授与するには、ReplicatedStorage.Missions.Server.Examples.MissionsExample サーバースクリプトにロジックを追加して、季節パスデータをインポートし、進行に応じてプレイヤーを報酬に与える必要があります。
local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} completed mission {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end
シーズン層報酬アイコンを追加
プレイヤーがミッションを完了すると、XPを付与することに加えて、 シーズンパス 機能パッケージは、 ミッション 機能パッケージを使用して、シーズン内でユニークな報酬レベルを定義します。プレイヤーが十分なXPを獲得できれば、プレイヤーが獲得できるティア報酬のスクリーン上のアイコンを追加したい場合は、各シーズンのティア報酬の Missions 設定にアセットIDを追加します。
Tier3Mission = {categoryId = "General",metadata = {displayName = "Tier 3 Mission",description = "Jump 10 times",visibleAfterComplete = true,visibleBeforeUnlocked = true,rewards = {{icon = 16826775737,displayName = "Item",},{icon = 106912146245070,displayName = "Season XP",},},},}
季節を設定する
シーズンに含めたいすべてのミッションを設定した後、シーズンパス自体を構成する時間です。In ReplicatedStorage.SeasonPasses.Configs.Season には、参考のシーズン構成の例があり、次のコードサンプルはそのファイルからです。
パスを定義する
パス は、シーズンパスのミッションと潜在的な報酬にアクセスするために、プレイヤーに一度限りの Robux 料金を請求できるようにします。ユニークなアセットID でパスを作成した後、シーズンの premiumTrack フィールドでパスの詳細を設定できます。たとえば、次のコードサンプルは、季節パスを表現する例のアセットID 928192647 を持つパスを定義し、その後、季節パスに「プレミアムトラック」のトラック名を付与します。
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
階層と報酬を構成する
シーズンレベルは、プレイヤーがシーズン中に報酬を獲得するために達成する必要があるマイルストーンを表します。ランクを登るには、プレイヤーは XP を獲得するためにミッションを完了し、十分な XP を獲得すると、次のランクに進み、また最も最近に完了したランクの報酬を受け取ります。階層には upperBoundXP プロパティがあり、階層の報酬を受け取るに必要なXPの境界を設定します。各レベルは、2種類の報酬を提供できます:
- 無料 - プレイヤーがシーズンパスを購入せずに獲得できる報酬
- プレミアム - プレイヤーがシーズンパスを購入することでのみ獲得できる報酬
デモンストレーションするには、100 XP で無料のアイスランス報酬とプレミアム爆発シールド報酬を獲得するシーズンの次のコードサンプルをレビューしてください。The icon は報酬に表示する UI 画像のアセットIDであり、The displayName は報酬の名前を表示します。UI に displayName が表示されますが、rewardId はプレイヤーから非表示であり、主に データストア の目的で使用されます。
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
このスクリプトは、1 回に複数のティアを構成する方法に関する説明目的であり、ほとんどのシーズンには複数のティアが含まれています。シーズンに複数の階層と報酬を定義するときは、各 rewardId が数字であり、増加の順序で表示されるようにして、階層リストで定義した順序で表示されるようにします。
シーズン詳細を定義する
シーズンパス(階層と報酬付き)を持っているので、シーズンの詳細を定義する時間です:
- title - 季節の名前。
- description - シーズンの説明。
- startUtc - 調整された世界時での季節の始まり。
- endUtc - 調整された世界時の季節の終わり。
- seasonId - 指定されたシーズン中にプレイヤーが獲得するXPを追跡できます。
パッケージは startUtc と endUtc を使用して、季節のカウントダウンを表示します。
startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),title = "Season 1",description = "Into Space City",seasonId = "season1",
サーバーロジックを統合する
を見て、サーバーがシーズンパスフィーチャパッケージとどのように対話するかを確認してください。以下のスニペットは、そのスクリプトからです。
主に、プレイヤーに請求された報酬を授与するためのハンドラー関数を作成する必要があります。たとえば、次のコードサンプルは、プレイヤーが次の階層に進むときを追跡する rewardClaimedHandlerFunction() 機能を作成し、季節パスを購入した場合は、無料報酬だけではなく、無料とプレミアム報酬の両方を報酬として授与します。
目的のために、task.wait() 呼び出しを、プレイヤーがシーズンで主張した報酬を得ることを可能にするロジックで置き換えます。この機能 は 返す必要があります:サーバーが報酬を付与した場合は true、そうでない場合は false。
local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end
定数を構成する
コア 機能パッケージの定数は 2つの場所でライブです:
- 共有されたコンスタントは ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants で生きています。
- パッケージ固有のコンスタント、この場合は シーズンパス 機能パッケージ、は ReplicatedStorage.SeasonPasses.Configs.Constants でライブします。エクスペリエンスのデザイン要件に対応するために調整したい主なもの:
- サウンドアセットID
- 購入効果の期間とパーティクルの色 さらに、1つの場所に分離された翻訳用の弦を見つけることができます:ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings。
UI コンポーネントをカスタマイズする
色、フォント、透明性などのパッケージオブジェクトを変更することで、シーズンパスのプロンプトのビジュアル表示を調整できます。ただし、オブジェクトのいずれかを階層的に移動すると、コードが見つけられない可能性があるため、コードを調整する必要があります。
シーズンは、 ミッション機能パッケージ UI コンポーネントにプログラマティックに追加される次の高レベルコンポーネントで構成されます:
- SeasonBottomFrame – 各トラックに関する情報、ランクの報酬のスクロールフレーム、ランクデータを含むフレーム。
- SeasonDescriptionFrame - ヘッダーに表示されるシーズンタイトル、説明、カウントダウンのフレーム。
- TierRewardFrame - ティアの特定の報酬を表示するフレーム。
- TierProgressFrame - プレイヤーが現在作業しているティアに向かって進めた進捗を表示するフレーム。
- PurchaseFrame - プレイヤーにプレミアムパスの購入を促すフレーム。
- SeasonProgressFrame - シーズン全体にわたってプレイヤーの進行バーを表示するフレーム。
- RewardsButtonFrame - 季節の情報を表示できるボタンを追加するフレームSeasonBottomFrame。