Skip to main content

Stage 9: Kinetic KillWall + ledges

Course progressStage 9 of 10
~35 min
Before you start

Make sure the spinner is beatable and Stage 9 respawn works.

Build

a hallway with a sliding wall and ledges

Learn

how an alternate route can make a hard obstacle feel clever

Ship

a moving-wall hallway with more than one way through

The big idea

Players like feeling smart. A sliding wall creates pressure. Ledges create a clever path around it.

New words
alternate route
a second way through a challenge
sliding wall
a wall that moves back and forth
ledge
a small platform sticking out from a wall

Build it

Step 1 — Build the hallway

Build this part

HallFloor

Block
Open recipe
Size
16 × 1 × 40
Color
Dark stone grey
Material
Concrete
Anchored
✓ Yes
Build this part

HallWall_Left

Block
Open recipe
Size
1 × 10 × 40
Color
Medium stone grey
Material
Concrete
Anchored
✓ Yes
Build this part

HallWall_Right

Block
Open recipe
Size
1 × 10 × 40
Color
Medium stone grey
Material
Concrete
Anchored
✓ Yes

Step 2 — Add the sliding wall

Build this part

SlidingWall

Block
Open recipe
Size
10 × 10 × 2
Color
Really red
Material
Neon
Anchored
✓ Yes
Place
Across the hallway
Target
WallTrackStart and WallTrackEnd
Build this part

WallTrackStart

Block
Open recipe
Size
1 × 1 × 1
Color
Bright yellow
Material
Smooth Plastic
Anchored
✓ Yes
Place
On one side of the hallway where the wall should start
Build this part

WallTrackEnd

Block
Open recipe
Size
1 × 1 × 1
Color
Bright yellow
Material
Smooth Plastic
Anchored
✓ Yes
Place
On the other side of the hallway where the wall should slide

Make WallTrackStart and WallTrackEnd transparent if you want them hidden.

Insert this Script inside SlidingWall:

local RunService = game:GetService("RunService")

local wall = script.Parent
local startMarker = workspace:WaitForChild("WallTrackStart")
local endMarker = workspace:WaitForChild("WallTrackEnd")
local SLIDE_SPEED = 0.5
local t = 0

wall.Anchored = true

RunService.Heartbeat:Connect(function(dt)
t = t + dt * SLIDE_SPEED
local alpha = (math.sin(t * math.pi * 2) + 1) / 2
wall.Position = startMarker.Position:Lerp(endMarker.Position, alpha)
end)

wall.Touched:Connect(function(hit)
local humanoid = hit.Parent and hit.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)

Step 3 — Add ledges

Add two small ledge parts:

  • Ledge_1 on HallWall_Left before the sliding wall
  • Ledge_2 on HallWall_Right after the sliding wall

Make them wide enough to stand on. They are the clever route.

Step 4 — Add the Stage 10 checkpoint

Place the Stage 10 SpawnLocation after the hallway. Add StageNumber = 10 and the matching Team. Give this checkpoint the same settings as Stage 1 (check AllowTeamChangeOnTouch, uncheck Neutral, match the pad's TeamColor to its Team), and uncheck AutoAssignable on the new Team so players always start at Stage 1.

Understand it

The wall is pressure. The ledges are a plan. This is the same Heartbeat trick from Stage 8, but sliding instead of spinning: every frame the script reads WallTrackStart and WallTrackEnd and uses Lerp to place the wall somewhere between them, so the slide direction comes from the two markers. A Touched connection resets any player the wall slides into. Keeping the wall anchored means it cannot tip or drift, so the slide stays clean. This is a server-side world obstacle, so it does not need a client listener.

Try this

Learning beat

Try this

Three short experiments. Predict before you run, then test your guess.

Predict first

If the ledges are too small, how will players feel?

Compare

Test the hallway with and without ledges. Which version is more fun?

Connect

Where else could you add a secret or clever alternate route?

Test your stage

  • The hallway is clear.
  • The sliding wall blocks the obvious route.
  • Touching the wall resets the player.
  • The ledges create a fair alternate route.
  • Stage 10 checkpoint works.

If it breaks

  • The ledges are too hard. Make them larger.
  • The wall blocks everything. Move it so there is always a fair path.
  • The wall does not slide. Check that WallTrackStart and WallTrackEnd are placed where you want and that the Script is inside SlidingWall.
  • The wall passes through me without resetting me. Confirm the Touched kill block is inside the SlidingWall Script.
  • The wall slides too fast or too slow. Tune SLIDE_SPEED — smaller is slower.
  • The stage feels confusing. Add colored arrows or lights.
Coach notes

This is the same Heartbeat pattern from Stage 8, so most groups can type it after the spinner. If it is still too much for a younger group, build the wall as a coach-led demo and keep student focus on route design. The win is seeing that a moving wall can still have a fair answer.