シーズンパスパッケージ

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

シーズンパス機能パッケージは、プレイヤーがクエスト目標を達成して、事前に定義された期間中にのみ利用可能な報酬を獲得できる、期間限定のクエストベースの進行システムを作成するための即時機能を提供します。このパッケージのカスタマイズオプションを使用することで、すべてのシーズンパスをパーソナライズし、新しいコンテンツをオーディエンスに提供し、プレイヤーの保持を促進し、収益を生み出すことができます。

パッケージを取得する

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

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

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

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

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

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

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

  5. データストア呼び出しを許可して、プレイヤーの購入を追跡します。

    1. Studioのファイルエクスペリエンス設定ウィンドウを開きます。
    2. セキュリティタブに移動し、APIサービスへのスタジオアクセスを有効にするを有効にします。

ミッション依存関係を構成する

シーズンが正常に機能するためには、シーズンパス機能パッケージがプレイヤーの進行を追跡し、その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} がミッション {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 = "ティア3ミッション",
description = "10回ジャンプする",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "アイテム",
},
{
icon = 106912146245070,
displayName = "シーズンXP",
},
},
},
}

シーズンを構成する

シーズンに含めたいすべてのミッションを設定したら、シーズンパス自体を構成する時が来ました。ReplicatedStorage.SeasonPasses.Configs.Seasonには、参照用のシーズン構成の例があり、以下のコードサンプルはそのファイルからのものです。

パスを定義する

パスは、プレイヤーがシーズンパスのミッションと潜在的な報酬にアクセスするために一度限りのRobux料金を請求できるようにします。ユニークなアセットIDを持つパスを作成した後、シーズンのpremiumTrackフィールドでパスの詳細を設定できます。 例えば、以下のコードサンプルは、シーズンパスを表す例のアセットID 928192647を持つパスを定義し、その後シーズンパスに「プレミアムトラック」というトラック名を付けます。

premiumTrack = {
pricing = {
gamePassId = 928192647,
},
trackMetadata = {
trackName = "プレミアムトラック",
},
},

ティアと報酬を構成する

シーズンティアは、プレイヤーがシーズンを通じて報酬を獲得するために達成しなければならないマイルストーンを表します。ティアを上昇させるために、プレイヤーはミッションを完了してXPを獲得し、十分なXPを獲得すると次のティアに進み、ちょうど完了したティアの報酬を受け取ります。 ティアには、ティアの報酬を請求するために必要なXPのしきい値を設定するupperBoundXPプロパティがあります。各ティアは2種類の報酬を提供できます:

  • 無料 - プレイヤーがシーズンパスを購入せずに獲得できる報酬。
  • プレミアム - プレイヤーがシーズンパスを購入することでのみ獲得できる報酬。

例として、100XPを獲得して無料のアイスランス報酬とプレミアムのブラストシールド報酬を得る必要がある1つのティアを持つシーズンのコードサンプルを確認してください。iconは報酬のために表示するUI画像のアセットIDで、displayNameは報酬の名前を表示します。displayNameはUIに表示されますが、rewardIdはプレイヤーから隠されており、主にデータストアの目的で使用されます。

tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "アイスランス",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "ブラストシールド",
rewardId = "blastShield",
},
},
}

このスクリプトは、1つのティアを構成する方法を示すためのものであり、ほとんどのシーズンには1つ以上のティアが含まれます。シーズンのために複数のティアと報酬を定義する際は、各rewardIdが数値であり、増加順に並んでいることを確認して、ティアがティアリストで定義した順序で表示されるようにしてください。

シーズンの詳細を定義する

ティアと報酬を持つシーズンパスができたので、シーズンの詳細を定義する時が来ました:

  • title - シーズンの名前。
  • description - シーズンの説明。
  • startUtc - 協定世界時でのシーズンの開始。
  • endUtc - 協定世界時でのシーズンの終了。
  • seasonId - プレイヤーが特定のシーズンを通じて獲得したXPを追跡するためのもの。

パッケージはstartUtcendUtcを使用してシーズンのカウントダウンを表示します。

startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),
endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),
title = "シーズン1",
description = "宇宙都市へ",
seasonId = "season1",

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

ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExampleを確認してください。これは、サーバーがシーズンパス機能パッケージとどのように相互作用するかを示しています。以下のスニペットは、そのスクリプトからのものです。

主に、プレイヤーに請求された報酬を授与するためのハンドラ関数を作成する必要があります。例えば、以下のコードサンプルは、プレイヤーが次のティアに進むときに追跡し、シーズンパスを購入した場合は無料の報酬だけでなく、両方の報酬を授与する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を通じて表示するボタンを追加するフレーム。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。