開発者商品

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

A 開発者商品は、ユーザーが一度以上購入できるアイテムや能力で、ゲーム内通貨、弾薬、またはポーションなどがあります。

開発者商品を作成する

開発者商品を作成するには:

  1. Creationsに行き、ゲームを選択します。
  2. マネタイズ開発者商品に進みます。
  3. 開発者商品を作成をクリックします。
  4. 商品アイコンとして表示される画像をアップロードします。画像は512x512ピクセルを超えず、円の境界外に重要な詳細を含まないこと、フォーマットは.jpg.png、または.bmpである必要があります。
  5. 商品の名前と説明を入力します。
  6. 商品のカテゴリを選択します。カテゴリはゲーム内ショップのアイテムを整理するのに使用されます。
  7. ロブックスでの商品価格を設定します。最小価格は1ロブックス、最大価格は10億ロブックスです。
  8. 変更を保存をクリックします。

開発者商品IDを取得する

スクリプティングを使用するには、開発者商品IDが必要です。商品IDを取得するには:

  1. マネタイズ開発者商品に進みます。

  2. 商品のサムネイルにカーソルを合わせ、ボタンをクリックし、コンテキストメニューからアセットIDをコピーを選択します。

開発者商品を販売する

開発者商品を販売する前に、販売レシートを適切に処理し、購入された商品をユーザーに付与していることを確認してください。そのためには、以下を行う必要があります。

  • ProcessReceipt APIを使用して購入レシートを確認します。ProcessReceiptは、ユーザーがゲーム外で商品を購入したことを自動的に読み取り、確認します。
  • 各レシートのユーザーID開発者商品ID、およびレシートのステータスを検証します。
  • レシートのステータスがオープンの場合、ユーザーに購入した開発者商品を付与します。
  • ProcessReceipt APIに、レシートを確認し、購入したアイテムが付与されたことを検証するメッセージで応答します。

開発者商品を販売する方法は2つあります:

ゲーム内で

ゲーム内で開発者商品を実装して販売するには、MarketplaceService関数を呼び出します。

GetProductInfoを使用して、開発者商品の名前や価格などの情報を取得し、それをユーザーに表示します。例えば、ゲームのマーケットプレイス内で商品を販売できます。開発者商品の場合、第2引数はEnum.InfoType.Productである必要があります。


local MarketplaceService = game:GetService("MarketplaceService")
-- プレースホルダーIDをあなたの開発者商品IDに置き換えます
local productId = 000000
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- 商品情報を表示
-- printステートメントをUIコードに置き換えて商品を表示します
print("開発者商品名: " .. productInfo.Name)
print("ロブックスの価格: " .. productInfo.PriceInRobux)
print("説明: " .. productInfo.Description)
end

GetDeveloperProductsAsyncを使用して、あなたのゲームに関連付けられたすべての開発者商品を取得します。この関数は、Pagesオブジェクトを返し、それを調べてフィルタリングし、ゲーム内ストアや商品リストGUIを構築できます。


local MarketplaceService = game:GetService("MarketplaceService")
local success, developerProducts = pcall(function()
return MarketplaceService:GetDeveloperProductsAsync()
end)
if success and developerProducts then
local firstPage = developerProducts:GetCurrentPage()
for _, developerProduct in firstPage do
-- printステートメントをUIコードに置き換えて商品を表示します
print(field .. ": " .. value)
end
end

PromptProductPurchaseを使用して、ゲーム内での商品購入を促します。ユーザーがボタンを押したり、ベンダーNPCに話しかけたりするアクションを行ったときにこの関数を呼び出すことができます。


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- プレースホルダーIDをあなたの開発者商品IDに置き換えます
local productId = 000000
local function promptProductPurchase()
local success, errorMessage = pcall(function()
MarketplaceService:PromptProductPurchase(player, productId)
end)
if success then
print("購入プロンプトが正常に表示されました")
end
end

