New: BloxMaps v4 is out: our biggest upgrade yet. Full Roblox games from one prompt, new Build A ___ Empire games, music in every game
Guide

How to make a horror game in Roblox

A Roblox horror game lives or dies on atmosphere: darkness, sound, and a threat you can't quite see. This guide covers the parts that make one work, with Studio settings and scripts: lighting, sound, a monster that hunts, objectives, a lobby for friends, and pacing.

Updated ยท by the BloxMaps team

1. One fear, one goal

Strong horror games are simple to explain. Pick one thing to be afraid of (a creature that hunts by sound, a hotel where the rooms keep changing, a night shift where something is wrong on the cameras) and one goal (find three keys and escape, reach the last door, survive until 6 AM). Everything else serves those two.

Popular Roblox horror formats include co-op escapes (a group explores a level while a monster hunts them), room-by-room runs (like Doors), "spot the anomaly" night shifts, and survival nights round a campfire (like 99 Nights in the Forest).

2. Lighting: make the dark actually dark

Select Lighting in the Explorer and try these as a starting point, then adjust by eye in Play mode:

SettingTryWhy
ClockTime0 (midnight)Night sky, no sun
Brightness0 to 1Less light everywhere
Ambient / OutdoorAmbientVery dark greys or bluesShadows stay black instead of grey
Atmosphere (insert one)Higher Density, a dark ColorFog that hides what's ahead
BloomEffectRemove it, or Intensity 0Bloom makes dark scenes look hazy and washed out
ColorCorrectionEffectSlightly lower SaturationA colder, uneasy look

Then light the scene on purpose: a few PointLights in lamps, a flashlight for the player (a SpotLight in a Tool), red emergency lights in one corridor. Light tells players where to go; darkness tells them where not to. Test on a phone screen too: what looks moody on a big monitor can be pitch black on a phone.

3. Sound does half the work

  • Ambience: a quiet looping background (wind, a hum, distant creaks) in SoundService or a part.
  • The monster's sound: footsteps or breathing in a Sound inside the monster, with a short RollOffMaxDistance so it gets louder as it gets closer. Hearing it before seeing it is the scariest part.
  • Stings: a few sharp sounds for real scares. Use them rarely.

Use sounds from Roblox's Creator Store that you're allowed to use, or upload your own. Sounds other people uploaded privately won't play in your game.

4. A monster that hunts

