Roblox Studio tutorial · Beginner

How to Make an Obby in Roblox Studio: From Plan to Publish

This guide shows how to make an obby in Roblox Studio from an empty Baseplate to a published game: planning stages, building fair jumps, checkpoints that save your stage, kill bricks and publishing.

  • Plan 10 stages with a real difficulty curve
  • Checkpoint script with a Stage leaderboard
  • Kill bricks, playtesting and publishing rules

Step by step

  1. Plan your stages on paper

    Choose a theme and list 10 stages from easy to hard, one new idea per stage. Mark where each checkpoint goes. This plan keeps the game fair and gives you a clear to-do list.

  2. Build and anchor the platforms

    Open the Baseplate template and build stage 1 with Parts. Turn on Anchored for every platform. Group each stage into a Model named Stage1, Stage2 and so on to keep the Explorer tidy.

  3. Create the Checkpoints folder

    Insert a Folder in Workspace named Checkpoints. Move the default SpawnLocation into it and rename it 1. Add one SpawnLocation at the start of each stage, named 2, 3, 4 and so on.

  4. Remove the spawn ForceField

    Select all checkpoints and set Duration to 0 in Properties. Otherwise players get a ForceField bubble for 10 seconds after respawning, which blocks lava damage and looks strange in an obby.

  5. Add the checkpoint script

    Insert a Script in ServerScriptService, name it Checkpoints and paste the code below. Press Play: a Stage column appears, and touching checkpoint 2 raises it to 2. Reset your character to check you respawn there.

  6. Add kill bricks and lava

    Place kill bricks or lava parts below and between platforms using the kill brick scripts. Make danger easy to recognise, and keep a checkpoint close to every hard jump.

  7. Playtest with a friend

    Play from stage 1 after every change, then watch a friend play without helping. Fix places where they get stuck for too long, fall because the camera hides the jump, or get bored.

  8. Publish your obby

    Click File, Publish to Roblox. The game starts private. To open it to players, set the Audience in Creator Hub. Roblox currently requires an age check and the content maturity questionnaire first, so do this with a parent.

The script

Script — put inside ServerScriptService (name it Checkpoints)
-- Script inside ServerScriptService
-- Checkpoints = SpawnLocations inside Workspace > Checkpoints, named 1, 2, 3...
local Players = game:GetService("Players")

local checkpoints = workspace:WaitForChild("Checkpoints")

Players.PlayerAdded:Connect(function(player: Player)
	-- Show each player's stage on the leaderboard
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local stage = Instance.new("IntValue")
	stage.Name = "Stage"
	stage.Value = 1
	stage.Parent = leaderstats

	-- New players always start at checkpoint 1
	local firstCheckpoint = checkpoints:FindFirstChild("1")
	if firstCheckpoint and firstCheckpoint:IsA("SpawnLocation") then
		player.RespawnLocation = firstCheckpoint
	end
end)

local function onCheckpointTouched(checkpoint: SpawnLocation, otherPart: BasePart)
	local character = otherPart:FindFirstAncestorOfClass("Model")
	local player = character and Players:GetPlayerFromCharacter(character)
	if not player then
		return
	end

	local stageNumber = tonumber(checkpoint.Name)
	local leaderstats = player:FindFirstChild("leaderstats")
	local stage = leaderstats and leaderstats:FindFirstChild("Stage")
	if not (stageNumber and stage and stage:IsA("IntValue")) then
		return
	end

	-- Only move forward: touching an older checkpoint does nothing
	if stageNumber > stage.Value then
		stage.Value = stageNumber
		player.RespawnLocation = checkpoint -- respawn here after falling
	end
end

-- Connect every checkpoint in the folder
for _, checkpoint in checkpoints:GetChildren() do
	if checkpoint:IsA("SpawnLocation") then
		checkpoint.Touched:Connect(function(otherPart)
			onCheckpointTouched(checkpoint, otherPart)
		end)
	end
end

Not working? Common mistakes

My stages fall apart when I press Play.

Some parts are not anchored. Select all parts of the stage and turn on Anchored.

Players respawn at the start even after reaching a checkpoint.

The checkpoint must be a SpawnLocation named with a number only (2, not Checkpoint 2) and placed inside Workspace > Checkpoints.

Two leaderstats folders appear or one stat is missing.

Only one script should create leaderstats. Put Stage and Coins in the same PlayerAdded function.

Players get a bubble and lava does not hurt them after respawning.

Set Duration to 0 on every checkpoint SpawnLocation to remove the spawn ForceField.

How to make an obby in Roblox Studio: plan before you build

An obby (obstacle course) is the classic first Roblox game, and for good reason: it teaches building, scripting and game design at the same time. The biggest mistake beginners make when learning how to make an obby in Roblox Studio is starting to place random parts. Spend ten minutes on paper first.

  1. Pick a theme: lava castle, candy land, space station. A theme decides your colours and obstacles.
  2. List 10 stages: for example simple jumps, thin beams, moving platforms, a lava floor, a wall climb with a truss, a final tower.
  3. Draw a difficulty curve: easy stages first, one new idea per stage, a short easy stage after every hard one.
  4. Mark checkpoints: one at the start of every stage.

This plan becomes your to-do list. It also makes the game feel designed rather than thrown together, and players notice the difference within the first minute.

Building roblox obby stages that feel fair

Start from the Baseplate template. Build each stage from Parts: blocks for platforms, wedges for ramps, a TrussPart for climbing. Two properties matter most:

  • Anchored must be on for every platform. Unanchored parts fall as soon as you press Play, and your stage collapses.
  • Material and Color tell players what a part does. Keep one rule for the whole game, for example red Neon always hurts and green is always a checkpoint.

