Randomly Generated Map

What do you want to achieve? I wan’t to achieve being able to make a Randomly Generated Map like in scp-3008: 3008 [2.7] - Roblox ( Created by Uglyburger0 )

What is the issue? I have no idea how i would even start

What solutions have you tried so far? I have looked on Youtube, DevForums, Tried Myself and asked through Discord and Guilded.

If anyone has a solution please reply!


You should link the game you’re using as reference.


I have no scripting knowledge, but I think you should start by building nodes that will be used in random generation, usually a set number of studs in scale per tile. For example, SCP 3008 has bedroom nodes, shelf nodes, and food nodes. Start by making those and then implement random generation, if you haven’t already


the game you showed just looks like a simple grid of models

here is a demo project of how to generate a grid of models
Randomly Generated Map.rbxl (36.1 KB)

and this is the script inside the demo project

local random = Random.new()
-- how many models to generate (16x16 = 256 models)
local worldSize = 16
-- a list of all the models
local models = game.ServerStorage.Models:GetChildren()
-- the amount of space between models
local spacing = 80
-- a offset to where to spawn the models
local offset = Vector3.new(-worldSize * spacing / 2, 0, -worldSize * spacing / 2)

-- list of cframes rotated in 4 directions
local cFrames = {
	CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1),
	CFrame.new(0, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0),
	CFrame.new(0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1),
	CFrame.new(0, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0),

for x = 1, worldSize do
	for z = 1, worldSize do
		-- select a random model
		local mi = random:NextInteger(1, #models)
		local model = models[mi]
		-- select a random cframe
		local ci = random:NextInteger(1, #cFrames)
		local cFrame = cFrames[ci]
		-- clone the model and set the pivot to the cframe + x and z
		local clone = model:Clone()
		clone:PivotTo(cFrame + offset + Vector3.new(x * spacing, 0, z * spacing))
		clone.Parent = workspace

and this is the result i just made 2 quick models 1 with red parts and one with green parts


I have made the plots :smiley: But i appreciate your help!


Thank you! This is really helpfull!

1 Like

Exactly WHERE do I put the script?

Nvm. Figured out I didn’t put a child named Models.

How would I incorporate Chunk Loading into this?

How would you go about making the plots that are longer than normal? For example the shelf one

1 Like

Could it be? Yet another person working on a SCP-3008 game? :open_mouth:

If so, how far along are you with the other mechanics? :thinking:

1 Like

Oh i’m actually quite far! (Into map generation)
What i’m currently doing (Which probably isn’t the best method) is checking all the collisions and the least prioritised plot is deleted. Of course, I haven’t fully got it working yet, (There’s quite a lot of bugs) but here’s what it looks like so far!