エクスペリエンス内のサブスクリプション は、ユーザーに月額料金で継続的な利益を提供できます。パス と同様、サブスクリプションとパスの主な違いは、パスの利益が永久に付与されるのに対し、サブスクリプションの利益は月額料金を支払うユーザーに依存することです。Roblox のサブスクリプションには次の特徴があります:
- 自動更新: サブスクリプションは自動更新され、一回性購入ではなく、地元通貨で価格が設定されています。
- Robux ペイアウト: Robux でサブスクリプション収入を受け取ります。詳細は、「サブスクリプションで稼ぐ」を参照してください。
- シングルレイヤー: エクスペリエンス内のすべてのサブスクリプションは、同時にユーザーによって所有できます。相互排他的なサブスクリプションはサポートされません。
ユーザーは、Roblox ギフトカードクレジットまたはクレジットまたはデビットカード、および資格のある地域の Apple および Google ストアの支払い方法を使用して、デスクトップアプリまたはウェブサイトでサブスクリプションを購入できます。ユーザーは、Roblox アカウント設定の サブスクリプション タブで、サブスクリプション購入を表示し管理できます。
将来、サブスクリプションはより多くの地域に展開されます。 使用できない地域には以下が含まれます:: アルゼンチン、コロンビア、インド、インドネシア、日本、ロシア、台湾、トルコ (トルコ)、UAE、ウクライナ、およびベトナム。
購読ガイドライン
サブスクリプションを作成する前に、Roblox の利用規約 と一致し、地元の法律に準拠していることを確認してください。詐欺に関与したり、虚偽の提案でユーザーを惑わせたり、そうでなくても私たちの コミュニティ標準 に違反した何らかの経験は、削除されます。また、サブスクリプションが次のガイドラインに従っていることを確認してください:
- 明消すで区別可能なサブスクリプションオプションを提供する: サブスクリプションオプションを互いから区別するために、短く、要約的で自己説明的な名前を使用します。インエクスペリエンスで商品化するときに、各オプションの価格と期間を指定します。
- プラットフォームやデバイス間で同じメリットを提供する: サブスクリプションが購入された場所に関係なく、ユーザーが任意のサブスクリプションプランに対して同じメリットを受け取るようにします。
- お互いにマッチしたデザインサブスクリプションと全体のエクスペリエンスオファリング: 同じセットのメリットを提供する「ブロンズ」、「シルバー」、「ゴールド」のレベルを相互に排他的に提供することは、現在は利用できません。サブスクリプションが異なるセットのメリットを表すようにする。
- サブスクリプションの全期間の利点を提供する: サブスクリプションオファリングがライブになったら、記載された利点を尊重し、背後で利点を取り消さないようにします。
- ユーザーを別のプラットフォームで購入させることはしない (例:モバイル、ウェブなど) 体験中: プラットフォーム外のユーザーとコミュニケーションすることは自由ですが、Roblox アプリを使用してユーザーを他の場所に誘導することは禁止されています。
- ユーザーが支払った後、追支払い済みの要件によりゲートサブスクリプションの利点を受け取らないようにしてください:: ユーザーに、ソーシャルメディアへの投稿など、支払った利点にアクセスするための追加タスクを実行するように要求することは禁止されています。このガイドラインは、サブスクリプション購入として作成し、マーケットに出すことが許可されているバトルパスに影響しません。
サブスクリプションを作成
サブスクリプションを作成する前に、電話または 認証済み ID である必要があります。サブスクリプションを作成するには:
ナビゲート to your experience in the クリエイターダッシュボード and select マネタイズ製品 > サブスクリプション .次に、 サブスクリプションを作成する をクリックします。
サブスクリプションのカバー画像をアップロードします。画像はモデレーション後に他の人に表示されます。
ユニークな サブスクリプション名 を作成します。エクスペリエンス内の 2つのサブスクリプションは、同じ名前を共有できません。このサブスクリプション名は、請求書の短縮バージョンのエクスペリエンス名の横に表示されます。許可された文字は a-z、A-Z、0-9、スペース、そして .,:/!?@#&' です。
サブスクリプションの 説明 を書きます。これは、サブスクリプションを購入することを決定したときにユーザーが見るものです。説明は、サブスクリプションオファーの利点を明確に説明する必要があります。説明は 1,000 文字に制限され、絵文字をサポートします。サブスクリプションを有効にすると、そのメリットを減らすことはできません。
サブスクリプション 製品タイプ を選択します。製品タイプは 3種類あります:
- 耐久性がある: 武器のような物理アイテムのように、使用または取ユーザー獲得後に残る永久アイテム。サブスクリプションが、剣とポーションなどの異なる種類の商品のバンドルを含んでいる場合、そのうちの 1つまたは複数が持続可能である値パックなどの製品タイプとして 持続可能 を選択します。
- 消耗品: 使用または入手後に期限切れする一時的な再ユーザー獲得入可能なアイテム、例えば、時間経過で期限切れする消費ポーションなど。
- 通貨: ユーザーがエクスペリエンス内のアイテムを購入するために使用できる交換媒体。
サブスクリプションの 価格 (USD) を選択します。ウェブ価格に基づいて Robux を獲得します。モバイルアプリのサブスクライバーは、より高い価格を請求されます。サブスクライバーは、地元通貨で課金されます。
リピート頻度 は、ユーザーがサブスクリプション料金を請求される頻度です。現在、この値は常に月々/月間/月額です。クリック サブスクリプションを作成 。
詳細を確認し、 作成 をクリックします。
サブスクリプションを有効にする
サブスクリプションが販売できるようになったら、サブスクリプションタイルの右上隅にある ⋯ をクリックし、 有効化 を選択します。有効になったサブスクリプションは、 エクスペリエンス詳細ページ およびエクスペリエンス自体の中で販売可能です。

