{}const=>[]async()letfn</>var
LuaПрактикаОсновы

Как создать первую игру в Roblox Studio: от Baseplate до тестового запуска

Соберём первый игровой прототип: карту из Parts, собираемую монету, счёт Coins через leaderstats и правильный Play Test.

К

Кодик

Автор

6 мин чтения

Первую игру в Roblox Studio лучше начать не с огромной карты, а с одного законченного цикла: игрок появляется, находит монету, касается её и получает очко. Ниже превратим Baseplate в работающий прототип: соберём маленькую сцену, добавим счёт Coins, напишем механику сбора и проверим её в Play Test.

У игры должен быть наблюдаемый результат. Красивый Baseplate без действия остаётся сценой, а одна монета со счётчиком уже создаёт правило, цель и обратную связь. Этот маленький проект даёт правильную основу: объекты лежат в Workspace, серверная логика в ServerScriptService, ошибки видны в Output.

1Строим сцену

Оставляем SpawnLocation и добавляем платформы с монетами.

2Создаём правило

Touched определяет игрока и увеличивает его Coins.

3Тестируем цикл

Play создаёт персонажа, а Output показывает ошибки скриптов.

Что находится внутри Baseplate-проекта

Откройте Roblox Studio, выберите шаблон Baseplate и включите панели Explorer, Properties и Output на вкладке View. Explorer показывает дерево объектов, Properties меняет выбранный объект, Output собирает сообщения и ошибки во время запуска.

Место в ExplorerЧто там хранитьЧто будет в проекте
WorkspaceВидимые и физические объекты мираBaseplate, SpawnLocation, Platforms, Coins
ServerScriptServiceСерверные скрипты, которых нет в сценеPlayerStats
StarterGuiИнтерфейс, копируемый игрокуПока не нужен: счёт покажет leaderstats
OutputНе объект, а панель диагностикиprint, warn и красные ошибки
Правило структуры

Если объект можно увидеть или коснуться в мире, ищите его в Workspace. Если это общая серверная логика, начинайте с ServerScriptService.

Структура первого проекта Roblox Studio с Workspace, Coins и ServerScriptService
Понятные имена в Explorer сокращают половину ошибок с поиском объектов.

🔥 100 000+ учеников уже с нами

Устал читать теорию?
Пора кодить!

Кодик — приложение, где ты учишься программировать через практику. AI-наставник, интерактивные уроки, реальные проекты.

🤖 AI 24/7
🎓 Сертификаты
💰 Бесплатно
🚀 Начать учиться
Присоединились сегодня

Собираем маленькую карту и монету

Сцена за несколько объектов
  1. В Workspace создайте Folder с именем Platforms. Добавьте в него 3-4 Part, растяните их инструментом Scale и поставьте Anchored = true.
  2. Оставьте SpawnLocation на Baseplate. Убедитесь, что точка появления не находится внутри другой детали.
  3. Создайте Folder Coins. Внутри добавьте Part с именем Coin, задайте Shape = Ball, Material = Neon, жёлтый цвет, Anchored = true и CanCollide = false.
  4. Поднимите Coin примерно на 3 studs над платформой. Продублируйте её ещё два раза после того, как первая механика заработает.
  • Anchored = true не даёт платформам и монете упасть под действием физики.
  • CanCollide = false разрешает персонажу пройти сквозь монету без толчка.
  • Свойство CanTouch оставьте включённым, иначе событие касания не сработает.
  • Не берите случайную модель из Toolbox для первого теста: лишние скрипты усложняют диагностику.
Проверка сцены. Нажмите Play: персонаж появляется на SpawnLocation, может пройти по платформам, детали не падают, а монета остаётся над поверхностью.

Добавляем счёт Coins через leaderstats

Roblox автоматически показывает таблицу значений, если внутри Player есть Folder с точным именем leaderstats. Создадим этот Folder при входе каждого игрока. В ServerScriptService добавьте обычный Script, назовите его PlayerStats и вставьте код.

local Players = game:GetService("Players")

