Геймпассы в Roblox¶
Геймпасс (game pass) — платный цифровой товар в платформе Roblox, приобретаемый игроком за внутриигровую валюту Robux. Геймпассы создаются разработчиками игр через Studio и предоставляют покупателю постоянные привилегии в конкретной игре: усиленные характеристики, уникальные предметы, доступ к зонам или функциям. Продажа геймпассов — один из основных способов монетизации для разработчиков на платформе.
¶Механика работы
Геймпасс привязан к конкретной игре (experience), а не к аккаунту игрока в целом. При покупке игрок получает привилегию навсегда, если разработчик не настроил иное поведение. Разработчик получает 70 % от суммы продажи, остальные 30 % удерживает Roblox как комиссию платформы.
Для активации эффекта геймпасса в игре используется серверный скрипт, проверяющий, приобрёл ли игрок привилегию. Проверка выполняется через MarketplaceService: метод PlayerOwnsGamePassAsync или UserOwnsGamePassAsync возвращает булево значение, после чего скрипт выдаёт соответствующий бонус.
¶Создание геймпасса
¶Подготовка
- Создаётся игра в Roblox Studio или открывается существующий проект.
- В настройках игры включается опция «Enable Paid Access» или, точнее, «Enable Game Passes» — без этого продажа невозможна.
- Загружается иконка (обычно 512×512 пикселей) и, при необходимости, скриншот.
¶Оформление в Creator Dashboard
- На сайте Roblox открывается раздел «Creations» → нужная игра → вкладка «Monetization» → «Passes».
- Нажимается кнопка «Create a Pass».
- Указываются: название, описание, изображение.
- После сохранения геймпассу присваивается уникальный ID — он понадобится для скриптов.
¶Установка цены
По умолчанию геймпасс создаётся в статусе «Off Sale». Чтобы включить продажу:
- В Creator Dashboard открывается карточка геймпасса.
- На вкладке «Sales» переключается тумблер «Item for Sale».
- В поле «Price» указывается сумма в Robux (минимальная цена — 5 Robux).
- Сохраняется изменение.
¶Программная реализация
¶Проверка покупки
```lua local MarketplaceService = game:GetService("MarketplaceService") local PASS_ID = 1234567890
game.Players.PlayerAdded:Connect(function(player) local ownsPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, PASS_ID) if ownsPass then -- выдача привилегии end end) ```
¶Обработка покупки в реальном времени
Чтобы игрок получил бонус сразу после покупки, не перезходя в игру, подключается сигнал PromptGamePassPurchaseFinished:
``lua MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, passId, purchased) if purchased and passId == PASS_ID then -- выдать бонус end end) ``
¶Продажа геймпасса из игры
Для открытия окна покупки используется MarketplaceService:PromptGamePassPurchase(player, PASS_ID).
¶Рекомендации по дизайну
- Название должно отражать конкретную выгоду: «2x Coins», «VIP Access», «Extra Speed».
- Описание кратко перечисляет преимущества без расплывчатых формулировок.
- Иконка читается в маленьком размере, контрастна, не перегружена текстом.
- Цена подбирается с учётом целевой аудитории: для широкой аудитории — низкий порог входа (10–50 Robux), для нишевых привилегий — выше.
¶Типичные ошибки
- Отсутствие проверки покупки на сервере — привилегии можно получить взломом через локальные скрипты.
- Использование
PlayerOwnsGamePassAsyncбез обработки ошибок сети — при недоступности сервиса скрипт может зависнуть. - Забытый статус «Off Sale» — геймпасс создан, но не продаётся.
- Отсутствие обработки сигнала покупки — игрок оплатил, но бонус не выдан до перезахода.
¶Монетизация и доход
Доход от геймпассов зависит от популярности игры и конверсии аудитории. Разработчики часто сочетают геймпассы с другими источниками: Developer Products (одноразовые покупки), Premium Payouts (доля от подписки Premium) и рекламой. Roblox выплачивает заработанные Robux с возможностью вывода в реальные деньги через DevEx при выполнении условий программы (возраст 13+, аккаунт в хорошем состоянии, минимальный баланс).
Источники:
- Документация Roblox Creator Hub (create.roblox.com/docs)
- Справка по MarketplaceService (create.roblox.com/docs/reference/engine/classes/MarketplaceService)
- Roblox Developer Forum (devforum.roblox.com)