Bir geliştirici ürünü, bir kullanıcının birden fazla kez satın alabileceği bir öğe veya yetenek olup, oyun içi para birimi, cephane veya iksir gibi öğeleri içermektedir.

Geliştirici ürünü oluşturma
Bir geliştirici ürünü oluşturmak için:
- Yaratımlar sayfasına gidin ve bir oyun seçin.
- Monetizasyon ⟩ Geliştirici Ürünleri seçeneğine gidin.
- Geliştirici ürünü oluştur butonuna tıklayın.
- Ürün simgesi olarak gösterilecek bir görsel yükleyin. Görselin 512x512 pikseli aşmadığından, dairesel sınırları dışında önemli detaylar içermediğinden ve .jpg, .png veya .bmp formatında olduğundan emin olun.
- Ürün için bir isim ve açıklama girin.
- Ürün için bir kategori seçin. Kategori, dükkânınızdaki öğeleri düzenlemek için kullanılır.
- Ürünün fiyatını Robux cinsinden belirleyin. Minimum fiyat 1 Robux ve maksimum fiyat 1 milyar Robux'tur.
- Değişiklikleri Kaydet butonuna tıklayın.
Geliştirici ürünü kimliğini alma
Scripting kullanmak için geliştirici ürünü kimliğine ihtiyacınız var. Ürün kimliğini almak için:
Monetizasyon ⟩ Geliştirici Ürünleri bölümüne gidin.
Bir ürünün küçük resminin üzerine gelin, ⋯ butonuna tıklayın ve bağlam menüsünden Varlık Kimliğini Kopyala seçeneğini seçin.

