Mundos de la nada — Mapas procedurales en Unity

Mundos de la nada — Mapas procedurales en Unity
Un algoritmo, un poco de ruido y… ¡un mundo nuevo! 🌱
✳ Guía para curiosos · Unity 2D + 3D

Un mundo
nace de la
nada.

¿Mazmorras que cambian en cada partida? ¿Montañas que aparecen con una semilla? Aprende a crear escenarios procedurales para tus juegos con ideas claras, ejemplos en C# y cero necesidad de ser un mago del código.

Para principiantes · proyectos pequeños primero · errores incluidos en el aprendizaje

Montañas, lago y bosque como inspiración para un mundo de juego
Tu siguiente mapa no está dibujado.Está esperando a que le des una semilla.
SEED
42
2DSalas, cuevas y mapas con Tilemap
3DTerrenos, montañas y ruido Perlin
1 semillaEl mismo número, el mismo mundo
La idea en tres pasos

Procedural no es
“que salga lo que sea”.

Es crear reglas y dejar que el ordenador las combine. Tú decides qué puede aparecer, dónde y con qué límites; el algoritmo hace el trabajo repetitivo. Como una caja de LEGO que se monta sola, pero con más C#.

01

Define las piezas

Elige tiles para un juego 2D, o alturas, texturas y objetos para un terreno 3D. Empieza con pocas piezas: hierba, roca, agua y una salida ya dan juego.

02

Escribe las reglas

Una cuadrícula ordena las habitaciones; el ruido Perlin mezcla alturas de forma suave. La semilla controla el azar para poder repetir, depurar y compartir el mismo mapa.

03

Prueba y pon límites

Comprueba que el mapa tenga camino, salida y espacio para jugar. Si el generador hace un espagueti imposible, ajusta las reglas: ¡el algoritmo no se ofende!

Regla de oro: genera primero un mapa legible con bloques de colores. Añade arte, sonido y cofres cuando la ruta ya sea divertida.
Dos dimensiones, dos aventuras

¿Mazmorra pixelada
o montaña épica?

El método depende del tipo de juego. En 2D piensas en celdas y conexiones; en 3D, en una superficie con altura. Ambos pueden usar una semilla para recrear el mismo resultado.

Cueva oscura y rocosa, inspiración para una mazmorra de videojuego
2D · roguelike / plataformas

La mazmorra que se pasea sola

Crea una cuadrícula y empieza en una celda. Un “paseante borracho” da pasos al azar; cada cierto tiempo abres una sala alrededor del camino. Después conviertes las celdas visitadas en tiles y decoras las paredes.

  • Fácil: Tilemap + caminata aleatoria.
  • Más control: salas prefabricadas en rejilla, conectadas por pasillos.
  • Para cuevas: ruido aleatorio + reglas de autómata celular para suavizar túneles.
Paisaje de montaña con colinas y cielo abierto
3D · exploración / mundo abierto

Montañas a partir de ruido

Una cuadrícula de alturas se transforma en un Terrain. El ruido Perlin aporta variaciones suaves; después pintas materiales por altura y añades árboles, rocas y caminos con reglas propias.

  • Fácil: Terrain de Unity + altura generada por C#.
  • Control artístico: combina varias escalas de ruido y suaviza los bordes.
  • Rendimiento: divide mundos grandes en chunks y genera solo lo cercano.
¿Y las habitaciones prefabricadas? Crea prefabs de sala, pasillo, esquina y cruce; coloca el primero en (0,0), elige una salida libre, avanza en esa dirección y coloca la siguiente pieza sin solaparla. Repite con un límite de intentos y conecta las zonas que queden separadas.
Manos al código

Dos semillas.
Dos mundos nuevos.

Prueba estos prototipos antes de buscar el generador perfecto. Los dos scripts son ejemplos educativos para proyectos 2D/3D de Unity y puedes copiar cada bloque con su botón.

Mapa2D.cs
          using UnityEngine;
using UnityEngine.Tilemaps;

public class Mapa2D : MonoBehaviour
{
    [SerializeField] private Tilemap tilemap;
    [SerializeField] private TileBase suelo;
    [SerializeField] private int pasos = 180;
    [SerializeField] private int semilla = 42;