Put a rigged model with a Humanoid and a HumanoidRootPart in Workspace (the Avatar tab's Rig Builder makes a quick one), and add a Script inside it. It finds the nearest player and walks a path to them with PathfindingService:

local PathfindingService = game:GetService("PathfindingService")
local Players = game:GetService("Players")

local monster = script.Parent
local humanoid = monster:WaitForChild("Humanoid")
local root = monster:WaitForChild("HumanoidRootPart")
local SENSE_RANGE = 80

local function nearestPlayer()
	local best, bestDistance = nil, SENSE_RANGE
	for _, player in Players:GetPlayers() do
		local character = player.Character
		local target = character and character:FindFirstChild("HumanoidRootPart")
		if target then
			local distance = (target.Position - root.Position).Magnitude
			if distance < bestDistance then
				best, bestDistance = target, distance
			end
		end
	end
	return best
end

while true do
	local target = nearestPlayer()
	if target then
		local path = PathfindingService:CreatePath({ AgentRadius = 2, AgentHeight = 6 })
		local ok = pcall(function()
			path:ComputeAsync(root.Position, target.Position)
		end)
		if ok and path.Status == Enum.PathStatus.Success then
			local waypoints = path:GetWaypoints()
			for i = 2, math.min(#waypoints, 5) do -- a few steps, then look again
				humanoid:MoveTo(waypoints[i].Position)
				humanoid.MoveToFinished:Wait()
			end
		end
	end
	task.wait(0.2)
end

To catch players, add a Touched handler on the monster that damages the player's Humanoid (or sends them to spectate). Ideas that make a monster feel smart:

  • Line of sight: only chase a player it can see (workspace:Raycast from its head to the player), and wander between patrol points otherwise.
  • Hearing: running makes noise; walking or crouching doesn't.
  • A tell: lights flicker or the music changes before it arrives, so players have a moment to hide. Fair scares feel better than random deaths.

Run monster logic on the server, and set the monster's parts' network owner to the server (root:SetNetworkOwner(nil)) so it moves smoothly for everyone.

5. Objectives and hiding

A goal gives players a reason to go into the dark. Classic objectives: keys that open the exit, fuses for a generator, pages of a diary, a code hidden in a room. Use a ProximityPrompt on each item ("Hold E to pick up"): it works on keyboard, controller and touch screens without extra UI.

Give players somewhere to hide (closets, under beds, lockers). Hiding turns running away into a choice, and choices are what make a horror game tense instead of just hard.

6. A lobby for friends

Co-op horror games usually start in a lobby: a safe place where friends group up, buy items and press start, then the group is sent to the scary part together. On Roblox that's often two places in one experience: the lobby is the start place, and the game is a second place the group teleports to with TeleportService:

local TeleportService = game:GetService("TeleportService")
local GAME_PLACE_ID = 0 -- the game place's ID (Creator Hub, under your experience's Places)

local function startRun(players)
	local options = Instance.new("TeleportOptions")
	options.ShouldReserveServer = true -- a private server just for this group
	TeleportService:TeleportAsync(GAME_PLACE_ID, players, options)
end

Teleports only work in a published game, not in Studio's Play mode. Keep the lobby bright and readable, with the shop and menus; keep the game place's screen almost empty, so nothing breaks the mood.

7. Pacing the scares

  • Start quiet. Let players explore for a minute before anything happens.
  • Tension, then release. A long build-up (sounds, flickers, a glimpse) is scarier than a jumpscare every ten seconds.
  • Escalate. The monster gets faster, the lights fewer, the rooms stranger as players get closer to the goal.
  • Short runs. 10 to 20 minutes per level keeps groups playing "one more".

8. Roblox's rules for horror

Horror is allowed on Roblox, within the Community Standards. When you make your game public you answer the maturity and compliance questionnaire, and your answers (about violence, blood, fear and more) set your game's content label and who can play it. Answer honestly; a label that's too low can get the game moderated.

Generate a horror game

The BloxMaps Game Maker builds several kinds of horror game from one sentence, each in Beta:

  • Co-op horror: a lobby where friends gather and ride into a level, a monster that hunts while you find keys and the exit, lives and spectating, chapters that unlock in order.
  • Room-by-room runs: numbered doors, hiding spots, a pre-run shop.
  • Anomaly night shifts and night guard games on security cameras.

The co-op horror and room-by-room formats come as two places, a lobby and the game, with the menus in the lobby and an almost empty screen during the run.

a co-op horror game in an abandoned hospital where a monster hunts you while you find the keys and escape

Try this prompt
A sample horror title screen made with the BloxMaps UI designer: a dark striped background, a big Play button and Elevator, Pre-run shop, Journal and Settings buttons
A sample horror lobby menu made with the BloxMaps UI designer.

Need a setting? Browse horror game ideas. Building and previewing is free; exporting the finished game costs $14.99 once.

Questions

What makes a Roblox horror game scary?

Darkness, sound and not knowing where the threat is. A monster you can hear before you see it is scarier than one that jumps out every ten seconds.

Are horror games allowed on Roblox?

Yes, within Roblox's rules. Your game's content questionnaire decides its maturity label, and gore and some themes are limited. Check Roblox's Community Standards before you publish.

Do I need a lobby?

Not for a solo game. For a co-op game a lobby lets friends group up before the scary part starts, and many horror games use one.

Do I still need Roblox Studio?

Yes, to publish. BloxMaps makes the game file in your browser; you open that file in Roblox Studio (free, for Windows and Mac) and publish it to Roblox from there.

Is BloxMaps free?

Making and previewing is free: 3 previews a day on the Free plan. You pay only to export. You only pay to export the finished Roblox Studio file (.rbxl): $14.99 once per game, or included with the Studio plan. See pricing.

Make a Roblox game from one sentence

Describe your idea. Get the map, UI, shop and gameplay in one Roblox Studio file. Free to build and preview.

Make a gameFree to try