For distances, remember the defaults: characters walk at 16 studs per second and jump 7.2 studs high. Test every gap yourself. If you need three tries, most players will need ten. If a jump needs a double jump, add our double jump script and make it clear with signs.

Group each stage into a Model named Stage1, Stage2 and so on. Your Explorer stays tidy and you can move or copy whole stages. For moving platforms, reuse the TweenService code from the door tutorial.

Roblox obby checkpoints and kill bricks

Checkpoints are what make an obby playable. In this tutorial every checkpoint is a SpawnLocation inside a Folder named Checkpoints, named with numbers: 1, 2, 3 and so on. The script does three things:

  • Gives each player a Stage value in leaderstats, so everyone sees how far others got.
  • Sets Player.RespawnLocation to checkpoint 1 when a player joins.
  • When a player touches a higher-numbered checkpoint, it raises their Stage and moves their RespawnLocation there. Touching an older checkpoint does nothing, so nobody loses progress by walking backwards.

Set each SpawnLocation's Duration to 0. Otherwise players get a ForceField bubble for 10 seconds after respawning, which looks odd in an obby and blocks lava damage.

Now add danger. Put classic kill bricks or lava parts between platforms using our kill brick tutorial. Want coins too? Follow the leaderboard tutorial, but create Coins in this same script so there is only one leaderstats folder.

Playtesting and publishing your obby

Play the whole obby from stage 1 every time you finish a new stage. Then ask a friend or family member to play while you watch without helping. Wherever they get stuck or bored, change something. Add a custom loading screen for a polished first impression.

To publish, click File, Publish to Roblox and give the game a name and description. New games are private by default, so only you and people with edit access can play.

To let others in, change the Audience in Creator Hub under Configure, Settings. Roblox's current rules (2026) say that to publish to a Public or Limited audience the account must be in good standing and at least 2 days old, complete an age check and fill in the content maturity questionnaire. Reaching players of all ages, including Roblox Kids and Select accounts, has extra requirements such as 2-step verification and an evaluation of the game. Parents should handle these steps together with their child.

Parent note: what an obby teaches

Learning how to make an obby in Roblox Studio is a complete mini project: planning, 3D building, scripting, testing with real users and publishing. Kids learn to break a big goal into small tasks, to test and fix, and to design for other people, not just themselves.

On the coding side, the checkpoint script uses events, tables of objects, number conversion (tonumber), conditions and leaderstats. Those are the same fundamentals taught in a first Python course, in a context kids care about.

Safety-wise, building in Studio needs no chat. Published games start private, and letting other players in requires the account steps described above. Talk with your child about who they share their game with, and use Roblox's parental controls on a linked parent account.

From obby to real game developer

Want your child to build full games like this? First 1-on-1 lesson free.

Now you know how to make an obby in Roblox Studio, the perfect first project. But it is only the start. In our Roblox Studio course, Vlad Pomazanets teaches students aged 8–17 one-on-one on Zoom, step by step: from their first obby to games with shops, saving, user interfaces and their own ideas. Students build their own games rather than copying tutorials.

Teens aged 14–17 can join the Roblox + AI program: 4 lessons a month of 120 minutes. In lesson 1 they build a complete shooter game in one session, then create 3D models, animations and VFX with AI tools, and keep and publish their game.

Regular lessons are 60 minutes, CA$280 for 4 lessons, and the first lesson is free. Unused lessons are refundable within 14 days. Lessons are in English, Ukrainian or Russian, online or in person in Hamilton, Ontario. Book the free Roblox class.

Questions parents ask

How long does it take to learn how to make an obby in Roblox Studio?

A simple 10-stage obby with checkpoints and kill bricks can be built in a weekend by a motivated beginner who follows a tutorial. A polished obby with a theme, moving parts, coins and a loading screen usually takes a few weeks of regular practice, especially when kids design their own stages.

Do I need to know scripting to make an obby?

You can build the stages without code, because platforms are just anchored parts. Scripts are needed for checkpoints that remember progress, kill bricks, coins and moving obstacles. Each of those scripts is short, which is why an obby is a great way to start learning Luau.

Why do players spawn at the wrong checkpoint?

Check that every checkpoint is a SpawnLocation inside a folder named Checkpoints, that they are named 1, 2, 3 with no spaces, and that the first one is exactly 1. Also move the Baseplate's default SpawnLocation into the folder and rename it 1, or delete it.

Can my child publish an obby for free?

Yes, publishing to Roblox itself is free and new games start private. Opening the game to other players requires an age check and the content maturity questionnaire. Reaching all ages has extra requirements, including either a Premium or Plus subscription for two months or a refundable publishing fee, so parents should review the current rules.

What is the best age to start building obbies?

Kids from about 8 can build an obby with some adult help, especially the building part. From around 10 to 12 most can also follow and adapt the scripts. Our lessons for ages 8–17 adjust the pace and the amount of coding to each student.

Want your child to build full games like this?

Book a free first 1-on-1 Roblox lesson with Vlad. 60 minutes on Zoom, ages 8–17, English, Ukrainian or Russian. We'll match a time in your time zone.

Book a free lesson

Book a free lesson

Money-back guarantee Not a fit? Unused lessons are refunded within 14 days.
CA$70 per 60-min private lesson ≈ US$50. Large US schools charge US$60–75 for 50–60 minutes.
One mentor, live, 1-on-1 English, Ukrainian or Russian. Vulnerable Sector Check. Parents welcome to watch.
★ What parents say

5 / 5 · 1 review

★★★★★

“We were looking for coding classes for kids in Hamilton and a friend recommended Exclusive-IT. My 11-year-old started the Roblox course one-on-one and built his first real game in a few weeks. The mentor is patient, the lessons are in plain English, and my son actually looks forward to them. Highly recommend for any parent who wants their child to learn to code.”

Parent · Hamilton · Roblox