また、LocalScript内で関数を組み合わせることもできます。例えば、ボタンやベンダーNPCのようなUI要素を作成し、次にGetProductInfo()を使用して、その要素に既存の開発者商品を接続し、その商品が販売中かどうかを確認し、ユーザーがクリックするたびにPromptProductPurchase()を使用して購入を促すことができます。


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
-- プレースホルダーIDをあなたの開発者商品IDに置き換えます
local productId = 000000
-- ユーザーがUIボタンをクリックしたときに商品情報を取得
button.MouseButton1Click:Connect(function()
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- 商品が販売中かどうかを確認
if productInfo.IsForSale then
print("これは販売中です")
-- 商品購入を促す
MarketplaceService:PromptProductPurchase(player, productId)
else
-- 商品が販売されていないことを通知
print("この商品は現在販売されていません。")
end
else
print("商品情報の取得中にエラーが発生しました: " .. tostring(productInfo))
end
end)

ゲーム外で

ゲーム外で開発者商品の購入を有効にするには、ProcessReceipt APIを使用する必要があります。ユーザーがゲーム詳細ページのストアタブで購入を行った後、ProcessReceiptを使用してその購入を確認し、ユーザーがあなたのゲームに入ったときに彼らのアイテムを付与する必要があります。

テストモード

テストモード機能は、ゲーム内での開発者商品の購入フローを検証するのに役立ちます。テストモードを使用して、外部開発者商品販売の有効化前にProcessReceiptが正しく実装されていることを確認するべきです。

テストモードで販売される開発者商品は、あなたとグループのメンバーだけが見ることができます。ユーザーには表示されません。

実装をテストするには:

  1. Creator Hubに行き、マネタイズ開発者商品に進みます。
  2. **⋮**メニューをクリックし、外部購入設定を選択します。
  3. 外部購入設定ページで、テストモードを有効にするをクリックします。
  4. テストモードが有効になったら、開発者商品ページに戻り、テストする商品を選択します。
  5. 基本設定ページで、外部購入を許可チェックボックスを選択し、変更を保存します。
  6. ゲーム詳細ページのストアタブに行き、販売を許可した商品を購入します。
  7. ゲームに入り、購入した商品を受け取ったことを確認します。ProcessReceipt APIのレシートステータスはクローズに更新されるはずです。

実装のテストが完了すると、ロブロックスはテストが正常に完了したことを確認し、ゲーム外で開発者商品を販売する機能を完全にアクティブにすることを許可します。

ProcessReceipt APIおよびその実装についての詳細は、ProcessReceiptページを参照してください。

外部販売を有効にする

外部販売を有効にするには:

  1. 外部購入設定ページに行きます。
  2. 外部購入をオンにします。
  3. 開発者商品ページに戻り、ゲーム外で販売したい商品を選択します。
  4. 基本設定ページで、外部購入を許可チェックボックスを選択し、変更を保存します。
  5. 商品がゲーム詳細ページのストアタブで購入可能であることを確認します。

開発者商品をゲーム外で販売を無効にするには、開発者商品ページで商品を選択し、外部購入を許可チェックボックスのチェックを外します。

制限事項

  • テストモードで販売されるアイテムは実際のロブックスが必要です。低コストの開発者商品のテストをお勧めします。
  • テストモードで販売されるアイテムは、あなたまたはグループのメンバーのみが見ることができます。
  • 外部で販売するためには、開発者商品にはサムネイルが必要です。
  • 次のアイテムをゲーム外で販売してはいけません:
    • 有料のランダムアイテム
    • 特定の数量、時間、場所、またはユーザー設定及びロールに限定されたアイテム

開発者商品の購入を処理する

ユーザーが開発者商品を購入した後、その取引を処理し記録する必要があります。そのためには、ServerScriptService内でScriptを使用し、ProcessReceipt関数を用います。

ProcessReceipt APIおよびその実装についての詳細は、ProcessReceiptページを参照してください。