サブスクリプションを初めて有効にする前に、エクスペリエンス名の短縮バージョンを確認する必要があります。この短縮されたエクスペリエンス名は、サブスクリプションを作成 で作成したサブスクリプション名とともに、ユーザーがサブスクリプションにサブスクライブするときに表示されます。Roblox とアプリストア設定でもサブスクリプションの管理が表示されます。
購読を編集
アクティブなサブスクリプションと非アクティブなサブスクリプションの間の経験には、最大 50のサブスクリプションがあり得ます。サブスクリプションを編集するには、クリエイターダッシュボード に移動し、 マネタイズ製品 > サブスクリプション を選択します。
サブスクリプションの画像、説詳細、または状態を編集できます。これらのプロパティ以上を編集したい場合は、必要な変更でサブスクリプションを削除して再作成する必要があります。
画像を変更
サブスクリプションの画像を更新するには:
選択されたサブスクリプションで、 変更 ボタンをクリックします。
新しい画像を選択し、 保存 をクリックし、次に 変更を保存 。新しい画像はモデレーションに成功した後にライブになります。
説明を変詳細
サブスクリプションの詳細明を変更するには:
- 選択されたサブスクリプションで、 説明 フィールドをクリックします。
- 説詳細を編集し、 変更を保存 をクリックします。説明は 1,000 文字に制限され、絵文字をサポートできます。
- 確認ウィンドウで はい、確認 をクリックして変更を確認します。説明更新はすぐに反映されます。
状態を変更
サブスクリプションには 2つの状態があり得ます:
- アクティブ — アクティブなサブスクリプションは販販売中可能で、サブスクライバーは次の期間の始めにサブスクリプションを更新できます。
- 非アクティブ — 非アクティブなサブスクリプションは販売中売できません。
サブスクリプションの状態を変更するには:
- サブスクリプションページで、サブスクリプションのタイルの右上隅にある ⋯ をクリックします。 有効化 または 販売を解除 を表示するか、サブスクリプションの現在の状態に応じて、他のいくつかのオプションと一緒に表示します。
- Select either 有効化 または 販売を解除する を選択して、サブスクリプションの状態を切り替えます。
- 販売を解除 を選択すると、既存のサブスクライバーを更新するか、現在のサブスクライバーの将来の更新をキャンセルするオプションが提供されます。一全般的に、関連するサブスクリプションの利点を永久にエクスペリエンスから削除するつもりがない限り、既存のサブスクライバーの更新を許可することが望ましいです。
サブスクリプションをエクスペリエンスに統合する
このコードサンプルは、エクスペリエンスでサブスクリプション検出を実装する方法の簡単な例です:
-- サーバー上でこのコードを実行
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- サブスクリプションIDで置換
local function grantAward(player: Player)
-- ここでサブスクリプションに関連する賞を授与する必要があります
end
local function revokeAwardIfGranted(player: Player)
-- このメソッドは、_not_ サブスクリプションを持っていないすべてのプレイヤーに呼び出されます
-- コードがデータストアにサブスクリプションを保存するか、「取り消す」必要があるメリットを提供する場合
-- あなたはこの方法を使用して、撤回を処理する必要があります
end
local function checkSubStatus(player)
local success, response = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
warn(`Error while checking if player has subscription: {response}`)
return
end
if response.IsSubscribed then
grantAward(player)
else
revokeAwardIfGranted(player)
end
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubStatus(player)
end
end
Players.PlayerAdded:Connect(checkSubStatus)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
ゲームパスをサブスクリプションで置き換え
エクスペリエンスでサブスクリプションを展開するオプションの 1つは、既存のゲームパスをサブスクリプションに置き換えることです。新しい機能や賞を追加せずに、エクスペリエンスでサブスクリプションを迅速に実装したい場合、これは素晴らしいオプションです。
ゲームパスをサブスクリプションに置き換えるときには、2つの重要な考慮事項があります:
- ゲームパスの既存の保持者は、支払った利益を引き続き受け取る必要があります。
- ゲームパスは販売から外され、代わりに新しいユーザーがサブスクリプションを購入できるようにする必要があります。
- サブスクリプションは取り消される可能性があり、つまり、以前にゲームパス保管データストアにそのメリットを維持していた場合、これらのメリットを「取り消す」必要があります。この考慮事項はすべてのゲームパス実装には適用されませんが、より複雑なものに適用される可能性があります。
次のコードサンプルでは、ゲームパスをサブスクリプションで置き換える方法を示します:
-- サーバー上でこのコードを実行
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local LEGACY_GAME_PASS_ID = 1234 -- サブスクリプションに置き換えられているゲームパスのIDで置き換える
local SUBSCRIPTION_ID = "EXP-11111111" -- サブスクリプションIDで置換
local function awardBenefit(player: Player)
-- ここでサブスクリプションを授与すべきです
end
local function revokeBenefitIfGranted(player: Player)
-- このメソッドは、_not_ サブスクリプションを持っていないすべてのプレイヤーに呼び出されます
-- コードがデータストアにサブスクリプションを保存するか、「取り消す」必要があるメリットを提供する場合
-- あなたはこの方法を使用して、撤回を処理する必要があります
end
local function checkSubscriptionStatus(player: Player)
local success, result = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
print(`Error fetching subscription status: {result}`)
return
end
if result.IsSubscribed then
awardBenefit(player)
else
revokeBenefitIfGranted(player)
end
end
local function onPlayerAdded(player: Player)
local success, result = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, LEGACY_GAME_PASS_ID)
end)
if not success then
print(`Error fetching game pass status: {result}`)
return
end
if result then
-- プレイヤーがレガシーゲームパスを購入した場合、サブスクリプションステータスを調べる必要状況ありません
-- 彼らは生涯に授与された利益を持っているから
awardBenefit(player)
return
end
checkSubscriptionStatus(player)
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubscriptionStatus(player)
end
end
local function onPromptGamePassPurchaseFinished(player: Player, purchasedPassID: number, purchaseSuccess: boolean)
if purchaseSuccess and purchasedPassID == LEGACY_GAME_PASS_ID then
awardBenefit(player)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
-- ゲームパスがまだ販売中の場合、ゲームパスの購入を継続します
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)
迅速なサブスクリプション購入
ユーザーはエクスペリエンスの ゲーム詳細 ページから直接サブスクリプションを購入できますが、ゲーム内でサブスクリプションを購入する方法も追加する必要があります。
サブスクリプション購入を促すと、 が発動すると、プレイヤーがすでにサブスクリプションを所有している場合、ゲーム詳細ページでプレイヤーがサブスクリプションを購入しているシナリオが検出されるのを助けます。
クライアントからサブスクリプション購入を促すことはできますが、ユーザーがすでにサブスクリプションを持っているかどうかをチェックするには、MarketplaceService.GetUserSubscriptionStatusAsync からサーバーで行う必要があります。
この例では、クライアントがサブスクリプションの状態をリクエストするために使用できる RemoteFunction を作成します:
--このコードはサーバーで実行する必要があります
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- クライアントがサブスクリプションの状態をリクエストするために使用できるリモート関数を作成
local getSubscriptionStatusRemote = Instance.new("RemoteFunction")
getSubscriptionStatusRemote.Name = "GetSubscriptionStatus"
getSubscriptionStatusRemote.Parent = ReplicatedStorage
getSubscriptionStatusRemote.OnServerInvoke = function(player: Player, subscriptionId: string)
assert(typeof(subscriptionId) == "string")
return MarketplaceService:GetUserSubscriptionStatusAsync(player, subscriptionId)
end
-- このコードはクライアントで実行する必要があります
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- サブスクリプションIDで置換
local getSubscriptionStatusRemote = ReplicatedStorage:WaitForChild("GetSubscriptionStatus")
local purchaseSubscriptionButton = script.Parent.PromptPurchaseSubscription -- ボタンで置換する
local function playerHasSubscription()
-- サブスクリプションがゲームパスを置き換えているかどうかを確認する必要があります。ゲームパスがここでも所有されているかどうかも確認する必要があります
local success, result = pcall(function()
return getSubscriptionStatusRemote:InvokeServer(SUBSCRIPTION_ID)
end)
if not success then
print(`Error fetching subscription status: {result}`)
return
end
return result.IsSubscribed
end
-- プレイヤーがすでにサブスクリプションを持っている場合、ボタンを非表示にする
local function hideButtonIfPlayerHasSubscription()
if playerHasSubscription() then
purchaseSubscriptionButton.Visible = false
end
end
local function onPromptSubscriptionPurchaseFinished(player: Player, subscriptionId: string, didTryPurchasing: boolean)
if didTryPurchasing then
-- サブスクリプションが登録されるまで時間がかかるため、購入が 10 秒以内に完了したかどうかをチェックします
-- そして、ボタンがある場合は隠す
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- プレイヤーがすでにサブスクリプションを持っている場合、ボタンを表示したくありません
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- プレイヤーがすでにサブスクリプションを持っている場合、ボタンを非表示にする
hideButtonIfPlayerHasSubscription()
end)
MarketplaceService.PromptSubscriptionPurchaseFinished:Connect(onPromptSubscriptionPurchaseFinished)
その他関連機能
その他の関連機能は MarketplaceService で利用可能です:
購読で稼ぐ
サブスクリプションは現地通貨で価格が設定されますが、プラットフォーム料金後に選択したサブスクリプションのベースプラットフォーム価格に従って、Robux を US$0.01 から 1 Robux のレートで獲得します。Roblox は最初の月のみ 30% のプラットフォーム料を請求し、それにより、2番目の月から全体のサブスクリプション収益を受け取ることになります。この収入分配はすべてのプラットフォームで一貫しています。
たとえば、ユーザーがベース価格である 9.99ドル(デスクトップ)または 12.99ドル(モバイル)にサブスクライブする場合:
- 最初の月: サブスクリプションの作成者は、999 * .7 = 699 または 1299 * .7 = 909 を受け取ります。
- 2番目の月以降: サブスクリプションの作成者は、999 = 999 または 1299 = 1299 を受け取ります。
利益は 30日の保留期間の対象であり、サブスクリプションの全期間が提供された後、Robux バランスに追加されます。ユーザーが月間の保留期間内に銀行またはアプリストアを通じてサブスクリプションの返金をリクエストした場合、保留はキャンセルされ、その取引の支払いは受け取らないことになります。
保留期間外に受け取った払い戻しは、返金された取引の支払い額が Robux バランスから控除されることになります。エクスペリエンスがグループに所有され、グループの残高が控除額より少ない場合、残額はグループ所有者の Robux バランスから控除されます。
アクティブなサブスクリプションをキャンセルし、更新できないとユーザーは自動的に払い戻しを受けません。ユーザーは手動で払い戻しをリクエストする必要があり、これはケースごとに処理されます。ユーザーのサブスクリプション返金プロセスに関する詳細情報は、ヘルプセンター をチェックしてください。
サブスクリプションペイアウト
ペイアウトは Robux バランス > 私の取引 で見つかります:

