i want to make random room generation. i have a basic idea of how it works, but i have no idea how i would go about arranging the pieces. i have it set up like so, and i would just like a couple of pointers.
-- workspace.room_test:PivotTo(workspace.Part.CFrame)
local collection_service = game:GetService("CollectionService")
local function generate_piece(piece_type)
local folder = script.pieces[piece_type]
local pieces = folder:GetChildren()
local selected_piece = pieces[math.random(1, #pieces)]
local clone = selected_piece:Clone()
local end_folder = clone:FindFirstChild("end_pieces")
local end_pieces = end_folder:GetChildren()
for _, end_piece in ipairs(end_pieces) do
-- how can i arrange them seamlessly
end
collection_service:AddTag(clone, tostring(piece_type))
end
local room_criteria = {
{room_type = "hall", count = 1},
{room_type = "labyrinth", count = math.random(0, 1)},
{room_type = "flesh & bones", count = 1},
{room_type = "puzzle", count = math.random(0, 1)},
{room_type = "exit", count = 1},
{room_type = "add-ons", count = 1}
}
-- generate room based on criteria
local function generate_room()
for _, criteria in ipairs(room_criteria) do
for i = 1, criteria.count do
generate_piece(criteria.room_type)
end
end
end
-- example function just to test room generation
while task.wait(10) do
generate_room()
task.delay(7, function()
workspace.generated_room:ClearAllChildren()
end)
end