Making a world like Minecraft

Hi, I want to make voxel based world like minecraft where we can interactive with each block/voxel.
“I want to create it according to my design.”
So could you please help me out by explaining in brief the procedure for creating such a world.
(I get to know about ‘procedural terrain generation’, but I suppose it generate world randomly each time we start the game(like different world seed in minecraft), and it can not create the world according to our designs.)

No offense, but based on your question, I’m going to assume you’re quite new to Unity. In this instance, I’d recommend NOT doing this and instead trying to learn more about the different ways to store info in stuff like arrays or lists, and how procedural stuff is actually generated on a much smaller scale before attempting this. Sure, you could find tutorials on how to do it, but you probably won’t learn much as you’d spend most of your time copy and pasting (which isn’t bad if you try to understand what you copied, but this stuff can get very confusing if you haven’t done similar things in the past.) so I’d recommend instead starting with a procedural infinite runner first, or something closely relating to what you’re trying to learn, before tackling this.

However, if you want to throw my advice to the wayside, these would be some of the major steps:

FLAT ARRAY METHOD (Much simpler, though potentially less performant on a large scale than alternatives due to the allocation of empty space)

  1. Start by making a 3D array of some kind, most likely a byte array for minimal RAM allocation, although you’d be limited to 255 block types (256 counting empty space) so you may want to use integers instead, although it would take about 8 times as much space in memory.

  2. Assigning blocks into the array, you could do this by making a random number generator with a range of where you want the terrain type to start and end, and then get a few rng #s to lerp (smooth transition) between values over the course of the terrain giving you a smoother sample.

  3. Render the chunk, this is the hardest part if you want performance, but to keep it simple, you could just give every block adjacent to an air block a cube mesh renderer, although this may become very bad for performance eventually.

  4. Give all the blocks with mesh renderers a box collider, and the player a simple movement script.

  5. Once you’ve gotten this far you’ll have the knowledge necessary to figure the rest out on your own but you’d basically need to make an inventory system, a breaking system that creates the item broken in your inventory upon its destruction, and mobs which could probably use a navmesh for pathfinding.

Anyway, like I said at the start, start small. Making Minecraft isn’t really that crazy once you’ve been doing this stuff for a long time, but it is if you’re just starting. My recommendation for you is to start on a simple infinite runner with procedural obstacles, then maybe move into the classic fps character with an inventory system, maybe some enemy ai if you’re feeling good, and only then, would I attempt this sort of thing. Either way, I wish you luck, and remember that if your heart isn’t in a project anymore, like if you wanna move on from the infinite runner or something, you totally can. Don’t burn yourself out doing stuff you hate or grow tired of. Hopefully this helps!