⛏️ | MINECRAFT: Generación del terreno de Minecraft

El videojuego de cubos, podría ser considerado como un simulador del planeta Tierra, ambos mundos tienen vida tanto animal como vegetal, tanto planicies como cordilleras montañosas hasta el ciclo día-noche. 


Basado en el video "Minecraft terrain generation in a nutshell" del desarrollador de Minecraft, Henrik Kniberg. 


A partir de Minecraft 1.18, Caves and Cliffs Update II, el terreno de Minecraft cambio considerablemente, pasando de mundo pequeños cuyas generación vertical era de 255 bloques de alto (0 - 255), para añadir 64 bloques extra en las capas negativas y otros 64 bloques después de la 255, aumentando la altura del mundo de 384 (-64 - 384).

El mundo de Minecraft, comparado con nuestro hogar (el planeta Tierra) tiene un total de 500.000.000.000  de km2, mientras que el un mundo completamente generado en todos sus ejes de coordenadas es de 1.300.000.000.000 de km2.
Este mundo digital ocupa un espacio, no un espacio físico pero si un espacio digital que equivale a 97.000 terabytes de almacenamiento. 

Cuando juegas, puedes sentir que el mundo se extiende hasta el infinito al mirar el horizonte. Sin embargo, esta sensación de inmensidad es una ilusión. En realidad, el mundo se genera de forma procedural, justo dentro del rango de visión que tiene por defecto el jugador, este paramento se le llama "renderizado de chunks".




Cada mundo de Minecraft, se genera en chunks, un chunk de Minecraft es un fragmento de 16 x 16 bloques de ancho por 384 de alto.
Estos chunks tienen fases para su formación y generación completa. 
El primer paso es dar la forma al terreno, aquí se determina cuales bloques son sólidos y cuáles no mediante el ruido Perlin.
Luego se calcula cuales bloques deben ser aire o agua. Posteriormente se reemplaza la superficie de los bloques con tierra, césped y/o arena.
Y finalmente se agregan las mecánicas y estructuras como árboles o aldeas.

En 1983, Ken Perlin, un reconocido matemático, creo el ruido Perlin.



El ruido Perlin es una forma de ruido de gradiente, que suaviza un campo de valores aleatorios para crear transiciones graduales. En un entorno 2D, el algoritmo toma las coordenadas (x e y) como entrada y produce un valor de salida que puede interpretarse como el brillo de un píxel.
Este mapa de valores puede utilizarse como un mapa de altura, donde los puntos de alto valor (brillantes) representan elevaciones y los de bajo valor (oscuros) representan depresiones, lo que permite la generación procedural de terrenos.
Para obtener una variación en el terreno menos agresiva, se utilizan octavas.

Tras la versión de Minecraft 1.18, Caves and Cliffs Update, se introdujo un novedoso sistema avanzado que permite crear diferentes puntos como acantilados, mesetas y grandes valles fluviales bajo los términos de "Continentalness", "Erosion", "Peaks & Valleys").
A la hora de generar un pico nevado el valor en el termino "Continentalness" es alta y la "Erosion" es bajo, sin embargo si este ultimo termino es bajo, el terreno generado es plano. La combinación de estos tres dan el resultado de la generación del terreno. 



Sin embargo, para generar biomas en diferentes capas (como ocurre en el Nether (+1.16)), el motor del juego utiliza el rudio Perlin 3D, este 3D significa la unión de tres diferentes entradas (coordenadas x, y, z) y una sola salida (densidad). 
Los valores de densidad positivos representan piedra, y los negativos, aire, creando un efecto de "queso suizo", que, combinado con un valor de altura, asegura una base solida en el terreno. Este sistema también se utiliza para generar las nuevas cuevas queso y spaghetti. 



La distribución de los biomas como junglas, desiertos y bosques se basa en cinco campos de ruido: "Continentalness", "Erosion", "Peaks & Valleys", "Temperature" y "Humidity". 
El juego utiliza tablas de configuración para determinar qué bioma colocar en cada combinación de estos valores, lo que garantiza que biomas similares se agrupen y el mundo tenga una transición lógica.