Tutorial · 9 min read · Updated October 2026
How to make a Roblox obby with AI, step by step
An obby is the best first game to build with an AI agent: the rules are simple, the bugs are visible, and a playtest tells you immediately whether it works. This is the message sequence that produces a complete, publishable obby inside your own Roblox Studio place. The prompts are written for ForgeBlox; the design rules at the end apply to any obby.
Before you start
- Roblox Studio open on a new Baseplate. Save it once so it has a name.
- Studio ▸ Assistant ▸ ⋯ ▸ Manage MCP Servers ▸ Enable Studio as MCP server.
- ForgeBlox Bridge running and paired (the sidebar shows your place name in green). Download it here.
- Model: Sonnet 5.5. The whole sequence usually runs 1,500 to 4,000 credits ($15–40); see pricing.
Message 1: stages and checkpoints
Build an obby in Workspace/Stages with 10 stages laid out in a line, each a
Model with a Stage attribute and a Checkpoint SpawnLocation (Neutral false).
Stage 1 is the spawn. When a player touches a checkpoint with a higher stage
than their leaderstats Stage, update the stat and set their RespawnLocation.
Keep stages 1-5 easy: jumps under 7 studs, platforms at least 4x4. Playtest,
walk to stage 3, die, confirm respawn at stage 3, screenshot, stop the test.
What to check: the leaderboard shows Stage going up, and after dying you respawn at the last checkpoint rather than the start. If the checkpoints are plain Parts instead of SpawnLocations, the agent should teleport you on CharacterAdded; either is fine as long as the playtest proves it.
Message 2: hazards
Add hazards tagged with CollectionService and handled by one server script each:
KillPart (touch sets Humanoid health to 0), MovingPlatform (anchored, moved with
TweenService on CFrame, never physics), FadingPlatform (on touch tween
Transparency then CanCollide false, restore after 3 seconds, debounced), and
JumpPad (briefly raises JumpPower, debounced). Place at least one of each between
stages 4 and 10. Playtest each hazard, screenshot, stop.
The important words are anchored and TweenService. Platforms pushed by physics drift, stutter and fling players. Tagging with CollectionService means one script handles every kill brick, so adding a hundred more later costs nothing.
Message 3: saving
Save each player's highest Stage with DataStoreService, session-locked, autosave
every 60 seconds and on leave. On join, restore the stat and teleport them to
that checkpoint. Test: reach stage 4, stop the playtest, start again, confirm
you spawn at stage 4.
Message 4: the skip-stage product
Add a Skip Stage developer product. The client prompts the purchase from a HUD
button; MarketplaceService.ProcessReceipt on the server (the only one in the
game, in ServerScriptService/Monetization) grants exactly one stage forward,
idempotently, saving before returning PurchaseGranted. Use a placeholder
product id constant I can replace. Test with a Studio test purchase, screenshot.
Skip-stage is the standard obby monetization and it is cheap to get wrong. Only one script in the whole game may set ProcessReceipt, and the grant must be saved before the function returns, or Roblox will retry and double-grant. You still create the product on the Roblox website and paste its id; the agent cannot do that part.
Message 5: timer, reset, HUD
Add a speedrun timer that starts on first stage-1 touch and records the best
time per player. Add a Reset button that fires a remote to kill the character.
Make the HUD (stage, timer, Skip Stage, Reset) scale-based, safe-area aware, and
check it in the device emulator iPhone preset. Screenshot.
Message 6: polish and the security pass
Give each pair of stages a colour theme, add Lighting.Atmosphere and a skybox,
and a soft looping soundtrack from the Creator Store (no scripts inside the
asset). Then review every RemoteEvent handler on the server: validate arguments,
rate-limit per player, and never trust a client-sent stage number. Summarise.
Design rules that keep an obby fun
- Default WalkSpeed 16 and JumpPower 50 clear about 7 studs horizontally. Gaps of 8+ need a jump pad or a higher JumpPower.
- Stages 1–5 should be nearly impossible to fail. Players quit obbies at stage 2, not stage 40.
- Lay stages out in a line or a spiral so the next checkpoint is always visible.
- Never let the client tell the server what stage it reached. The server sees the touch; the client only displays it.
What it costs
On Sonnet 5.5 this sequence runs about 1,500 to 4,000 credits ($15–40). The $25 pack covers a lean run. Every message shows its price before you send it, and ForgeBlox pauses at a safe point if you hit a cap.
Publishing checklist
- Create the Skip Stage developer product on the Roblox website and paste its id into the constant.
- Playtest with two clients (Test ▸ Clients and Servers) and confirm checkpoints are per player.
- Set the genre to Obby, put "obby" and your theme in the first sentence of the description, make an icon readable at 150×150.
- Publish private first, play it on your phone, then publish public.
Next: build a tycoon, build a clicker simulator, or wire game passes and developer products correctly.