    private void Start()
    {
        if (tilemap == null || suelo == null)
        {
            Debug.LogError("Asigna el Tilemap y el tile de suelo en el Inspector.", this);
            return;
        }

        tilemap.ClearAllTiles();
        var azar = new System.Random(semilla);
        var posicion = Vector2Int.zero;

        for (int paso = 0; paso < pasos; paso++)
        {
            // Abre una pequeña sala alrededor del caminante.
            for (int x = -1; x <= 1; x++)
            for (int y = -1; y <= 1; y++)
                tilemap.SetTile(
                    new Vector3Int(posicion.x + x, posicion.y + y, 0), suelo);

            switch (azar.Next(4))
            {
                case 0: posicion += Vector2Int.up; break;
                case 1: posicion += Vector2Int.down; break;
                case 2: posicion += Vector2Int.left; break;
                default: posicion += Vector2Int.right; break;
            }
        }
    }
}

El script pinta un suelo continuo, sin paredes. Para hacerlo mazmorra, detecta celdas vacías junto al camino y coloca tiles de muro; reserva una salida al final.

TerrenoPerlin.cs
using UnityEngine;

public class TerrenoPerlin : MonoBehaviour
{
    [SerializeField] private int resolucion = 129;
    [SerializeField] private int semilla = 42;
    [SerializeField] private float escala = 5f;
    [SerializeField] private float alturaMaxima = 0.12f;

    private void Start()
    {
        int offset = semilla * 1000;
        var datos = new TerrainData
        {
            heightmapResolution = resolucion,
            size = new Vector3(500f, 80f, 500f)
        };
        var alturas = new float[resolucion, resolucion];

        for (int z = 0; z < resolucion; z++)
        for (int x = 0; x < resolucion; x++)
        {
            float nx = (float)x / (resolucion - 1);
            float nz = (float)z / (resolucion - 1);
            float ruido = Mathf.PerlinNoise(
                nx * escala + offset, nz * escala + offset);
            alturas[z, x] = ruido * alturaMaxima;
        }

        datos.SetHeights(0, 0, alturas);
        Terrain.CreateTerrainGameObject(datos);
    }
}

Para un relieve más rico suma varias capas de ruido (octavas). TerrainData almacena las alturas normalizadas entre 0 y 1.

¿Quieres ver un proyecto completo en GitHub?

La serie de Sebastian Lague incluye proyectos de generación de terrenos y cuevas en Unity. Descarga el repositorio, abre la carpeta del episodio como proyecto y revisa su README y licencia antes de reutilizarlo.

Terrenos 3D ↗

También hay cuevas 2D para estudiar

El repositorio de generación de cuevas contiene episodios y código de ejemplo. Es un buen compañero para experimentar con mapas por celdas y suavizado.

Cuevas 2D ↗
Botín para empezar

Un inventario de
recursos gratuitos.

Te dejamos búsquedas de la Asset Store de Unity, en lugar de prometer que un paquete concreto seguirá gratis para siempre. Activa el filtro gratuito y comprueba licencia y compatibilidad antes de importar.

En la ficha del asset revisa precio actual, licencia de uso, fecha de actualización y pipeline compatible (Built-in, URP o HDRP). Un paquete puede cambiar de precio o dejar de recibir soporte.

Unity al día · consultado en octubre de 2026

Lo nuevo, sin
perderse en el ruido.

Las novedades cambian con cada versión. Estas fuentes oficiales permiten comprobar qué versión de Unity 6 está publicada y cómo usar las herramientas actuales para Tilemaps y Terrain.

Unity 6 · notas de versión vivas

La página oficial “What’s new” se actualiza con las releases del Editor; al preparar esta guía conduce a Unity 6000.6.7f1. Lee las notas de la versión exacta antes de actualizar un proyecto.

Consultar novedades oficiales ↗

Terrain nativo de Unity

El manual explica cómo crear Terrain, esculpirlo, pintarlo y añadir árboles o detalles. Es una herramienta incluida en el Editor, no hace falta un paquete externo para empezar.

Guía oficial de Terrain ↗

Tilemaps para mundos 2D

La documentación de Unity explica las piezas de Tilemap y el flujo para pintar tiles en una cuadrícula. Encaja muy bien con mapas generados por scripts como el ejemplo de esta página.

Manual oficial de Tilemap ↗
Consejo de actualización: no cambies la versión de Unity a mitad de una entrega. Haz una copia del proyecto, consulta las notas y prueba la migración en una rama o duplicado.

Tu primer mundo puede ser pequeñito.

Una cueva, una isla o diez habitaciones conectadas: el mejor generador es el que puedes entender, probar y mejorar. Elige una semilla y dale al Play.

Abrir la guía 2D ↗

No hay comentarios