- Roblox Studio (актуальную версию смотрите в самом Studio: File → About Roblox Studio; номер версии сверьте с документацией Roblox)
- бесплатный аккаунт Roblox
- агент studsmith, установленный по инструкции проекта: способ установки, имя конфигурационного файла и список поддерживаемых моделей — сверьтесь с документацией studsmith, в гайде они не фиксируются
- пустая папка под проект и любой текстовый редактор

Чек-лист готовности:
Baseplate, файл сохранён как <ваш-путь>/<имя-проекта>.rbxlOutput (View → Output) — оно понадобится для проверки каждого шагаCommand Bar (View → Command Bar) — строка ввода Luau-команд в один кликПример: после View → Output в нижней панели Studio появляется вкладка Output с пустым списком. Если вкладки нет — пункт меню не нажат, а не «сломался Studio».

Что сделать: создайте рядом с файлом .rbxl папку проекта и положите в неё два файла — notes/agent-brief.md (бриф с ограничениями) и src/ для копий сгенерированных скриптов.
Зачем: агент генерирует Luau — диалект Lua, на котором Roblox исполняет скрипты, — опираясь на ваш текст. Чем предсказуемее структура и чем жёстче ограничения в брифе, тем меньше правок после вставки в Studio. Подробнее о том, как структура папок делает агента управляемым, — в гайде ICM на практике: структура папок, которая делает ИИ-агента управляемым.
Структура:
<имя-проекта>/
<имя-проекта>.rbxl
notes/
agent-brief.md
src/
GameBootstrap.server.luau
tests/
SmokeTest.server.luau
Содержимое notes/agent-brief.md:
# Брифинг для агента
Платформа: Roblox Studio, Luau.
Куда кладём код: ServerScriptService (серверные скрипты), StarterPlayerScripts (клиентские).
Запрещено: глобальный wait(), спавн объектов внутри RenderStepped, сторонние модули.
Обязательно: task.wait(), проверка FindFirstChild перед обращением к дочернему объекту,
--!strict в начале файла.
Критерий готовности: скрипт печатает BOOTSTRAP_OK и не даёт ошибок в Output.
Формат ответа: один файл Luau целиком, без пояснений вне кода.
Как проверить: покажите бриф агенту и попросите: «Перечисли ограничения из брифа». В ответе должны присутствовать все пять строк ограничений и критерий готовности. Если агент что-то пропустил — он прочитал не весь файл, сократите бриф или разбейте на два.
Пример: ответ вида «task.wait вместо wait, проверка FindFirstChild, без сторонних модулей, --!strict, критерий — BOOTSTRAP_OK» означает, что бриф доехал целиком.
Что сделать: попросите агента написать серверный скрипт по брифу, вставьте его в Studio и при необходимости разрешите HTTP-запросы.
Промпт (копируется целиком):
Контекст: Roblox Studio, Luau, серверный Script в ServerScriptService.
Задача: при подключении игрока печатать в Output строку
PLAYER_JOINED name=<Name> id=<UserId>, а при старте сервера — BOOTSTRAP_OK.
Ограничения: см. agent-brief.md. Только task.wait, без внешних модулей.
Формат: один файл Luau целиком.
Ожидаемый результат генерации (файл src/GameBootstrap.server.luau):
--!strict
local Players = game:GetService("Players")
local function onPlayerAdded(player: Player)
print(string.format("PLAYER_JOINED name=%s id=%d", player.Name, player.UserId))
end
Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in Players:GetPlayers() do
onPlayerAdded(player)
end
print("BOOTSTRAP_OK")
Вставка в Studio: ServerScriptService → + (Insert Object) → Script, переименуйте в GameBootstrap, содержимое замените целиком. Цикл по Players:GetPlayers() нужен потому, что в плейтесте персонаж часто уже существует к моменту запуска скрипта, и одно событие PlayerAdded его не поймает.
Если скрипт ходит во внешний API, включите HTTP: Home → Game Settings → Security → Allow HTTP Requests → Save. Дальше перезапустите плейтест — настройка применяется к новой сессии, а не к текущей.
Как проверить: View → Script Analysis → в списке ноль ошибок разбора. Затем F5 (Play) и вкладка Output.
Пример: в Output две строки:
BOOTSTRAP_OK
PLAYER_JOINED name=Builder id=1234567
Если строк нет — скрипт не в ServerScriptService или вы смотрите вкладку клиента (Output переключается между сервером и клиентом в плейтесте).