local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- 例: 商品ID123123はユーザーの健康を完全に回復する
productFunctions[123123] = function(receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.MaxHealth
-- 購入が成功したことを示す
return true
end
end
-- 例: 商品ID456456はユーザーに100ゴールドコインを付与する
productFunctions[456456] = function(receipt, player)
local leaderstats = player:FindFirstChild("leaderstats")
local gold = leaderstats and leaderstats:FindFirstChild("Gold")
if gold then
gold.Value += 100
return true
end
end
local function processReceipt(receiptInfo)
local userId = receiptInfo.PlayerId
local productId = receiptInfo.ProductId
local player = Players:GetPlayerByUserId(userId)
if player then
-- 開発者商品IDに関連付けられたハンドラ関数を取得して実行しようとする
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- ユーザーはアイテムを受け取った
-- 取引を確認するために "PurchaseGranted" を返す
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn("レシート処理に失敗:", receiptInfo, result)
end
end
-- ユーザーのアイテムを付与できませんでした
-- "NotProcessedYet" を返して、次回ユーザーがゲームに参加したときに再試行します
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- コールバックを設定
-- これは、1つのサーバーサイドスクリプトによって1回だけ行うことができます
MarketplaceService.ProcessReceipt = processReceipt

ゲーム内ストアをパーソナライズする

商品インテリジェンスAPIを使用して、ユーザーに開発者商品をソートおよび推奨することができます。ゲーム内ストアをパーソナライズすることで、各ユーザーに最も関連性の高いアイテムを提供し、エンゲージメントと収益を向上させることができます。ユーザーの好みに合わせて開発者商品を調整することで、発見を改善し、コンバージョン率を向上させ、新たなマネタイズの機会を開放できます。

販売する開発者商品をランク付けする

RankProductsAsyncは商品IDのリストを受け取り、それらの商品のパーソナライズされた順序付きリストを返します。このメソッドを使用して、ゲーム内ストアでユーザーにパーソナライズされたアイテム推奨を提供することができます。

例: ユーザーにランク付けされた三つの「パワー」アイテム
ユーザーにランク付けされた三つのアイテム。

local MarketplaceService = game:GetService("MarketplaceService")
-- ランク付けしたい商品の配列を作成
local productIdentifiers = {
{InfoType = Enum.InfoType.GamePass, Id = 123},
{InfoType = Enum.InfoType.Product, Id = 456},
{InfoType = Enum.InfoType.Product, Id = 789}
}
-- エラー処理を行うために保護された呼び出しを行う
local success, rankedProducts = pcall(function()
return MarketplaceService:RankProductsAsync(productIdentifiers)
end)
if not success then
error("商品のランク付けに失敗しました")
end
-- 戻り値のアイテムをストアにロードする
for i, rankedItem in ipairs(rankedProducts) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- 商品をストアに追加するためのロジック
end

トップの開発者商品を表示する

RecommendTopProductsAsyncは、InfoTypeの配列を受け取り、ユーザーが最も関与し、購入する可能性が高いアイテム最大50個を返します。このメソッドを使用して、ゲーム内ストアに「おすすめトップ」セクションを作成できます。

もしレコメンデーションが決定できない場合、RecommendTopProductsAsyncは0アイテムを返します。

稀に、ランキングモデルへの呼び出しが遅くなることがあります。ユーザーに追加の待機時間がかからないようにするために、task.spawnを使用してRecommendTopProductsへの呼び出しを非ブロッキングにすることをお勧めします。

例: ゲーム内ストアの「トップピックス」タブ
ゲーム内ストアのトップピックスタブ。

local MarketplaceService = game:GetService("MarketplaceService")
-- レコメンデーションに含めたい商品タイプの配列を作成します -- この例ではパスと開発者商品を両方含めています
local productTypes = {Enum.InfoType.GamePass, Enum.InfoType.Product}
-- エラー処理を行うために保護された呼び出しを行う
local success, topRankedItems = pcall(function()
return MarketplaceService:RecommendTopProductsAsync(productTypes)
end)
if not success then
error("商品のランク付けに失敗しました")
end
-- 戻り値のアイテムをストアにロードする
-- 購入できなくなった開発者商品など、topRankedItemsから不適格なアイテムをフィルタリングしてください
for i, rankedItem in ipairs(topRankedItems) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- 商品をストアに追加するためのロジック
end

開発者商品分析

開発者商品分析を使用して、個々の商品の成功を分析し、トレンドを特定し、将来の収益を予測します。

分析を使用することで、

  • 選択された期間にわたってトップの開発者商品を表示します。
  • 時系列グラフに最大8つのトップ販売アイテムを表示して、全体の販売およびネット収益を分析します。
  • カタログを監視し、販売およびネット収益によってアイテムをソートします。

開発者商品分析にアクセスするには:

  1. Creationsに行き、ゲームを選択します。
  2. マネタイズ開発者商品に進みます。
  3. 分析タブを選択します。
©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。