Islands Lab
Islands is the procedural world generator I am building in Unity for a game: deterministic, layer by layer, from noise to coastlines, rivers and biomes. This is its open notebook. The series below explains each technique it uses, with an interactive scene and the code. The catalogue lists every technique it has, plans or has rejected, so it doubles as the roadmap.
Islands es el generador procedural de mundos que estoy construyendo en Unity para un juego: determinista, por capas, del ruido a las costas, los ríos y los biomas. Esta es su libreta abierta. La serie de abajo explica cada técnica que usa, con una escena interactiva y el código. El catálogo reúne todas las técnicas que tiene, planea o ha descartado, así que sirve también de hoja de ruta.
The seriesLa serie
Read in order: each page builds on the one before. Para leer en orden: cada página se apoya en la anterior.
- Hashing spaceHashear el espacio
- Value noiseRuido de valor
- Perlin noiseRuido de Perlin
- Simplex noiseRuido simplex
- Spreading points on a lineRepartir puntos en una recta
- Spreading points on a planeRepartir puntos en el plano
- Voronoi and Worley noiseVoronoi y ruido de Worley comingpronto
- Spreading points in a volumeRepartir puntos en el volumen comingpronto
- Fractal noise (fBm)Ruido fractal (fBm) comingpronto
- Ridged multifractalMultifractal con crestas comingpronto
- Domain warpingDeformación del dominio comingpronto
- From noise to islandDel ruido a la isla comingpronto
- Reshaping heightRemodelar la altura
- Climate and biomesClima y biomas
- Thresholds by quantileUmbrales por cuantil
- Water finds its wayEl agua encuentra su camino comingpronto
The catalogueEl catálogo
59 techniques. Status as of October 2026, checked against the Islands code, not only its plans. "Phase" is the Islands roadmap phase that uses or will use it. 59 técnicas. Estado a octubre de 2026, comprobado contra el código de Islands y no solo contra sus planes. "Fase" es la fase del roadmap de Islands que la usa o la usará.
In IslandsEn Islands · 30PartialParcial · 4Web prototypePrototipo web · 4PlannedPlanificada · 6Not plannedSin planificar · 10RejectedDescartada · 5
Noise primitivesRuidos base
- Coordinate hashing (SmallXXHash)Hash de coordenadas (SmallXXHash) In IslandsEn Islands
Turns any integer position and seed into a repeatable random number. Every noise below starts here.Convierte cualquier posición entera y semilla en un número aleatorio repetible. Todo el ruido de abajo empieza aquí.
- Value noiseRuido de valor In IslandsEn Islands
Random values on a lattice, smoothly interpolated. Implemented, but its grid artefacts keep it out of terrain.Valores aleatorios en una red, interpolados con suavidad. Está implementado, pero sus artefactos de rejilla lo dejan fuera del terreno.
- Perlin (gradient) noiseRuido de Perlin (de gradiente) In IslandsEn Islands
Random slopes instead of random values. The map pipeline default puts these gradients on the simplex grid.Pendientes aleatorias en vez de valores aleatorios. El valor por defecto del pipeline de mapas pone estos gradientes sobre la rejilla simplex.
- Simplex noiseRuido simplex In IslandsEn Islands
Gradient noise on a triangular lattice: fewer corners per sample and weaker axis-aligned artefacts. With Perlin gradients, the terrain default.Ruido de gradiente sobre una red triangular: menos esquinas por muestra y artefactos alineados con los ejes más débiles. Con gradientes de Perlin, el terreno por defecto.
- Voronoi / Worley noiseRuido de Voronoi / Worley In IslandsEn Islands
Distance to the nearest random points. Islands has 3 metrics × 4 functions (F1, F2, F2 − F1…).Distancia a los puntos aleatorios más cercanos. Islands tiene 3 métricas × 4 funciones (F1, F2, F2 − F1…).
Noise compositionComposición de ruido
- Fractal Brownian motion (octaves)Movimiento browniano fraccional (octavas) In IslandsEn Islands
The same noise summed at doubling frequencies and halving amplitudes: coastlines with detail at every scale.El mismo ruido sumado a frecuencias que se doblan y amplitudes que se reducen: costas con detalle a toda escala.
- Ridged multifractalMultifractal con crestas In IslandsEn Islands
Musgrave's |noise| folded into sharp ridges, with each octave weighted by the last. Added in N5.c.El |ruido| de Musgrave plegado en crestas afiladas, con cada octava ponderada por la anterior. Añadido en N5.c.
- Turbulence (|noise|)Turbulencia (|ruido|) In IslandsEn Islands
The absolute value of noise; creases where it crosses zero. A building block for ridges.El valor absoluto del ruido; pliegues donde cruza el cero. Una pieza para las crestas.
- Domain warping (simple)Deformación del dominio (simple) In IslandsEn Islands
Two coarse noise fields push each sample point sideways before the island shape is evaluated.Dos campos de ruido grueso desplazan cada punto antes de evaluar la forma de la isla.
- Domain warping (fBm into fBm)Deformación del dominio (fBm dentro de fBm) Not plannedSin planificar
Quílez's nested warp, which gives swirling, marbled terrain. The simple warp covers current needs.La deformación anidada de Quílez, que da terreno arremolinado y marmóreo. La simple cubre lo que hace falta hoy.
- Noise competitionCompetencia de ruidos Not plannedSin planificar
One noise per type; the highest wins each cell (RimWorld's stone types).Un ruido por tipo; en cada celda gana el más alto (los tipos de roca de RimWorld).
Terrain and elevationTerreno y altura
- Height fieldCampo de altura In IslandsEn Islands
A 2D grid of heights in [0, 1]; land is every cell above the water threshold.Una rejilla 2D de alturas en [0, 1]; la tierra es cada celda por encima del umbral del agua.
- Island maskMáscara de isla In IslandsEn Islands
Ellipse, rectangle, pure noise or an external shape, perturbed by noise inside the silhouette.Elipse, rectángulo, ruido puro o una forma externa, perturbada con ruido dentro de la silueta.
- Height redistribution and spline remapRedistribución de altura y remapeo con spline In IslandsEn Islands
pow(h, k) and a piecewise curve reshape how much of the island is lowland or peak.pow(h, k) y una curva por tramos deciden cuánta isla es llanura y cuánta cumbre.
- Area-quantile thresholdsUmbrales por cuantil de área In IslandsEn Islands
Cut at "the top 20 % of land" instead of a fixed height, so every seed gets the same share of peaks.Cortar en "el 20 % más alto de la tierra" en vez de una altura fija, para que cada semilla tenga la misma proporción de cumbres.
- Sea-floor reliefRelieve submarino In IslandsEn Islands
Noise below the waterline, kept away from the land-tuned reshaping.Ruido bajo el nivel del mar, aislado de la remodelación pensada para la tierra.
- TerracesTerrazas PartialParcial
Height quantisation exists (heightQuantSteps); real cliffs and terrace shaping do not.Existe la cuantización de la altura (heightQuantSteps); los acantilados y terrazas de verdad, no.
- Mountain shapingModelado de montañas Not plannedSin planificar
A regional mask plus ridged noise for mountain ranges, instead of uniform fBm.Una máscara regional más ruido con crestas para cordilleras, en vez de fBm uniforme.
- ErosionErosión Not plannedSin planificar
The top-priority gap. Dwarf Fortress carves channels with greedy agents running downhill.El hueco prioritario. Dwarf Fortress talla cauces con agentes voraces que bajan por la pendiente.
- Elevation smoothingSuavizado de altura Not plannedSin planificar
Not planned; worth evaluating after erosion.Sin planificar; habría que evaluarlo tras la erosión.
Climate and biomesClima y biomas
- Temperature fieldCampo de temperatura In IslandsEn Islands
Latitude proxy, lapse rate with altitude, coastal moderation and noise.Aproximación de latitud, enfriamiento con la altura, moderación costera y ruido.
- Moisture fieldCampo de humedad In IslandsEn Islands
Distance to the coast, river flow and noise.Distancia a la costa, caudal de los ríos y ruido.
- Whittaker biome classificationClasificación de biomas de Whittaker In IslandsEn Islands
Temperature × moisture → one of 12 biomes, as in Dwarf Fortress and RimWorld.Temperatura × humedad → uno de 12 biomas, como en Dwarf Fortress y RimWorld.
- Biome-aware vegetationVegetación según bioma In IslandsEn Islands
Per-biome density, placed by quantile so the target share holds on every seed.Densidad por bioma, colocada por cuantil para que la proporción buscada se cumpla en cada semilla.
- Rain shadowSombra de lluvia PartialParcial
A wind-ordered sweep that dries the lee side of mountains. In NoiseLab v3, the didactic scene (2026-11-01); not yet in the map stage.Un barrido en la dirección del viento que seca la ladera de sotavento. Está en NoiseLab v3, la escena didáctica (2026-11-01); aún no en la etapa del mapa.
- Biome transition blendingTransición entre biomas Not plannedSin planificar
Noise-perturbed borders plus an edge factor per cell, instead of hard lines.Bordes perturbados con ruido más un factor de borde por celda, en vez de líneas duras.
- Biome scoringPuntuación de biomas Not plannedSin planificar
RimWorld's per-biome workers. Not needed while the Whittaker table suffices.Los evaluadores por bioma de RimWorld. No hacen falta mientras baste la tabla de Whittaker.
HydrologyHidrología
- Priority-Flood depression fillingRelleno de depresiones Priority-Flood In IslandsEn Islands
Fills every pit so water can always reach the sea (Barnes et al. 2014).Rellena cada hoyo para que el agua siempre llegue al mar (Barnes et al. 2014).
- D8 flow directionsDirecciones de flujo D8 In IslandsEn Islands
Each cell drains to its steepest neighbour of eight.Cada celda desagua en la más empinada de sus ocho vecinas.
- Flow accumulation and riversAcumulación de flujo y ríos In IslandsEn Islands
How many cells drain through each cell; rivers are where that count passes a threshold.Cuántas celdas desaguan a través de cada una; los ríos están donde esa cuenta pasa un umbral.
- LakesLagos In IslandsEn Islands
Inland water that is neither deep nor shallow sea.Agua interior que no es mar profundo ni somero.
- Strahler stream orderOrden de Strahler Not plannedSin planificar
River hierarchy 1, 2, 3…; flow accumulation stands in for it today.Jerarquía de ríos 1, 2, 3…; hoy la sustituye la acumulación de flujo.
- Agent-based river carvingRíos tallados por agentes Not plannedSin planificar
Dwarf Fortress's approach; it changes the height field, which the hydrology stage must not do.El enfoque de Dwarf Fortress; modifica el campo de altura, cosa que la etapa de hidrología no puede hacer.
- Rivers by pathfindingRíos por búsqueda de caminos Not plannedSin planificar
RimWorld's world-scale rivers; possibly useful for Phase W.Los ríos a escala de mundo de RimWorld; quizá útil en la fase W.
RegionsRegiones
- Connected componentsComponentes conexas In IslandsEn Islands
Flood fill per biome: each connected patch becomes a named region.Relleno por inundación por bioma: cada mancha conexa se vuelve una región con nombre.
- Voronoi regionsRegiones de Voronoi PlannedPlanificada
Political or geological partitions inside a map.Particiones políticas o geológicas dentro de un mapa.
- Plate tectonicsTectónica de placas PlannedPlanificada
Coarse Voronoi plates that collide into mountain ranges. Exploratory.Placas de Voronoi gruesas que chocan y levantan cordilleras. Exploratorio.
Layouts and grid operatorsLayouts y operadores de rejilla
- Random walkPaseo aleatorio In IslandsEn Islands
Simple and iterated walkers that carve caves.Caminantes simples e iterados que excavan cuevas.
- Binary space partitioning (BSP) dungeonsMazmorras por partición binaria (BSP) In IslandsEn Islands
Split the space recursively, place a room in each leaf, join them.Dividir el espacio recursivamente, poner una sala en cada hoja y unirlas.
- Corridor-first and room-grid dungeonsMazmorras de pasillos primero y de rejilla de salas In IslandsEn Islands
Two more layout strategies, composable with rooms-and-corridors.Otras dos estrategias de layout, combinables con salas y pasillos.
- Signed distance fieldsCampos de distancia con signo In IslandsEn Islands
Shapes as distance functions, combined with union, intersection and smooth blends.Formas como funciones de distancia, combinadas con unión, intersección y mezclas suaves.
- Mask morphology and flood fillMorfología de máscaras y relleno In IslandsEn Islands
Erode, dilate and flood boolean grids: coast bands, land cores, deep water.Erosionar, dilatar e inundar rejillas booleanas: franjas de costa, núcleos de tierra, agua profunda.
Placement and traversalColocación y recorrido
- Jittered grid (stratified points)Rejilla con jitter (puntos estratificados) In IslandsEn Islands
One hashed point per cell. It is how Voronoi noise places its points; there is no stand-alone sampler.Un punto por celda, sacado del hash. Es como el ruido de Voronoi coloca sus puntos; no existe como muestreador aparte.
- Low-discrepancy sequences (Halton, Sobol', golden ratio)Secuencias de baja discrepancia (Halton, Sobol', razón áurea) Web prototypePrototipo web
Deterministic sequences that fill space evenly and keep their earlier points as more are added.Secuencias deterministas que llenan el espacio con regularidad y conservan los puntos anteriores al añadir más.
- Poisson disk samplingMuestreo de disco de Poisson Web prototypePrototipo web
Random points never closer than a radius. The matrix lists it as available; it is not in the code. Prototyped on this site.Puntos aleatorios nunca más cerca que un radio. La matriz lo da por disponible; no está en el código. Prototipado en esta web.
- Hashed-priority Poisson disk (by chunks)Disco de Poisson por prioridad con hash (por chunks) Web prototypePrototipo web
One hashed candidate per cell; it stays if no neighbour within r outranks it, in rounds. Deterministic, parallel and seam-free; with 3 rounds, 77 % of Bridson's points (measured).Un candidato por celda sacado del hash; se queda si ningún vecino a menos de r lo supera, en rondas. Determinista, paralelo y sin costuras; con 3 rondas, el 77 % de los puntos de Bridson (medido).
- Lloyd relaxationRelajación de Lloyd Web prototypePrototipo web
Move each point to the centre of its Voronoi cell, and repeat. Evens out spacing fast, overall density slowly.Mover cada punto al centro de su celda de Voronoi, y repetir. Iguala rápido las distancias y despacio la densidad global.
- Points of interest by suitabilityPuntos de interés por idoneidad PlannedPlanificada
Score cells from terrain and biome, then place towns, ruins, camps.Puntuar celdas por terreno y bioma, y colocar pueblos, ruinas, campamentos.
- Paths between placesCaminos entre lugares PlannedPlanificada
A* or flood corridors, with rivers as obstacles.A* o corredores por inundación, con los ríos como obstáculos.
PipelinePipeline
- Seed derivation and determinismDerivación de semillas y determinismo In IslandsEn Islands
One seed, a salt per field: the same inputs always give the same map, checked by golden hashes.Una semilla y una "sal" por campo: las mismas entradas siempre dan el mismo mapa, comprobado con hashes de referencia.
- World map to local mapDel mapa del mundo al mapa local PartialParcial
The active milestone: zoom from a world tile into a detailed island.El hito activo: hacer zoom desde una casilla del mundo a una isla detallada.
- Data-driven presetsPresets definidos por datos PartialParcial
Presets hold the tunables; stage order is still in code.Los presets guardan los parámetros; el orden de etapas sigue en el código.
- World rejection and validationRechazo y validación de mundos PlannedPlanificada
Throw away bad worlds and retry. Paused until there is a rubric for "bad".Descartar mundos malos y reintentar. En pausa hasta tener un criterio de "malo".
- Burst/SIMD stages and GPU compositeEtapas Burst/SIMD y composición en GPU PlannedPlanificada
Performance work; the noise runtime is already SIMD, the map stages are not.Trabajo de rendimiento; el runtime de ruido ya es SIMD, las etapas del mapa no.
Evaluated and rejectedEvaluadas y descartadas
- Diamond-squareDiamond-square RejectedDescartada
Needs (2ⁿ + 1)-sized grids and leaves grid artefacts; fBm does the job better.Exige rejillas de (2ⁿ + 1) y deja artefactos; el fBm lo hace mejor.
- 3D density functionsFunciones de densidad 3D RejectedDescartada
For voxel worlds (Minecraft, No Man's Sky); Islands is 2D.Para mundos de vóxeles (Minecraft, No Man's Sky); Islands es 2D.
- Thermal erosionErosión térmica RejectedDescartada
Absent in all six games studied, Dwarf Fortress included.Ausente en los seis juegos estudiados, Dwarf Fortress incluido.
- Multi-parameter biome lookupBiomas por espacio de muchos parámetros RejectedDescartada
Minecraft's 5D lookup; temperature × moisture is enough here.La búsqueda 5D de Minecraft; aquí basta temperatura × humedad.
- Chunk streaming and LODStreaming por chunks y LOD RejectedDescartada
Islands generates whole maps; may return with Phase W.Islands genera mapas completos; puede volver con la fase W.
SourcesFuentes
- J. Flick, "Pseudorandom Noise" tutorial series, Catlike Coding. The basis of Islands.Noise (MIT-0). catlikecoding.com/unity/tutorials/pseudorandom-noise/
- K. Perlin, "An image synthesizer", SIGGRAPH '85. doi.org/10.1145/325165.325247
- S. Worley, "A cellular texture basis function", SIGGRAPH '96. doi.org/10.1145/237170.237267
- A. Patel, "Making maps with noise functions", Red Blob Games. redblobgames.com/maps/terrain-from-noise/