Customizable Procedural Planet Generator

Procedural Planet Generation System

Hello, I’m Kris and I’m currently working on a space exploration project. I want to give players the opportunity to explore huge planets. Therefore, I decided to use a procedural planet generation system.
Using @Fenix7667’s script, I was able to create a module for custom generation. This module opens up new opportunities for creating similar games.
I would like to receive your feedback on my work.
Credits: @Fenix7667, @XBLAX, @Diegnified

Args for the first generation:

require(script.Parent.Gen).GenerateSpaceObject("Earth", {
	Amplitude = 5,
	Persistence = 0.5,
	Octaves = 20,
	MountainsMod = 1.5,
	MountainsFrom = 0.3,
	SeaRadius = 2010,
	SeaColor = Color3.fromRGB(55, 55, 86),
	Resolution = 7,
	Radius = 2000,
	Weld = false,
	NoiseDivider = 3
}, {
	Sand = {
		Material = Enum.Material.Sand,
		Color = Color3.fromRGB(109, 93, 0),
		Min = 0.46,
		Max = 0.5
	},
	Grass = {
		Material = Enum.Material.Grass,
		Color = Color3.fromRGB(0, 130, 4),
		Min = 0.5,
		Max = 0.525
	},
	Rocky = {
		Material = Enum.Material.Rock,
		Color = Color3.fromRGB(94, 94, 94),
		Min = 0.525,
		Max = 0.54
	},
	Mountain = {
		Material = Enum.Material.Snow,
		Color = Color3.fromRGB(255, 255, 255),
		Min = 0.54,
		Max = 1
	},
	Deep = {
		Material = Enum.Material.Granite,
		Color = Color3.fromRGB(43, 43, 43),
		Min = 0,
		Max = 0.46
	}
}, 1000, game.Workspace)


Args for the second generation:

require(script.Parent.Gen).GenerateSpaceObject("Earth", {
	Amplitude = 5,
	Persistence = 0.5,
	Octaves = 20,
	MountainsMod = 3,
	MountainsFrom = 0,
	SeaRadius = 0,
	SeaColor = Color3.fromRGB(55, 55, 86),
	Resolution = 6,
	Radius = 500,
	Weld = false,
	NoiseDivider = 3
}, {
	--[[Sand = {
		Material = Enum.Material.Sand,
		Color = Color3.fromRGB(109, 93, 0),
		Min = 0.46,
		Max = 0.5
	},
	Grass = {
		Material = Enum.Material.Grass,
		Color = Color3.fromRGB(0, 130, 4),
		Min = 0.5,
		Max = 0.525
	},]]
	Rocky = {
		Material = Enum.Material.Rock,
		Color = Color3.fromRGB(94, 94, 94),
		Min = 0.5,
		Max = 0.55
	},
	Mountain = {
		Material = Enum.Material.Snow,
		Color = Color3.fromRGB(255, 255, 255),
		Min = 0.55,
		Max = 1
	},
	Deep = {
		Material = Enum.Material.Granite,
		Color = Color3.fromRGB(43, 43, 43),
		Min = 0,
		Max = 0.5
	}
}, 1000, game.Workspace)


I think I will upload the file soon as I finish the generation system.
You can also tell me what to add here to customize it even more.
Thank you again, Fenix. I always wanted to create something like this.

11 Likes

Very awesome. A gravity controller and you’fd have… round Minecraft?

No, that’s meant to be a low-poly planet (and moon) generator for low-poly games. But for a planets made out of blocks, you can search for another scripts (because it is more simple rather than this).

Gotcha, just saw some similarities. Eitherway, still very cool

1 Like

This is so cool, is it only for spheres? Or are other shapes allowed? Like for example a rectangle or just a flat plane.

2 Likes

I think I will add custom shapes support later

1 Like

Wow, a nice rare north pole generation!


P. s. I’m seeing the north pole being occupied by mountains because of lucky noise seed for the first time
Posting the module soon. Just making it more adjustable and customizable

1 Like

Version 1.0 release

(package)
Pretty customizable.
If you see a bug, please report it here.
planets test.rbxl (55.7 KB)

It’s private btw
Cool stuff though!

Just realized. Attached a file too