Пока большинство авторов разрабатывают игры для обычных пользователей, опытные инженеры монетизируют инструменты для самих разработчиков. В Roblox Creator Store можно официально продавать плагины для Studio за реальные доллары (USD) и Robux.
Для создания профессионального плагина нужны API, которые не используются в обычных играх: DockWidgetPluginGui для стыкуемых окон, ChangeHistoryService для корректной отмены действий (Ctrl+Z) и Selection API. Этот гайд разбирает разработку от кода до продаж.
1. Архитектура и права плагинов в Studio
Плагины работают с повышенными правами внутри Studio:
- Контекст выполнения: Работают локально в клиенте Studio с доступом к выделению и изменению дерева объектов.
- Локальные плагины: Сохраняйте скрипты в папку
%localappdata%\Roblox\Pluginsдля мгновенного тестирования без загрузки на сайт. - Права безопасности: Внешние HTTP-запросы требуют подтверждения пользователя через специальное окно.
2. Создание стыкуемых панелей через DockWidgetPluginGui
Разработка окон интерфейса, которые прикрепляются к панелям Studio:
- Настройки DockWidgetPluginGuiInfo: Задают начальное положение (слева, справа, плавающее) и минимальный размер окна.
- Поддержка темной и светлой темы: Считывайте
settings().Studio.Themeдля идеального слияния с интерфейсом. - Адаптивная верстка: Используйте UIListLayout для сохранения правильного расположения кнопок.
3. Безопасная отмена через ChangeHistoryService
Главная ошибка любительских плагинов — поломка истории Ctrl+Z:
- Установка Waypoint: Вызывайте
ChangeHistoryService:SetWaypoint()сразу после внесения изменений. - Атомарность отмены: Объединяйте операции, чтобы одно нажатие Ctrl+Z отменяло действие плагина целиком.
- Работа с Selection: Редактируйте только выделенные пользователем детали с помощью
Selection:Get().
4. Полный код плагина: оптимизатор выбранных деталей
Готовый скрипт, добавляющий кнопку, окно интерфейса и пакетную оптимизацию моделей:
local ChangeHistoryService = game:GetService("ChangeHistoryService")
local Selection = game:GetService("Selection")
local toolbar = plugin:CreateToolbar("Optimization Tools")
local button = toolbar:CreateButton("Optimizer", "Open Batch Part Optimizer", "rbxassetid://4458901886")
local widgetInfo = DockWidgetPluginGuiInfo.new(
Enum.InitialDockState.Float,
false, false, 260, 180, 200, 140
)
local widget = plugin:CreateDockWidgetPluginGui("BatchOptimizerGui", widgetInfo)
widget.Title = "Mesh Optimizer"
local btnOptimize = Instance.new("TextButton")
btnOptimize.Size = UDim2.new(1, -20, 0, 44)
btnOptimize.Position = UDim2.new(0, 10, 0, 10)
btnOptimize.Text = "Оптимизировать детали"
btnOptimize.BackgroundColor3 = Color3.fromRGB(16, 185, 129)
btnOptimize.TextColor3 = Color3.fromRGB(255, 255, 255)
btnOptimize.Parent = widget
button.Click:Connect(function()
widget.Enabled = not widget.Enabled
end)
btnOptimize.MouseButton1Click:Connect(function()
local selected = Selection:Get()
local count = 0
for _, obj in ipairs(selected) do
if obj:IsA("BasePart") then
obj.CastShadow = false
if obj:IsA("MeshPart") then
obj.CollisionFidelity = Enum.CollisionFidelity.Box
end
count = count + 1
end
end
ChangeHistoryService:SetWaypoint("Optimized " .. count .. " Parts")
end)
Как это работает: Создает кнопку в верхней панели, открывает прикрепляемое окно и оптимизирует коллизии и тени у выделенных мешей с фиксацией точки отмены.
5. Продажа в Creator Store за доллары ($USD)
Как монетизировать плагин на глобальном рынке:
- Цены в реальной валюте: Продавайте плагин от $4.99 до $19.99 с прямым выводом денег.
- Модель Freemium: Бесплатная базовая версия для набора аудитории и платная Pro-версия.
- Презентация на DevForum: Видеодемонстрации работы кратно увеличивают продажи.
Оцените свои навыки системного мышления
Разработка инструментов требует терпения и структурного подхода. Проверьте свой когнитивный профиль с нашими тестами.
Пройти бесплатный тест на тип мозгаЧасто задаваемые вопросы (Разработка плагинов Roblox Studio)
Как тестировать плагин локально без загрузки в интернет?
Сохраните файл в локальную папку плагинов Studio (Плагины > Открыть папку плагинов). Он загрузится мгновенно.
Можно ли продавать плагины за реальные доллары?
Да, верифицированные создатели могут устанавливать цены в USD в Roblox Creator Store.
Зачем обязательно использовать ChangeHistoryService?
Чтобы пользователь мог в любой момент отменить действие плагина нажатием Ctrl+Z.
Как поддержать темную и светлую тему оформления?
С помощью settings().Studio.Theme:GetColor() можно динамически получать актуальные цвета интерфейса.