Simplified version of my current system:
math.randomseed(tick()*999); local RunService = game:GetService("RunService"); local noise = math.noise; local floor = math.floor; local mapSize = 500; local startVec = Vector3.new(-4*mapSize-4,0,-4*mapSize-4); local function createBlock(vec) local Block = Instance.new("Part"); Block.Color = Color3.fromRGB(58,125,21); Block.Material = Enum.Material.Grass; Block.Size = Vector3.new(4,4,4); Block.Position = startVec/2 + vec; Block.Anchored = true; Block.Parent = workspace; end; local function generateTerrain() local Seed = Random.new():NextInteger(100000,999999); for z = 1,mapSize do RunService.Heartbeat:Wait(); for x = 1,mapSize do local y = noise(x/40,z/40,Seed); createBlock(Vector3.new(4*x,4*floor(y*10),4*z)); end; end; end; generateTerrain();
Playing with the math I can get some pretty nice terrain, but at least 50% of the time there are cloned hills, etc.
Also, I've been attempting to generate biomes, but I don't really know how to go about doing it.
Any help or information would help a lot. Thanks!