Монетизация: пассы, покупки в игре и подписки

Заработок в Roblox устроен официально и однообразно: игрок платит Robux внутри платформы, а разработчик получает свою долю. Никаких переводов «на карту за предмет» в правилах платформы нет и быть не может.

Что можно продавать

  • Game Pass — покупается один раз и остаётся у игрока навсегда
  • Developer Product — покупается сколько угодно раз: монеты, ускорения, попытки
  • Предметы аватара, если ты делаешь одежду и аксессуары
  • Подписки внутри Experience, если платформа открыла их твоему аккаунту

Как это выглядит в коде

ServerScriptService/Shop.lua
  1. local MarketplaceService = game:GetService("MarketplaceService")
  2. local Players = game:GetService("Players")
  3.  
  4. local GAMEPASS_ID = 0 -- идентификатор своего пасса
  5.  
  6. local function hasPass(player)
  7. local ok, owns = pcall(function()
  8. return MarketplaceService:UserOwnsGamePassAsync(player.UserId, GAMEPASS_ID)
  9. end)
  10.  
  11. return ok and owns
  12. end
  13.  
  14. Players.PlayerAdded:Connect(function(player)
  15. if hasPass(player) then
  16. print(player.Name .. " — владелец пасса")
  17. end
  18. end)

Проверку владения делает сервер, и её результат кэшируют: запрос идёт по сети и в лимитах не бесплатный.

Честные правила продажи

Игрок должен понимать, что покупает, до оплаты. Описание пасса «+50% к скорости» — честно, «секретный бонус» — нет. Loot box с непрозрачными шансами платформа ограничивает, а игроки такое не прощают.

  • Пиши, что именно даёт покупка, и не меняй смысл задним числом
  • Не блокируй базовую игру целиком — платить должен тот, кто хочет большего
  • Не обещай возврат Robux: платформа его не делает
  • Не выводи деньги мимо платформы — это нарушение правил и путь к бану