Geliştirici ürünü satma
Geliştirici ürünleri satmadan önce, satış makbuzlarını doğru bir şekilde işlediğinizden ve kullanıcıların satın aldıkları ürünleri aldıklarından emin olmalısınız. Bunu yapmak için:
- ProcessReceipt API'sini kullanarak satın alma makbuzlarını kontrol edin. ProcessReceipt, kullanıcının oyunun dışında bir ürünü satın aldığını otomatik olarak okur ve onaylar.
- Her makbuzu Kullanıcı Kimliği, Geliştirici Ürün Kimliği ve makbuz durumu için doğrulayın.
- Eğer makbuzun durumu Açık ise, kullanıcıya satın aldığı geliştirici öğelerini verin.
- ProcessReceipt API'sine makbuzu onaylayan bir mesaj gönderin ve satın alınan öğelerin verildiğini doğrulayın.
Geliştirici ürünlerini iki şekilde satabilirsiniz:
Oyun içinde
Bir oyunun içinde geliştirici ürününü uygulamak ve satmak için MarketplaceService fonksiyonlarını çağırın.
Geliştirici ürününün adını ve fiyatını almak için GetProductInfo fonksiyonunu kullanın ve ardından bu ürünü kullanıcılara gösterin. Ürünü oyununuzun pazarında satabilirsiniz. Geliştirici ürünleri için ikinci parametre Enum.InfoType.Product olmalıdır.
local MarketplaceService = game:GetService("MarketplaceService")
-- Yer tutucu kimliğini geliştirici ürün kimliğinizle değiştirin
local productId = 000000
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Ürün bilgisini göster
-- Print ifadelerini ürün gösterme arayüzü kodu ile değiştirin
print("Geliştirici Ürün Adı: " .. productInfo.Name)
print("Robux'daki Fiyat: " .. productInfo.PriceInRobux)
print("Açıklama: " .. productInfo.Description)
end
Oyununuza bağlı tüm geliştirici ürünlerini almak için GetDeveloperProductsAsync fonksiyonunu kullanın. Bu fonksiyon, inceleyebileceğiniz ve filtreleyebileceğiniz bir Pages nesnesi döndürür ve böylece oyun içi mağaza veya ürün listesi GUI'si gibi öğeler oluşturabilirsiniz.
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 ifadesini ürün gösterme arayüzü kodu ile değiştirin
print(field .. ": " .. value)
end
end
Oyun içinde ürün satın alma isteği başlatmak için PromptProductPurchase fonksiyonunu kullanın. Kullanıcı bir butona basarken veya bir satıcı NPC ile konuşurken bu fonksiyonu çağırabilirsiniz.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Yer tutucu kimliğini geliştirici ürün kimliğinizle değiştirin
local productId = 000000
local function promptProductPurchase()
local success, errorMessage = pcall(function()
MarketplaceService:PromptProductPurchase(player, productId)
end)
if success then
print("Satın alma isteği başarıyla gösterildi")
end
end
Ayrıca LocalScript içinde fonksiyonları birleştirebilirsiniz. Örneğin, bir buton veya bir satıcı NPC gibi bir kullanıcı arayüzü öğesi oluşturup daha sonra GetProductInfo() fonksiyonunu kullanarak mevcut bir geliştirici ürününü o öğeye bağlayabilir, ürünün satışta olup olmadığını kontrol edebilir ve kullanıcı üzerine tıkladığında satın alma isteği başlatabilirsiniz.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
-- Yer tutucu kimliğini geliştirici ürün kimliğinizle değiştirin
local productId = 000000
-- Kullanıcı arayüzü butonuna tıklandığında ürün bilgilerini alır
button.MouseButton1Click:Connect(function()
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Ürünün satışta olup olmadığını kontrol eder
if productInfo.IsForSale then
print("Bu satışta")
-- Ürün satın alma isteği başlatır
MarketplaceService:PromptProductPurchase(player, productId)
else
-- Ürünün satışta olmadığını bildirir
print("Bu ürün şu anda satışta değil.")
end
else
print("Ürün bilgilerini alma hatası: " .. tostring(productInfo))
end
end)
Oyun dışında
Geliştirici ürünü satın alma işlemlerini oyun dışında etkinleştirmek için, ProcessReceipt API'si ile çalışmalısınız. Bir kullanıcı oyununuzun detay sayfasındaki Mağaza sekmesinde bir satın alma yaptığında, ProcessReceipt aracılığıyla satın almayı onaylamalı ve kullanıcı oyunun içine girdiğinde ürünlerini vermelisiniz.
Test modu
Test modu özelliği, oyununuzun dışında bir geliştirici ürünü satın alma akışını doğrulamanıza yardımcı olur. Test modunu, dış geliştirici ürün satışlarını etkinleştirmeden önce ProcessReceipt fonksiyonunu doğru bir şekilde uyguladığınızdan emin olmak için kullanmalısınız.
Test modunda satışa sunduğunuz geliştirici ürünleri yalnızca siz ve grup üyeleriniz tarafından görülebilir. Kullanıcılara görünmezler.
Uygulamanızı test etmek için:
- Yaratıcı Merkez'e gidin, Monetizasyon ⟩ Geliştirici Ürünleri seçeneğine gidin.
- ⋮ menüsüne tıklayın ve Dış Satın Alma Ayarları'nı seçin.
- Dış Satın Alma Ayarları sayfasında, Test modunu etkinleştir butonuna tıklayın.
- Test modu aktif olduğunda, Geliştirici Ürünleri sayfasına geri dönün ve test etmek istediğiniz bir ürünü seçin.
- Temel Ayarlar sayfasında, Dış satın almaları izin ver onay kutusunu seçin ve değişikliklerinizi kaydedin.
- Oyun detayları sayfasının Mağaza sekmesine gidin ve satışa sunduğunuz ürünü satın alın.
- Oyuna girin ve satın aldığınız ürünü aldığınızdan emin olun. ProcessReceipt API'sinin makbuz durumu Kapalı olarak güncellenmelidir.
Uygulamanızı test ettikten sonra, Roblox testin başarıyla tamamlandığını doğrular ve geliştirici ürünlerini dışarıda satma özelliğini tamamen etkinleştirmenize izin verir.
ProcessReceipt API'si ve uygulanması hakkında daha fazla bilgi için ProcessReceipt sayfasına bakın.
Dış satışları etkinleştirme
Dış satışları etkinleştirmek için:
- Dış Satın Alma Ayarları sayfasına gidin.
- Dış Satın Alımları açın.
- Geliştirici Ürünleri sayfasına geri dönün ve oyununuz dışında satmak istediğiniz ürünleri seçin.
- Temel Ayarlar sayfasında, Dış satın almaları izin ver onay kutusunu seçin ve değişikliklerinizi kaydedin.
- Ürünlerin artık oyun detayları sayfasının Mağaza sekmesinde satın alınabilir olduğundan emin olun.
Bir geliştirici ürününün dış satışını devre dışı bırakmak için, Geliştirici Ürünleri sayfasında ürünü seçin ve Dış satın almaları izin ver onay kutusunu temizleyin.
Sınırlamalar
- Test modunda satışta olan öğeler gerçek Robux maliyetine sahiptir. Düşük maliyetli geliştirici ürünlerini test etmenizi öneririz.
- Test modundaki satışta olan öğeler yalnızca siz veya grup üyeleriniz tarafından görülebilir.
- Dışarıda satılabilmesi için, geliştirici ürünlerinizin bir küçük resme sahip olması gerekmektedir.
- Oyun dışında aşağıdakileri satmamalısınız:
- Ücretli rastgele öğeler
- Belirli miktara, zamana, yere veya kullanıcı ayarlarına ve rollerine sınırlı olan öğeler
Geliştirici ürünü satın alımını yönetme
Bir kullanıcı bir geliştirici ürünü satın aldıktan sonra, işlemi yönetmeli ve kaydetmelisiniz. Bunu yapmak için, ServerScriptService içinde Script kullanarak ProcessReceipt fonksiyonunu kullanın.
ProcessReceipt API'si ve uygulanması hakkında daha fazla bilgi için ProcessReceipt sayfasına bakın.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- Örnek: ürün kimliği 123123, kullanıcının sağlık durumunu tamamen iyileştirir
productFunctions[123123] = function(receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.MaxHealth
-- Başarılı bir satın alımı gösterir
return true
end
end
-- Örnek: ürün kimliği 456456, kullanıcıya 100 altın madeni verir
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
-- Geliştirici ürün kimliğiyle ilişkili işleyici fonksiyonunu alır ve çalıştırmayı dener
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- Kullanıcı öğelerini aldı
-- İşlemi onaylamak için "PurchaseGranted" döndürür
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn("Makbuzu işlemekte hata meydana geldi:", receiptInfo, result)
end
end
-- Kullanıcının öğeleri verilemedi
-- "NotProcessedYet" döndürür ve kullanıcı bir sonraki oyun girişi yaptığında tekrar dener
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Geri çağrıyı ayarlayın
-- Bu, yalnızca bir sunucu tarafı script'i tarafından bir kez yapılabilir
MarketplaceService.ProcessReceipt = processReceipt
Oyun içi mağazanızı kişiselleştirin
Kullanıcılara geliştirici ürünleri sıralamak ve önerilerde bulunmak için ürün zekası API'larını kullanabilirsiniz. Oyun içi mağazanızı kişiselleştirmek, her kullanıcıya en alakalı öğeleri sunmaya yardımcı olur, katılımı ve geliri artırır. Geliştirici ürünlerini kullanıcı tercihlerine göre uyarlayarak, onların keşfini iyileştirebilir, dönüşüm oranlarını artırabilir ve yeni gelir fırsatlarını açabilirsiniz.
Satışa sunulan geliştirici ürünlerini sıralama
RankProductsAsync, bir ürün kimliği listesi alır ve bu ürünlerin kişiselleştirilmiş sıralı bir listesini döndürür. Bu yöntemi, kullanıcılarınıza oyun içi mağazanızda kişiselleştirilmiş ürün önerileri sunmak için kullanabilirsiniz.

local MarketplaceService = game:GetService("MarketplaceService")
-- Sıralamak istediğiniz ürünlerin bir dizisini oluşturun
local productIdentifiers = {
{InfoType = Enum.InfoType.GamePass, Id = 123},
{InfoType = Enum.InfoType.Product, Id = 456},
{InfoType = Enum.InfoType.Product, Id = 789}
}
-- Hataları yönetmek için korumalı bir çağrı yapın
local success, rankedProducts = pcall(function()
return MarketplaceService:RankProductsAsync(productIdentifiers)
end)
if not success then
error("Ürünleri sıralamada hata")
end
-- Döndürülen ürünleri mağazaya yükleyin
for i, rankedItem in ipairs(rankedProducts) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Ürünleri mağazaya ekleme mantığı
end
En üst geliştirici ürünlerinizi gösterin
RecommendTopProductsAsync, bir dizi InfoType değeri alır ve bir kullanıcının en çok etkileşimde bulunma ve satın alma olasılığı en yüksek olan 50 adede kadar öğeyi döndürür. Bu yöntemi, oyun içi mağazanızda "En İyi Seçimler" bölümü oluşturmak için kullanabilirsiniz.
Eğer öneri yapılamıyorsa, RecommendTopProductsAsync 0 öğe döndürür.
Nadir durumlarda sıralama modeline yapılan çağrılar yavaş olabilir. Kullanıcılara ekrana geçilmesini engellemek için task.spawn kullanarak RecommendTopProducts çağrısını engelleyici olmayacak şekilde yapmanızı öneririz.

local MarketplaceService = game:GetService("MarketplaceService")
-- Önerilere dahil etmek istediğiniz ürün türleri için bir dizi oluşturun -- Bu örnek hem geçişleri hem de geliştirici ürünlerini içerir
local productTypes = {Enum.InfoType.GamePass, Enum.InfoType.Product}
-- Hataları yönetmek için korumalı bir çağrı yapın
local success, topRankedItems = pcall(function()
return MarketplaceService:RecommendTopProductsAsync(productTypes)
end)
if not success then
error("Ürünleri sıralamada hata")
end
-- Döndürülen ürünleri mağazaya yükleyin
-- Kullanıcının artık satın alamayacağı geliştirici ürünleri gibi uygunsuz öğeleri 'topRankedItems' listesinden filtrelediğinizden emin olun
for i, rankedItem in ipairs(topRankedItems) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Ürünleri mağazaya ekleme mantığı
end
Geliştirici ürünü analitiği
Geliştirici ürünü analitiği, bireysel ürünlerin başarısını analiz etmenizi, trendleri belirlemenizi ve potansiyel gelecekteki kazançları tahmin etmenizi sağlar.
Analitik ile şunları yapabilirsiniz:
- Seçilen bir zaman dilimi boyunca en iyi geliştirici ürünlerinizi görüntüleyin.
- Toplam satış ve net gelir analizini yapmak için zaman serisi grafiğinde sekiz adet en çok satan ürünü sergileyin.
- Katalogunuzu izleyin ve öğeleri satış ve net gelire göre sıralayın.
Geliştirici ürünü analitiğine erişmek için:
- Yaratımlar sayfasına gidin ve bir oyun seçin.
- Monetizasyon ⟩ Geliştirici Ürünleri seçeneğine gidin.
- Analizler sekmesini seçin.