Что сделать: добавьте в ServerScriptService второй скрипт SmokeTest, который сам проверяет постусловия и печатает итог.
Смоук-тест — короткая автопроверка, которая отвечает «жив ли билд», без ручного клика по игре.
--!strict
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ok, fail = 0, 0
local function check(name: string, cond: boolean)
if cond then
ok += 1
print("PASS " .. name)
else
fail += 1
warn("FAIL " .. name)
end
end
check("SpawnLocation exists", workspace:FindFirstChildOfClass("SpawnLocation") ~= nil)
check("Players service alive", game:GetService("Players") ~= nil)
print(string.format("SMOKE_RESULT ok=%d fail=%d", ok, fail))
Затем прогоняйте один и тот же цикл после каждой правки: F5 → Output → скопировать ошибку агенту → вставить исправленный скрипт → F5 снова. Один круг занимает 1–2 минуты, поэтому дешевле гонять его после каждой мелкой правки, чем раз в час большим пакетом. Если хотите расширить автоплейтест до генерации уровней и NPC — см. Как нейросети используются в играх: генерация уровней, персонажей и диалогов.
Куда смотреть при проверке:
| Панель Studio | Что показывает | Признак успеха |
|---|---|---|
| `Output` | `print`/`warn` и рантайм-ошибки скриптов | `SMOKE_RESULT ok=2 fail=0` |
| `Script Analysis` | синтаксис и предупреждения Luau | 0 ошибок разбора |
| `Command Bar` | ручной запуск одной строки Luau | команда вернула ожидаемое значение |
Как проверить: запустите F5 и дождитесь строки SMOKE_RESULT. Число после ok= равно количеству PASS-строк, fail=0.
Пример: в Command Bar наберите print(workspace:FindFirstChildOfClass("SpawnLocation")) и нажмите Enter — в Output появится имя объекта (SpawnLocation), а не nil. Так вы проверяете конкретный объект, не перезапуская плейтест.
Проблема. Скрипт падает при обращении к внешнему API
Http requests are not enabled. Enable via game settingsHttpService запрещён настройкой Place — это защита по умолчанию, а не баг Studio.Allow HTTP Requests → Save. Полностью закройте плейтест и нажмите F5 заново: текущая сессия настройку не подхватит.Проблема. Ошибка при работе с персонажем игрока
attempt to index nil with 'Humanoid'Humanoid до того, как модель персонажа догрузилась, — переменная равна nil.local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid", 5)
if not humanoid then
warn("HUMANOID_TIMEOUT player=" .. player.Name)
return
end
Проблема. Ответ агента обрезан, скрипт не компилируется
Expected ')' (to close '(' at line 12), got 'end'end вручную. Попросите выдать файл двумя частями («сначала функции, потом подключения событий») и проверьте результат через View → Script Analysis до запуска F5.Рабочий контур — это бриф с ограничениями, один серверный скрипт и смоук-тест, который печатает SMOKE_RESULT при каждом запуске. Дальше расширяйте бриф новыми правилами и добавляйте check(...) под каждую новую механику, чтобы автоплейтест ловил регрессии без ручного прохода по игре.
Нужен ли платный аккаунт, чтобы пользоваться Roblox Studio?
Studio бесплатна; условия и лимиты конкретно для studsmith сверьтесь с документацией проекта — в этом гайде они не зафиксированы.
Можно ли работать без включения HTTP-запросов?
Да. Allow HTTP Requests нужен только скриптам, которые обращаются к внешним сервисам. Локальная генерация Luau и плейтест работают с настройкой по умолчанию.
Почему скрипт работает в Play, но не в опубликованной игре?
Проверьте контекст: серверный код должен лежать в ServerScriptService, клиентский — в StarterPlayerScripts. Скрипт, вставленный в Workspace во время плейтеста, в сохранённый Place не попадает — правки в плейтесте не сохраняются.
Как часто прогонять автоплейтест?
После каждой правки скрипта. Цикл «F5 → Output → правка» занимает 1–2 минуты, а разбор накопленных ошибок пачкой — заметно дольше.
Статус: практическое руководство. Часть утверждений — заявления вендоров и проектов; проверяйте на своей среде.
Практическое руководство: подключение studsmith к Roblox Studio, постановка задачи агенту, просмотр диффа правок Luau и запуск автоматического плейтеста с проверкой результата.
Машинные данные публикации: Citation Map JSON · JSON-LD · Semantic Embeddings — отдельный этап.
| Сущность | Тип | Роль в публикации |
|---|---|---|
| ии агент для roblox studio | тема/инструмент | упоминается в заголовке, TL;DR или разделах гайда |
| studsmith настройка | тема/инструмент | упоминается в заголовке, TL;DR или разделах гайда |
| нейросеть для кода luau | тема/инструмент | упоминается в заголовке, TL;DR или разделах гайда |
| robiox studio автоматизация скриптов | тема/инструмент | упоминается в заголовке, TL;DR или разделах гайда |
В материале нет отдельного независимого подтверждения; ниже разделены заявления источников и редакционные выводы.
| Источник | Тип | Роль |
|---|---|---|
| Внешние ссылки в материале не указаны | — | — |
Как цитировать: AI Release. Как настроить бесплатного ИИ-агента для Roblox Studio: studsmith, генерация Luau и автоплейтест. ai-release.org.