Difficulty recreating Minecraft Alpha/Beta terrain generation

I’m currently looking to recreate the exaggerated terrain you would see in the earlier versions of Minecraft, more specifically, the type of generation visible in the Alpha/Beta versions in 2011.

The main issue is that it’s a lot harder to code than what you would expect, and trying to read through the source code for Alpha is a nightmare to do. It’s using some sort of noise to generate it’s terrain but the way it goes by generating this is painfully hard to port over to ROBLOX, as Lua doesn’t have all the functions Java does.

And no, math.noise() doesn’t quite cut it either. It does produce heightmaps, but they’re way too smooth for usage.

From my knowledge, Minecraft uses “layers” of noisemaps to generate its terrain, but I’m unsure of how to apply this fully.

I’ve looked around for help such as many youtube videos, the before-mentioned attempt to dive through the Alpha source code in order to try and understand it, etc, etc.
It might just be because I’m not really good at this sort of thing but I’m hoping a little bit of guidance (you do not have to write entire scripts as answers) would be helpful.

Thanks, ruby

Minecraft is using some kind of algorithmic approach that requires a bit knowledge on how arrays work. Maybe sometimes generating multiple mapping on top of each other. Not exactly sure how to recreate it with precise ideas, but breaking open the source code might give semantic ideas.

1 Like

Good point, I have been mainly trying to translate the source code directly over to Lua but maybe giving it a bit more of a structural translation than a direct translation might be better?

this is just a idea, you should also add clouds trees and some textures so it will look more like minecraft alpha but i recommend not uploading original mc textures, i recommend using some source of faithful texture pack or smth (sorry for reply here)

1 Like

The way you are generating terrain is challenging to achieve the landscape in the Minecraft picture.

Instead of generating a platform and setting the height for each block, you generate a big block full of blocks. Apply a noise function that decides whether the block exists or not based on a value called the ‘Threshold’

The noise function contains 3 noises value representing 3 dimensions x y z, adding those 3 values together we get a ‘Density’ value. The noise function will return Density.

If the function returns a value that is greater than the threshold then you place a block there.

Of course, it would cause a lot of performance issues but I won’t talk about it here.

This is a helpful video by one of Minecraft’s developers:

3 Likes