サブスクリプション と グループサブスクリプション 支払いは 受信 Robux の下に表示され、返金は 出力 Robux の 支払いリバース としてグループ化されます。サブスクリプションとグループサブスクリプションのサブページは、それぞれのカテゴリに追加情報を提供します。

個々のユーザーの返金情報を表示するには、MarketplaceService:GetUserSubscriptionPaymentHistoryAsync() を使用します。
サブスクリプション解析
サブスクリプション分析 は、個々のサブスクリプションの成功を測定し、傾向を特定し、将来の可能な収益を予測するのに役立ちます。サブスクリプションは、最初に有効になった後、サブスクリプションアナリティクスページに追加され、無効になったり削除されたときに削除されません。クリエイターダッシュボードを介して既製の分析にアクセスするか、ウェブホックを使用してリアルタイムでサブスクリプションの更新をキャプチャできます。
クリエイターダッシュボードを通じて
クリエイターダッシュボードでサブスクリプションアナリティクスにアクセスするには:
ナビゲート to your クリエーション page on クリエイターダッシュボード and select your experience.
ナビゲート to the マネタイズ tab and select サブスクリプション .
サブスクリプションアナリティクスは、次のメトリックを追跡します:
- サブスクリプション: エクスペリエンスのアクティブなサブスクリプションの合計額。
- 推定収入: 税金後のエクスペリエンスの収入。払い戻し情報は含まれていません。
- サブスクライバーの分析: 異なる種類のサブスクライバー。
- 新しい : 初めて購読するサブスクライバーによるサブスクリプション購入数。
- 更新済み : 以前の期間に購入した更新サブスクリプションの数。
- 復活 : 以前キャンセルしたユーザーが購入した新しいサブスクリプションの数
- キャンセル : 更新されなかったサブスクリプションの数。これには、トリガーに関係なく、ユーザーのキャンセル、クリエイターによるサブスクリプション無効化、または他の手段によるサブスクリプション解除が含まれます。
- キャンセルは返金と異なります。キャンセルされたサブスクリプションは、再更新されないサブスクリプションであり、請求サイクルの残りの期間、全額支払われますが、返金はユーザーに支払われたサブスクリプション額を返します。
- プラットフォームによるサブスクリプション : 各プラットフォームで購入されたサブスクリプションの数。
- プラットフォームの収益 : 各プラットフォームで購入したサブスクリプションを通じて獲得した純収入。
この情報は、 トレンド タブの日付範囲に基づくチャート形式で表示され、 歴史 タブで提供されるすべてのサブスクリプションの包括的なリストとして表示されます。

ウェブホックを通じて
クラウド API ウェブホック機能には、4つのサブスクリプションイベントのトリガーが含まれています:キャンセル、購入、返金、更新。これらの通知はすぐに発解析されるので、リアルタイムで応答したり、独自のカスタムアナリティクスを作成したりできます。Webhook を設定する方法に関する詳細は、Webhook 通知 を参照してください。