¡La generación de ruido simple acaba de aterrizar en Godot 3.1! Este algoritmo de generación de ruido, originalmente inventado por Ken Perlin, es rápido y tiene muy buenos resultados.  Todavía tiene algunas patentes privadas, por eso Godot utilizará OpenSimplex noise, de dominio público y una buena alternativa.

Sus aplicaciones

El ruido simple, como cualquier otro tipo de ruido, es especialmente útil en dos áreas del desarrollo de un juego: procedural generation y efectos visuales.

Procedural Generation

Generar contenido de procedural en vídeojuegos puede ser un desafío, las estructuras completamente aleatorias tienden a convertirse en un completo desastre y, por lo tanto, inutilizables. Es por eso que la “aleatoriedad controlada” del ruido simple se vuelve realmente útil. Si desea obtener más información sobre cómo funciona el ruido “fractal” y algunas otras técnicas de generación de terreno, recomiendo encarecidamente este artículo de Red Blob Games.

Un prototipo de Godot: voxel world prototype de Zylann, que utiliza su propio módulo OpenSimplex, puede ser reemplazado por la implementación incorporada.

Efectos visuales

Las texturas de ruido 2D son realmente útiles cuando se crean efectos nublados u ondulados. Por ejemplo, el nuevo recurso NoiseTexture se puede usar como un mapa normal para obtener un material de agua rápido y simple:

Las texturas de ruido también se pueden usar como mapas de rugosidad, texturas de luz 2D, etc. Pero el verdadero poder de las texturas de ruido está disponible cuando se utiliza en combinación con shaders de texto:

Empezando

GDScript

Generar ruido desde GDScript es tan simple como instaurar un nuevo generador de ruido, establecer sus parámetros y tomar muestras en las posiciones deseadas:

# Instantiate
var noise = SimplexNoise.new()

# Configure
noise.seed = randi()
noise.octaves = 4
noise.period = 20.0
noise.persistance = 0.8

# Sample
print(noise.get_noise_2d(1.0, 1.0))
print(noise.get_noise_3d(0.5, 3.0, 15.0))
print(noise.get_noise_3d(0.5, 1.9, 4.7, 0.0))

Otra forma de acceder a los valores de ruido es precomputar una imagen de ruido:

# This creates a 512x512 image filled with simplex noise (using the currently set parameters)
var noise_image = noise.get_image(512, 512)

# You can now access the values at each position like in any other image
print(noise_image.get_pixel(10, 20))

Para obtener más información acerca de SimplexNoise y cuál es el significado de cada parámetro, no olvide consultar la documentación.

Texturas de ruido

Si solo necesita acceso a una textura de ruido para efectos visuales, el nuevo tipo de recurso NoiseTexture es su mejor opción. Le permite especificar un generador de ruido y una textura. Los datos de textura se rellenarán automáticamente con ruido, utilizando los parámetros del generador. También puede habilitar el uso de ruido sin interrupciones (solo funciona con texturas cuadradas) y permitir la salida de datos de ruido como un mapa normal.

NOTA: Este artículo es una traducción de la noticia oficial, la puedes visitar en este enlace: https://godotengine.org/article/simplex-noise-lands-godot-31


César León

Nací en el mes de mayo. En 2014 empecé a estudiar sobre el desarrollo de vídeojuegos, un conflicto de mi vida fue descargar software privado sin pagar licencias. Godot formó un puente entre mi y el Software Libre, probé GNU/Linux y termine aceptando el sentimiento ético de la FSF. Feliz de desarrollar juegos Indie con Software Libre :').