local function setupPlayer(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player

    local coins = Instance.new("IntValue")
    coins.Name = "Coins"
    coins.Value = 0
    coins.Parent = leaderstats
end

Players.PlayerAdded:Connect(setupPlayer)
Что должно появиться

После нового Play Test справа в списке игроков появится колонка Coins со значением 0. Если её нет, откройте Output и проверьте имя leaderstats: оно чувствительно к регистру и должно быть написано именно так.

Если таблицы, функции и события пока выглядят незнакомо, разберите их на коротких задачах в курсе Lua. Для первого игрового проекта важнее понимать каждую строку, чем быстро вставить большой чужой скрипт.

Игровой цикл первой Roblox-игры от появления игрока до получения Coins
Счёт превращает касание объекта в понятный игроку результат.

Пишем механику сбора монеты и запускаем тест

Внутрь первой детали Coin добавьте обычный Script с именем Collect. Событие Touched может сработать несколько раз от разных частей персонажа, поэтому переменная enabled закрывает монету сразу после первого успешного касания.

local Players = game:GetService("Players")

local coin = script.Parent
local enabled = true
local RESPAWN_TIME = 5

local function onTouched(otherPart)
    if not enabled then
        return
    end

    local character = otherPart:FindFirstAncestorOfClass("Model")
    local player = character and Players:GetPlayerFromCharacter(character)
    if not player then
        return
    end

    local leaderstats = player:FindFirstChild("leaderstats")
    local coins = leaderstats and leaderstats:FindFirstChild("Coins")
    if not coins then
        return
    end

    enabled = false
    coins.Value += 1
    coin.Transparency = 1
    coin.CanTouch = false

    task.wait(RESPAWN_TIME)

    coin.Transparency = 0
    coin.CanTouch = true
    enabled = true
end

coin.Touched:Connect(onTouched)
Готовый игровой цикл
  • Игрок касается Coin, и значение Coins увеличивается ровно на 1.
  • Монета становится невидимой и перестаёт принимать касания.
  • Через 5 секунд она появляется снова и может быть собрана повторно.
  • NPC и случайные физические детали не получают счёт, потому что код проверяет Player.

Схема обработки касания монеты в Roblox Studio
Проверки идут до изменения Coins, поэтому случайное касание не ломает счёт.

Тестируйте как игрок и как разработчик
  1. Нажмите F5 или Test, добегите до монеты и следите за значением Coins.
  2. Коснитесь монеты одним персонажем несколько секунд: за один цикл должно добавиться только одно очко.
  3. Подождите пять секунд и соберите её снова. Затем откройте Output и убедитесь, что красных строк нет.
  4. Остановите тест через Shift+F5. Изменения, сделанные внутри запущенной симуляции, после остановки сбрасываются.

Частые ошибки и безопасный следующий шаг

Монета падает или улетает

У детали выключен Anchored. Выйдите из теста, выберите Coin и включите свойство в Properties.

Touched не срабатывает

Проверьте, что Script включён, лежит внутри Coin, у детали CanTouch = true, а тест запущен через Play, не просто Run без персонажа.

Coins увеличивается много раз

Блокировка ставится слишком поздно или отсутствует. Присвойте enabled = false до ожидания и изменения физических свойств.

Счёт пропадает после выхода

Это ожидаемо: leaderstats показывает текущее значение, но не сохраняет его. Постоянный прогресс требует отдельного DataStore и серверных проверок.

Первая версия готова. У проекта есть точка появления, короткий маршрут, минимум три монеты, видимый счёт, повторное появление объектов и чистый Output. Сохраните локальную копию, затем используйте File, Publish to Roblox и оставьте experience приватным, пока тестируете.
Короткие ответы
Как создать первую игру в Roblox Studio?

Откройте Baseplate, соберите маленькую сцену из Anchored-деталей, добавьте одно понятное правило в серверном Script и проверьте полный игровой цикл через Play Test.

Чем Play отличается от Run?

Play запускает симуляцию и создаёт персонажа игрока. Run запускает мир без персонажа, поэтому механику касания игроком так полноценно не проверить.

Куда вставлять обычный Script?

Скрипт конкретной монеты можно положить внутрь Coin. Общую серверную логику создания статистики поместите в ServerScriptService.

Почему деталь должна быть Anchored?

Без Anchored на неё действует физика: платформа или монета может упасть. Для неподвижных частей первой карты свойство обычно включают.

Сохраняются ли Coins после выхода?

Нет. IntValue внутри leaderstats живёт только в текущем сервере. Для сохранения между сессиями понадобится DataStore.

Как развить первый прототип

Сначала разберите первый скрипт с реакцией на игрока, затем изучите leaderstats с монетами и победами. Если Output показывает красную строку, используйте разбор ошибок Roblox Studio.

После трёх работающих монет добавьте звук, таймер или магазин, но меняйте только одну механику за раз. Полный маршрут развития проекта собран в дорожной карте Lua-разработчика Roblox.

🎯Хватит откладывать

Понравилась статья?
Пора применять на практике!

В Кодик ты не просто читаешь — ты сразу пишешь код. Теория + практика = реальный скилл.

Мгновенная практика
🧠AI объяснит код
🏆Сертификат

Без регистрации • Без карты