Sur Roblox, publier ton jeu et le monétiser sont deux étapes distinctes. Publier rend ton expérience accessible à tous les joueurs ; monétiser te permet d'en tirer des Robux via des achats intégrés. Cette antisèche regroupe les deux : la mise en ligne (Game Settings, icône, thumbnails, visibilité) et les outils de revenus du MarketplaceService.
Roblox propose deux grands types d'achats. Le GamePass est un achat permanent et unique : une fois acheté, le joueur le possède pour toujours (idéal pour un avantage durable comme un accès VIP ou une vitesse accrue). Le Developer Product est répétable : le joueur peut l'acheter autant de fois qu'il veut (parfait pour des pièces, des recharges ou des boosts consommables). Bien choisir entre les deux dès le départ t'évite de devoir tout reconstruire plus tard.
| Étape | Où |
|---|---|
| 1. Game Settings | Home → Game Settings |
| 2. Nom & description | Onglet Basic Info |
| 3. Genre & sous-genre | Onglet Basic Info |
| 4. Icône (512×512) | Onglet Basic Info |
| 5. Thumbnails (1920×1080) | Onglet Basic Info |
| 6. Visibilité publique | Onglet Permissions → Public |
| 7. Publier | File → Publish to Roblox |
-- Vérifier si un joueur possède un GamePass
local MPS = game:GetService("MarketplaceService")
local PASS_ID = 123456789 -- ton ID GamePass
local ok, hasPass = pcall(function()
return MPS:UserOwnsGamePassAsync(
plr.UserId, PASS_ID
)
end)
if ok and hasPass then
-- accorder l'avantage
end
-- Ouvrir la fenêtre d'achat (côté client)
MPS:PromptGamePassPurchase(plr, PASS_ID)-- Traiter un achat (côté SERVEUR uniquement)
local MPS = game:GetService("MarketplaceService")
local PRODUCT_ID = 987654321
MPS.ProcessReceipt = function(info)
local plr = game.Players:GetPlayerByUserId(info.PlayerId)
if not plr then
return Enum.ProductPurchaseDecision.NotProcessedYet
end
if info.ProductId == PRODUCT_ID then
-- donner les Robux/gemmes/etc.
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end
-- Déclencher l'achat (côté client)
MPS:PromptProductPurchase(plr, PRODUCT_ID)-- Côté client : détecter si l'achat est confirmé
local MPS = game:GetService("MarketplaceService")
MPS.PromptGamePassPurchaseFinished:Connect(
function(plr, passId, purchased)
if purchased then
print("Acheté !")
end
end
)ProcessReceipt doit toujours retourner PurchaseGranted après traitement — sinon Roblox relance l'event indéfiniment !ProcessReceipt, jamais côté client : un client peut être falsifié, et tu offrirais des achats gratuits aux tricheurs.Enum.ProductPurchaseDecision.PurchaseGranted seulement une fois l'avantage réellement accordé. Si tu oublies, Roblox considère l'achat non traité et relance l'événement à chaque session — le joueur sera re-crédité en boucle.