サブスクリプション 内のエクスペリエンスで、ユーザーに月額料金で繰り返し利用できるユーティリティを提供できます。パスと同様、サブスクリプションとパスの主要な違いは、パスの利用者には永続的に特典が付与され、パスの利用者には月額料金を支払う必要があることです。Roblox のサ
- 自動更新: サブスクリプションは自動更新され、一度しか購入できません。ローカル通貨で価格されます。
- Robux の支払い: Robux でサブスクリプション収益を受け取ります。詳細は、「サブスクリプションで稼ぐ」を参照してください。
- 単一レベル: エクスペリエンス内のすべてのサブスクリプションは、ユーザーが同時に所有できます。相互に独立したサブスクリプションはサポートされていません。
ユーザーは、Roblox ギフトカードクレジットまたはクレジットまたはデビットカードを使用して、デスクトップアプリまたはウェブサイトでサブスクリプションを購入できます。ユーザーは、Roblox アカウント設定の [サブスクリプション] タブでサブスクリプションの購入を見る、管理し、キャンセルできます。
サブスクリプションは、将来にわたってより多くの地域にロールアウトされます。 利用できない地域には、次のリージョンが含まれます: アルゼンチン、コロンビア、インド、インドネシア、日本、ロシア、トルクメニスタン、トルコ、UAE、ウクライナ、およびベトナム。
サブスクリプションガイドライン
サブスクリプションを作成する前に、Roblox の利用規約に準拠しており、ローカルの法律に準拠していることを確認してください。詐欺、ユーザーを迷わせる、またはそうしない コミュニティ基準 に違反するエクスペリエンスは、Roblox のサブスクリ
- 明消すで区別可能なサブスクリプションオプションを提供します: サブスクリプションオプションを異なるように区別するための短く、明確な名前を使用します。マーチャントエクスペリエンスで販売するときに、各オプションの価格と期間を指定します。
- 同じメリットをプラットフォームとデバイス間で提供します: サブスクリプションの購入場所にかかわらず、ユーザーが指定のサブスクリプションプランのメリットを受け取ることを確認してください。
- デザインサブスクリプションを互いに調整し、全体のエクスペリエンスオファーにフィットするように設計する: 同じスイートのメリットを提供する、例えば「ブロンズ」、「シルバー」、および「ゴールド」のランクが互いに独立している場合、現在はそれが利用できません。サブスクリプションが異なるセットのメリットを代表すること
- サブスクリプションの期間全体のメリットを提供します: サブスクリプションオファーがライブになると、説明されたメリットを honor し、バックスクリーンでメリットを取り消すことはありません。
- ユーザーを別のプラットフォームに誘導することはしないでください (たとえば、モバイル、ウェブなど) 、エクスペリエンス中に無料でコミュニケーションを行うことはできますが、Roblox アプリを使用して他のプラットフォームからユーザーを誘導することは禁止されています。 * ユーザーが支払ったときに追加の要件を追加してサブスクリプションのメリットをゲートすることはありません。これは、ユーザーがソーシャルメディアに投稿など、サブスクリプションのメリットにアクセスするために追加のタスクを実行することを禁止します。このガイドラインは、バトルパスを両方作購入およびマーケットとして
サブスクリプションの作成
サブスクリプションを作成する前に、あなたは電話であるか、ID が確認済みでなければなりません。サブスクリプションを作成するには:
ナビゲート to your エクスペリエンス in the クリエイターダッシュボード and select マネタイズ製品を選択します。 > サブスクリプションを選択します。 然後クリックします 1> サブスクリプションを作成します。1> 。
サブスクリプション用のカバー画像をアップロードします。画像はモデレーション後に他の人に表示されます。
ユニークな サブスクリプション名 を作成します。エクスペリエンス内の 2つのサブスクリプションは、同じ名前を共有することはできません。このサブスクリプション名は、エクスペリエンス名の円頭文字を含む、短縮されたバージョンと一緒に表示されます。許可された文字は a-z、A-Z、
サブスクリプションの説明を書きます。これは、ユーザーがサブスクリプションを購入するときに見るものです。説明は、サブスクリプションが提供するメリットを明確に説明しています。説明は 1,000 文字以内に制限されており、emoji をサポートしています。サブスクリプションをアクティブにすると、メリットを減少
サブスクリプション 製品タイプ を選択します。製品タイプには 3種類あります:
- 耐久性: ユーザー獲得用後に残る永久アイテム、例えば武器の物理アイテム。 耐久性: サブスクリプションには、一つまたは複数の耐久アイテムが含まれています。武器の剣とポーションなど、耐久性: を製品タイプとして選択します。
- 消費可能: 使用後またはユーザー獲得入後に期限切れになる一時的な再購入可能なアイテム。消費可能なポーションなど、使用後に時間切れになる一時的なブーストを付与します。
- 通貨: ユーザーがエクスペリエンス内でアイテムを購入するために使用できる任意の中央値。
サブスクリプションの 価格 を選択します (in USD)。 Robux はウェブサイトの価格に基づいて獲得します。モバイルアプリのサブスクリバーは、より高い価格に課金されます。サブスクリバーはローカル通貨で課金されます。
繰り返しの速度 は、ユーザーにサブスクリプション料金が請求される頻度です。現在、この値は常に月々/月間/月額です。クリックして サブスクリプションを作成 。
詳細を確認し、 Create をクリックします。
サブスクリプションを有効化する
サブスクリプションの販売準備ができたら、サブスクリプションタイルの右上隅にある ⋯ をクリックし、有効化 を選択します。有効化されたサブスクリプションは、エクスペリエンス詳細ページとエクスペリエンス自体の両方で販売されています。
サブスクリプションを初めて有効にする前に、エクスペリエンス名の縮小バージョンを確認する必要があります。このエクスペリエンス名の縮小バージョンは、サブスクリプションの作成 で作成したサブスクリプション名と一緒に表示されます。また、Roblox と App Store の設定でサブスクリプションを管理することもで
サブスクリプションを編集する
アクティブなサブスクリプションと非アクティブなサブスクリプションの間で、エクスペリエンスごとに最大 50 個のサブスクリプションを持つことができます。サブスクリプションを編集するには、クリエイターダッシュボード のエクスペリエンスに移動し、マネタイズ製品 > サブスクリプション を選択します
サブスクリプションの画像、説詳細、または状態を編集できます。これらのプロパティ以外のものを編集するには、サブスクリプションを削除し、必要に応じて変更して再読み込む必要があります。
イメージを変更する
サブスクリプションのイメージを更新するには:
サブスクリプションを選択した状態で、 変更 ボタンをクリックします。
新しい画像を選択し、 保存 をクリックします。 変更を保存 をクリックすると、新しい画像が有効になります。
説明変更
サブスクリプションの詳細明を変更するには:
- サブスクリプションを選択した状態で、 説明 フィールドをクリックします。
- 説詳細を編集し、 変更を保存 をクリックします。説明は 1,000 文字に制限され、エモジをサポートできます。
- 確認ウィンドウで はい、確認する をクリックして変更を確認します。説明更新はすぐに反映されます。
状態を変更する
サブスクリプションは 2つの状態になります:
- アクティブ — アクティブなサブスクリプションは、サブスクリプターが次の期間の開始時にサブスクリプションを更新できるようになります。
- 非アクティブ — 非アクティブなサブスクリプションは販売中売できません。
サブスクリプションの状態を変更するには:
- [サブスクリプション] ページで、[⋯] サブスクリプションのタイルの右上隅にあります。[アクティブ] または [オフセール] が表示され、サブスクリプションの状態に応じて、2>[取り消す]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)
サブスクリプション購入を促す
ユーザーはエクスペリエンスの ゲーム詳細 ページから直接サブスクリプションを購入できますが、ゲーム内でサブスクリプションを購入する方法を追加する必要があります。
サブスクリプション購入を促すと、Players.UserSubscriptionStatusChanged が有効なプレーヤーがサブスクリプションを所有している場合、これはプレイヤーがゲーム詳細ページからサブスクリプションを購入するシナリオをキャッチするのに役立ちます。
クライアントからサブスクリプション購入を促すことはできますが、ユーザーがすでにサブスクリプションを持っているかどうかをチェックする必要は、サーバーから行われる必要があります。
この例では、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 は、プラットフォーム料金の基本プラットフォーム価格を選択した後、プラットフォームごとに 1 Robux の割合で稼いでいます。Roblox は、すべてのプラットフォームで 30% のプラットフォーム料金を取得します。この収益分
たとえば、ユーザーが基本価格の 9.99ドル (デスクトップ) または 12.99ドル (モバイル) でサブスクリプトした場合:
- 最初の月: サブスクリプションのクリエーターは、999 * .7 = 699 (デスクトップ) または 1299 * .7 = 909 (モバイル) を受け取ります。
- 2番目の月以降: サブスクリプションのクリエーターは 999 = 999 (デスクトップ) または 1299 = 1299 (モバイル) を受け取ります。
利益は 30 日の保留を受けます そして、サブスクリプションの期間が終了すると、Robux バランスに追加されます。ユーザーがサブスクリプションを銀行またはアプリストアでリクエストした場合、保留はキャンセルされ、その取引の支払いを受け取りません。
持ち続けるウィンドウ外の取引で受け取った払い戻しは、Robux の残高から差し引かれた払い戻しの金額に対する返金金額となります。エクスペリエンスがグループによって所有されている場合、グループの残高は払い戻しの金額を差し引いた残高となります。
ユーザーが有効なサブスクリプションをキャンセルし、更新できないと失敗すると、自動的に払い戻しはありません。ユーザーは手動で払い戻しをリクエストする必要があり、これはケースごとに処理されます。ユーザーのサブスクリプションの払い戻しプロセスに関する詳細は、ヘルプセンターを参照してください。
サブスクリプションの支払い
ペイアウトは Robux Balance > My Transactions で見つけることができます:
サブスクリプション および グループサブスクリプション の支払いは、 到着 Robux の下に表示され、0>発行0> Robux の下には払い戻しがグループ化されます。サブスクリプションとグループサブスクリプションのサブページは、それ��
個々のユーザーの払い戻し情報を表示するには、MarketplaceService:GetUserSubscriptionPaymentHistoryAsync() を使用します。
サブスクリプションアナリティクス
サブスクリプション分析 は、個々のサブスクリプションの成功を測定し、トレンドを識別し、将来の潜在的な収益を予測するのに役立ちます。サブスクリプションは、最初に有効になったときにサブスクリプションアナリティクスページに追加され、アクティブ化されたり、無
クリエイターダッシュボードを通じて
クリエイターダッシュボードのサブスクリプション分析にアクセスするにクリエーターダッシュボード:
Navigate to your クリエーション page on クリエイターダッシュボード and select your エクスペリエンス.
ナビゲート to the 収益化 tab and select サブスクリプション .
サブスクリプション分析は、次のメトリックを追跡します:
- サブスクリプション: エクスペリエンスでのサブスクリプションの合計。
- 推定収入: フィーの後に獲得されたエクスペリエンスの収入。 払い戻し情報は含まれていません。
- サブスクリプターの壊滅: サブスクリプターの異なる種類。
- 新規 : 新規サブスクリプターの購読数。
- 更新済み : 以前の期間に購入したサブスクリプションの数。
- 復活済み : 以前に購入したユーザーが購入した新しいサブスクリプションの数。
- キャンセル : サブスクリプションが更新されていない件数。これには、ユーザーのキャンセル、クリエーターによるサブスクリプションの再設定、またはその他の方法によるサブスクリプションのキャンセルが含まれます。
- キャンセルは払い戻しと異なります。キャンセルされたサブスクリプションは、再び更新されないが、請求されたサブスクリプションの残りの請求が完了したサブスクリプションです。払い戻しは、ユーザーに支払い戻されるサブスクリプションの残りの請求金額を返します。
- プラットフォーム別のサブスクリプション : 各プラットフォームで購入されたサブスクリプションの数。
- プラットフォームの収益 : 各プラットフォームで購入したサブスクリプションで獲得した収益。
この情報は、 トレンド タブのデータ範囲をベースにしたチャートの形式で表示され、 History タブの提供されたサブスクリプションの完全なリストで表示されます。
ウェブホークを通じて
クラウド API Webhook 機能には、4つのサブスクリプションイベントのトリガーが含まれています: キャンセル、購入、払い戻し、更新。これらの通解析はすぐに発動するので、リアルタイムで応答したり、カスタムアナリティクスを作成したりできます。クラウドウェブホークのセットアップについては、クラウドウェブホークの Notifications