How to Make a Roblox Obby: Complete Tutorial
Obbies are the most popular genre on Roblox. They're also the best first project — simple mechanics, clear progression, and you learn core Studio skills building one.
This builds a complete obby: lobby, 10 stages, checkpoints, kill bricks, and a win area.
The lobby
Open Studio with the Baseplate template. Delete the baseplate.
Create the lobby:
- Insert a Part. Size: 30, 1, 30. Position: 0, 0, 0. Anchor it.
- Rename to "Lobby" in Explorer.
- Add a SpawnLocation on top. Position: 0, 1, 0.
Players spawn here.
The stages
Each stage is platforms with obstacles between them.
Stage 1: Gaps. Five parts, each 4x1x4, spaced 6 studs apart. Players jump between them.
Stage 2: Moving platforms. Add this script to a part:
local TweenService = game:GetService("TweenService")
local part = script.Parent
local info = TweenInfo.new(2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true)
local goal = {Position = part.Position + Vector3.new(10, 0, 0)}
TweenService:Create(part, info, goal):Play()
The platform slides back and forth. Players time their jumps.
Stage 3: Kill bricks. Red parts that reset the player:
script.Parent.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)
Mix these building blocks — thin paths, rotating platforms, lava floors, wall jumps — with increasing difficulty across 10 stages.
Checkpoints
Without checkpoints, death sends players back to the lobby. That gets old fast.
Create a folder called "Checkpoints" in Workspace. Add SpawnLocations at the start of every 2-3 stages. Name them "Checkpoint1", "Checkpoint2", etc.
Add this to ServerScriptService:
local Players = game:GetService("Players")
local checkpoints = workspace.Checkpoints
Players.PlayerAdded:Connect(function(player)
local stage = Instance.new("IntValue")
stage.Name = "Stage"
stage.Value = 0
stage.Parent = player
player.CharacterAdded:Connect(function(character)
wait(0.1)
if stage.Value > 0 then
local cp = checkpoints:FindFirstChild("Checkpoint" .. stage.Value)
if cp then
character:SetPrimaryPartCFrame(cp.CFrame + Vector3.new(0, 3, 0))
end
end
end)
end)
for _, checkpoint in ipairs(checkpoints:GetChildren()) do
local num = tonumber(checkpoint.Name:match("%d+"))
if num then
checkpoint.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and player.Stage.Value < num then
player.Stage.Value = num
end
end)
end
end
The win area
A green platform at the end of stage 10:
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
local gui = Instance.new("ScreenGui")
gui.Parent = player.PlayerGui
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, 0, 1, 0)
label.BackgroundTransparency = 0.3
label.BackgroundColor3 = Color3.new(0, 0, 0)
label.Text = "You Win!"
label.TextColor3 = Color3.new(1, 1, 1)
label.TextScaled = true
label.Font = Enum.Font.GothamBold
label.Parent = gui
wait(3)
gui:Destroy()
end)
Polish
- Background music: Sound object in Workspace, set Looped and Playing to true
- Color-code difficulty: green (easy), yellow (medium), red (hard)
- Stage counter UI: ScreenGui with a TextLabel showing current stage
The 5-minute version
Everything above takes 1-2 hours by hand. With Rebirth, three prompts:
- "Create a lobby with a spawn point and a start button"
- "Build 10 obby stages with increasing difficulty — gaps, moving platforms, and kill bricks"
- "Add checkpoints every 3 stages and a win screen at the end"
The AI generates every script and places every part. You test and refine.
Building by hand teaches mechanics. Using Rebirth gets you to a playable game in minutes. The best approach: understand the fundamentals, then let AI handle the volume.
Ready to build?
5 free credits. No card required. Start building in Roblox Studio with AI.
Try Rebirth free