roblox-monetization について
Roblox の開発者やデザイナー向けに、ゲーム内購入、アバターアイテム、Premium Payouts、DevEx による正規の Robux 収益化を解説します。Creator Hub の設定から Lua によるサーバー側の購入処理や信頼性確保まで扱います。
主な機能
- 01Game Pass の設定と所有権確認
- 02Developer Product の繰り返し購入処理
- 03UGC アイテムの公開手順
- 04Premium Payout と DevEx の案内
- 05サーバー側の購入安全対策
活用シーン
- 01Roblox の体験に恒久特典やアクセス権を追加
- 02繰り返し購入でコインやブーストを付与
- 03UGC 販売と Premium 収益を計画
- 04領収書の再試行に対応し購入を安全に保存
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sentinelcore/ roblox-skills --skill roblox-monetizationインストール後、Claude Code で/roblox-monetizationを入力して読み込まれたか確認します。
詳細
Roblox マネタイゼーション
概要
Roblox のマネタイゼーションシステムを通じて合法的に Robux を稼ぐためのエンドツーエンドガイドです。開発者とデザイナーの両方向けに、ダッシュボードの設定と Lua スクリプトについて解説します。
クイックリファレンス
| システム | 用途 | 繰り返し購入? | 最低価格 |
|---|---|---|---|
| ゲームパス | 永続的な特典/アクセス | 不可 (買い切り) | 1 Robux |
| 開発者プロダクト | 消耗品、通貨、ブースト | 可 (無制限) | 1 Robux |
| UGC アイテム | アバターマーケットプレイスでの販売 | 該当なし | 1 Robux |
| Premium ペイアウト | プレイ時間に応じた受動的収入 | 自動 | 設定不要 |
1. ゲームパス
永続的な特典を付与する買い切りの購入です。プレイヤーはゲームごと、パスごとに 1 回支払います。
ダッシュボードでの設定
- create.roblox.com → 体験を選択 → Monetization → Passes
- Create a Pass → 512×512 の PNG アイコンをアップロードし、名前、説明、価格を設定
- 保存 → Pass ID を控える
サーバースクリプト
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local PASS_ID = 000000 -- your Pass ID
-- Check ownership on join
Players.PlayerAdded:Connect(function(player)
local success, hasPass = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, PASS_ID)
end)
if success and hasPass then
-- grant perk
end
end)
-- Prompt purchase (call from server)
local function promptPass(player)
MarketplaceService:PromptGamePassPurchase(player, PASS_ID)
end
-- Grant immediately after purchase
MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, passId, purchased)
if purchased and passId == PASS_ID then
-- grant perk
end
end)
常にサーバー上 (Script) で実行し、LocalScript は決して使用しないでください — クライアント側の所有権チェックは偽装される可能性があります。
2. 開発者プロダクト
繰り返し購入できるプロダクトです — プレイヤーは無制限に購入できます。コイン、ポーション、ブースト、ゲーム内通貨に使用します。
ダッシュボードでの設定
- Creator Hub → 体験 → Monetization → Developer Products
- Create a Developer Product → 名前、説明、アイコン、価格を設定
- Product ID を控える
サーバースクリプト
local MarketplaceService = game:GetService("MarketplaceService")
local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")
local PRODUCT_ID = 000000 -- your Product ID
local coinStore = DataStoreService:GetDataStore("PlayerCoins")
local function processReceipt(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
if receiptInfo.ProductId == PRODUCT_ID then
-- Persist to DataStore FIRST — if server crashes after this line, coins are safe
local ok, err = pcall(function()
coinStore:UpdateAsync(tostring(player.UserId), function(current)
return (current or 0) + 100
end)
end)
if not ok then
warn("DataStore failed:", err)
return Enum.ProductPurchaseDecision.NotProcessedYet -- Roblox will retry
end
-- Now safe to update in-memory value (leaderstats, etc.)
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
MarketplaceService.ProcessReceipt = processReceipt
-- Prompt purchase
local function promptProduct(player)
MarketplaceService:PromptProductPurchase(player, PRODUCT_ID)
end
ProcessReceiptに関する重要なルール:
PurchaseGrantedまたはNotProcessedYetを必ず返してください — 決してエラーを黙って無視しないでください- 返す前に DataStore に永続化してください — クラッシュすると損失が発生する可能性があります
- DataStore の失敗時は
NotProcessedYetを返し、Roblox がレシートを再試行できるようにしてください- サーバーごとに
ProcessReceiptハンドラーは 1 つだけ許可されます。すべてのプロダクト ID をその中にまとめてください- Roblox は同じ購入に対して
ProcessReceiptを複数回呼び出す可能性があります — 二重付与が懸念される場合は、重複排除キーとしてreceiptInfo.PurchaseIdを使用してください
3. UGC / アバターアイテム
Roblox マーケットプレイスで衣類、アクセサリー、バンドルを販売します。
要件
- UGC プログラムへのアクセス — roblox.com/create/ugc で申請
- アカウントで本人確認が完了していること
- 3D メッシュアイテムには Roblox Studio または Blender
ワークフロー
- アイテムをデザインする (Roblox メッシュ/テクスチャ仕様に従ってください)
- Creator Hub → Avatar Items → Create → アップロードし、カテゴリ、タグ、価格を設定
- 審査に提出 (通常 1〜3 営業日)
- アイテムが公開され、マーケットプレイスに表示されます
収益率
| アイテム種別 | クリエイターの取り分 |
|---|---|
| 衣類 (Tシャツ、シャツ、パンツ) | 売上の 70% |
| UGC アクセサリー | 30% (Premium サブスクリプションで 40%) |
| 再販可能な Limited UGC | 最大 70% |
4. 購入状態をクライアントに伝える
サーバー側でプロダクトを付与した後、RemoteEvent を介してクライアントに通知し、UI が更新できるようにします (ブーストタイマーの表示、ボタンのアンロックなど):
-- Inside ProcessReceipt, after DataStore save succeeds
local NotifyClient = game:GetService("ReplicatedStorage").Remotes.PurchaseGranted
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if player then
NotifyClient:FireClient(player, { productId = receiptInfo.ProductId })
end
5. Premium ペイアウト
Roblox Premium サブスクライバーがあなたのゲームで過ごした時間に応じた受動的な Robux です。設定は不要です。
- Roblox は Premium メンバーのエンゲージメントを自動的に追跡します
- Premium のプレイ時間に比例して、Premium ペイアウトプールの取り分を毎月受け取ります
- 収益の確認: Creator Hub → Analytics → Monetization → Premium Payouts
Premium ペイアウトを最大化する
- より長いセッションループを構築する (進行、ストーリー、リプレイ性)
- Premium 限定のコスメティックやボーナスを追加して Premium プレイヤーを引き付ける
DevEx: Robux → リアルマネー
資格要件:
- 30,000 以上の Robux を獲得していること(購入した Robux はカウントされません)
- 13 歳以上であること
- Roblox アカウントでメールアドレスを認証済みであること
- 有効なアカウント違反がないこと
- Roblox Premium サブスクリプションに加入していること
手順:
- Creator Hub → DevEx(Developer Exchange)
- 交換リクエストを送信
- Roblox がリクエストを審査(通常 1〜2 週間)
- Tipalti を通じて、およそ Robux 1 あたり $0.0035(35,000 Robux で約 $122)で支払われます
Tipalti: 最初の支払いの前に、別途 Tipalti アカウントを作成して認証する必要があります。遅延を避けるため、早めに設定しておきましょう。
よくある間違い
| 間違い | 修正方法 |
|---|---|
| LocalScript での所有権チェック | サーバーの Script に移動してください — クライアント側のチェックは悪用される可能性があります |
ProcessReceipt がエラーをスローする | ロジックを pcall でラップしてください。常に決定を表す enum を返すようにします |
| 購入を DataStore に保存していない | クラッシュするとプレイヤーがアイテムを失います — PurchaseGranted を返す前に永続化してください |
複数の ProcessReceipt ハンドラー | サーバーごとに 1 つだけ許可されています — すべての製品ロジックを 1 つの関数にまとめてください |
| レシートの再試行で二重付与 | receiptInfo.PurchaseId を DataStore のキーとして使用し、処理済みのレシートを検出してください |
| プログラムへのアクセスなしで UGC を販売 | 先に UGC プログラムに申請してください。そうしないとアップロードが拒否されます |
| プラットフォームの最低価格を下回る価格 | ほとんどのアイテム種別で最低価格は 1 Robux です |
| 十分な Robux があるのに DevEx がブロックされる | すべての資格を確認してください: 13 歳以上、認証済みメールアドレス、違反なし、Premium サブスクリプション、(購入ではなく)獲得した Robux |