Un mapa de tiles en Godot consiste en tomar una hoja de sprites con pequeñas imágenes como césped, caminos, muros y agua, dividirla en celdas regulares y luego montar el nivel como si estuvieras pintando.
En Godot 4.x, especialmente para proyectos nuevos después de 4.3, conviene usar TileMapLayer. El nodo antiguo TileMap está marcado como obsoleto. Hoy es más recomendable usar un TileMapLayer por cada capa del mapa. Así la jerarquía queda más clara y encaja mejor con la forma de organizar nodos en Godot.
La documentación oficial también indica que TileMapLayer es un nodo para 2D tile-based maps y que usa un TileSet para crear mapas en cuadrícula. Si necesitas varias capas, usa varios TileMapLayer.
Documentación oficial:
https://docs.godotengine.org/en/stable/classes/class_tilemaplayer.html
https://docs.godotengine.org/en/latest/tutorials/2d/using_tilemaps.html
Dos conceptos clave
Lo más importante en un mapa de tiles son dos cosas:
TileSet
TileMapLayer
TileSet es la biblioteca de tiles. Guarda:
- Tiles de césped, tierra, muros, agua, caminos y otros elementos.
- Formas de colisión para cada tile.
- Reglas de conexión automática con Terrain.
- Navegación, oclusión y datos personalizados.
TileMapLayer es el lienzo. Usa los tiles del TileSet para dibujar el mapa.
Puedes empezar con una estructura como esta:
1
2
3
4
5
6
|
World (Node2D)
├─ Ground (TileMapLayer) # Césped, caminos, suelo
├─ Decoration (TileMapLayer) # Flores, grietas, sombras
├─ Walls (TileMapLayer) # Muros y obstáculos
├─ Objects (Node2D) # Cofres, puertas, NPC, monedas
└─ Player (CharacterBody2D)
|
Separar por capas tiene varias ventajas:
- El suelo no se mezcla con los muros.
- El orden de dibujo es más fácil de controlar.
- Puedes ocultar una capa concreta.
- Solo la capa de muros necesita colisión; la capa de suelo puede seguir siendo simple.
- Codex tendrá una estructura de nodos más clara cuando escriba scripts.
Crear el primer mapa de tiles
Primero prepara una imagen de tiles, por ejemplo:
Cada celda dentro de la imagen debe tener el mismo tamaño. Los tamaños comunes son:
1
2
3
|
16 × 16
32 × 32
64 × 64
|
Si cada tile del recurso mide 32 × 32, el Tile Size del TileSet también debería ser 32 × 32.
Añadir TileMapLayer
Añade esto a la escena:
1
2
|
Node2D
└─ TileMapLayer
|
Cambia el nombre de TileMapLayer a:
Selecciona Ground y busca en el Inspector:
Haz clic en:
1
2
|
<empty>
→ New TileSet
|
Luego abre el recurso TileSet recién creado y configura Tile Size con el tamaño de celda del recurso, por ejemplo:
Añadir la imagen de tiles
Después de seleccionar Ground, aparecerá abajo el panel de edición TileMap / TileSet.
Arrastra tileset.png al panel TileSet y elige la creación automática de tiles. Godot dividirá la imagen en tiles según Tile Size.
Después de este paso, el TileSet ya contiene tiles que se pueden dibujar, y el TileMapLayer Ground puede usarlos para pintar el mapa.
Dibujar el mapa
Cambia al panel TileMap inferior:
- Elige un tile de césped.
- Dibuja con la herramienta de lápiz.
- Borra con la goma.
- Usa la herramienta de rectángulo para rellenar zonas rápidamente.
- Usa la herramienta de relleno para completar áreas conectadas.
No empieces con un mapa enorme. Dibuja primero un mapa pequeño de 20 × 15, solo con césped, muros y un punto de aparición para el jugador.
Añadir colisión a los muros
No añadas colisión a todos los tiles de suelo. Normalmente solo los elementos no transitables necesitan colisión:
- Muros.
- Rocas.
- Vallas.
- Bordes de agua.
- Acantilados.
Selecciona el recurso TileSet y busca en el Inspector:
Haz clic en:
Una configuración común es:
1
2
|
Collision Layer: 1
Collision Mask: 1
|
Después, en el panel inferior TileSet:
- Cambia a las herramientas de colisión o dibujo físico.
- Selecciona un tile de muro.
- Dibuja una colisión rectangular o poligonal sobre la zona del muro.
Así, distintos tiles dentro del mismo TileSet pueden tener distintas formas de colisión.
Hacer que el jugador choque con los muros
Una escena básica de jugador puede ser:
1
2
3
|
Player (CharacterBody2D)
├─ Sprite2D
└─ CollisionShape2D
|
El script de movimiento puede empezar así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
extends CharacterBody2D
@export var speed: float = 200.0
func _physics_process(_delta: float) -> void:
var direction := Input.get_vector(
"move_left",
"move_right",
"move_up",
"move_down"
)
velocity = direction * speed
move_and_slide()
|
Mientras la capa y máscara de colisión de Player coincidan con la capa física del TileSet, el jugador quedará bloqueado por los tiles de muro.
Al ejecutar el juego, puedes activar:
1
2
|
Debug
→ Visible Collision Shapes
|
Esto permite ver directamente las formas de colisión de los muros y del jugador, lo que facilita mucho el diagnóstico.
Dividir el mapa en tres capas
Para empezar, usa tres capas:
1
2
3
4
|
World
├─ Ground
├─ Walls
└─ Decoration
|
Cada nodo es un TileMapLayer independiente.
En Ground coloca:
- Césped.
- Tierra.
- Caminos.
- Suelos.
Normalmente no tiene colisión.
En Walls coloca:
- Muros.
- Acantilados.
- Bordes de agua.
- Rocas no transitables.
Normalmente tiene colisión.
En Decoration coloca:
- Flores pequeñas.
- Hojas de césped.
- Grietas del suelo.
- Sombras.
Normalmente no tiene colisión.
Puedes usar z_index para un orden de dibujo básico:
1
2
3
4
|
Ground: 0
Walls: 1
Decoration: 2
Player: 3
|
Si hay árboles, tejados o pasos bajo puentes que deben tapar al jugador, puedes resolverlo más adelante con Y Sort o dividiendo los objetos en partes superior e inferior. El primer mapa no necesita un sistema complejo de oclusión.
Usar Terrain para conectar caminos y muros automáticamente
Si quieres que el editor genere bordes y esquinas automáticamente, por ejemplo:
- Césped conectado con bordes de tierra.
- Caminos con esquinas generadas automáticamente.
- Muros que eligen el tile correcto según los vecinos.
- Agua con orillas generadas automáticamente.
Necesitas usar Terrain Set de Godot.
El proceso básico es:
- Añadir un
Terrain Set en el TileSet.
- Configurar el modo de coincidencia, por ejemplo por lados y esquinas.
- Crear terrains, como
Grass, Dirt y Water.
- Marcar las posiciones de conexión de terreno en cada tile.
- Cambiar el
TileMapLayer al modo de dibujo Terrains.
- Dibujar el mapa con la herramienta
Connect o Path.
Godot elegirá tiles rectos, esquinas y bordes según las celdas cercanas. La documentación oficial también menciona dos modos de dibujo de Terrain: Connect, más fácil para empezar, y Path, más adecuado cuando necesitas más control manual sobre caminos.
No hace falta aprender Terrain de inmediato. Primero dibuja un mapa pequeño a mano y entiende TileSet, TileMapLayer y las colisiones. Después pasa a la conexión automática.
Manipular tiles desde código
Supón esta estructura:
Puedes referenciar Ground desde el script de World:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
extends Node2D
@onready var ground: TileMapLayer = $Ground
const SOURCE_ID: int = 0
const GRASS_TILE: Vector2i = Vector2i(0, 0)
func place_grass(cell: Vector2i) -> void:
ground.set_cell(
cell,
SOURCE_ID,
GRASS_TILE
)
|
Aquí, cell es la coordenada de celda del mapa. Por ejemplo:
1
|
place_grass(Vector2i(5, 3))
|
Esto coloca un tile de césped en la columna 5, fila 3.
Importante: SOURCE_ID y las coordenadas atlas de GRASS_TILE deben coincidir con tu TileSet real. No copies los valores de ejemplo sin comprobarlos.
Convertir entre coordenadas del mundo y coordenadas de celda
La posición del mouse está en coordenadas del mundo, pero el mapa de tiles usa coordenadas de celda. Normalmente primero conviertes a coordenadas locales de la capa y luego a celda del mapa.
Coordenada del mundo a celda:
1
2
|
var local_position := ground.to_local(get_global_mouse_position())
var cell := ground.local_to_map(local_position)
|
Coordenada de celda a posición del mapa:
1
|
var position_in_layer := ground.map_to_local(cell)
|
Para colocar un tile con clic del mouse:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
extends Node2D
@onready var ground: TileMapLayer = $Ground
const SOURCE_ID: int = 0
const GRASS_TILE: Vector2i = Vector2i(0, 0)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventMouseButton:
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
var local_position := ground.to_local(
get_global_mouse_position()
)
var cell := ground.local_to_map(local_position)
ground.set_cell(
cell,
SOURCE_ID,
GRASS_TILE
)
|
Si también quieres borrar tiles con clic derecho, usa:
1
|
ground.erase_cell(cell)
|
set_cell(), erase_cell(), local_to_map() y map_to_local() son API comunes de TileMapLayer.
No conviertas cofres, puertas y monedas en tiles planos
Estos objetos normalmente no deberían ser solo tiles de imagen:
- Monedas.
- Cofres.
- Puertas que se pueden abrir.
- NPC.
- Enemigos.
- Puntos de teletransporte.
- Mecanismos.
- Cajas destructibles.
Tienen scripts, animaciones, colisiones y señales, así que conviene crearlos como escenas independientes.
Por ejemplo, una moneda:
1
2
3
|
Coin (Area2D)
├─ Sprite2D
└─ CollisionShape2D
|
Luego colócala en:
Los tiles normales van bien para mapas estáticos. Los objetos con comportamiento funcionan mejor como Scene independientes. Godot también soporta tiles de tipo Scene Collection, pero para principiantes es más fácil entender y depurar escenas independientes colocadas a mano.
En qué puede ayudar Codex
Codex es útil para:
- Escribir scripts de movimiento del jugador.
- Leer celdas del mapa.
- Generar mapas proceduralmente.
- Pintar tiles de suelo de forma aleatoria.
- Colocar y borrar tiles con el mouse.
- Encontrar puntos de aparición.
- Leer datos personalizados de tiles.
- Revisar el uso de la API
TileMapLayer.
- Implementar lógica de monedas, puertas y cofres.
Puedes pedirle algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
Este es un proyecto Godot 4.x.
Estructura de escena:
World: Node2D
├─ Ground: TileMapLayer
├─ Walls: TileMapLayer
├─ Objects: Node2D
└─ Player: CharacterBody2D
Escribe un script para World:
1. Convertir la posición mundial del mouse a coordenadas de celda de Ground;
2. Clic izquierdo coloca un tile de césped;
3. Clic derecho borra un tile;
4. SOURCE_ID y coordenadas atlas deben configurarse con @export;
5. Usar la API TileMapLayer de Godot 4.x;
6. Usar tipos estáticos;
7. No modificar el TileSet ni los nombres de nodos de la escena.
|
Codex no es tan adecuado para:
- Decidir cuántos píxeles debe medir cada tile del recurso.
- Dibujar visualmente todo el mapa.
- Configurar con precisión las máscaras de Terrain.
- Adivinar
source_id.
- Adivinar coordenadas atlas.
- Escribir a mano grandes datos de mapa
.tscn.
La división más práctica es: tú creas el TileSet, configuras colisiones y dibujas el mapa en el editor de Godot; Codex escribe la interacción del mapa, la lógica de generación y los scripts de gameplay sobre la estructura real de nodos.
Primer ejercicio
Para el primer ejercicio, crea solo un mapa pequeño de 20 × 15:
- Pintar césped en
Ground.
- Dibujar un borde de muros en
Walls.
- Configurar colisión para los tiles de muro.
- Colocar un
Player.
- Hacer que el jugador sea bloqueado por los muros.
- Añadir después una escena
Coin.
Cuando termines este ejercicio, entenderás el flujo básico de mapas de tiles en Godot:
1
2
3
4
5
|
TileSet guarda el arte y las reglas de los tiles
TileMapLayer dibuja una capa del mapa
La colisión se configura en los tiles dentro del TileSet
Los objetos con comportamiento deben ser escenas independientes
Codex escribe scripts alrededor de la estructura real de nodos
|
Haz funcionar primero este mapa mínimo. Luego pasa a Terrain, Y Sort, generación procedural y carga de mapas grandes.
Prompts para generar TileSets de Godot con IA
Al generar tilesets de Godot con IA, el objetivo no es crear un mapa bonito. Lo importante es conseguir un atlas de tiles que sea fácil de cortar, fácil de importar en TileSet y predecible dentro de una cuadrícula.
Los objetivos principales son:
- Cuadrícula regular.
- Tamaño uniforme.
- Repetición sin costuras.
- Nada debe cruzar los límites de una celda.
- Fácil de cortar en Godot.
Los prompts siguientes se pueden copiar directamente. Recomiendo empezar con la versión de terreno base, en vez de pedir carreteras, agua, muros y decoraciones desde el primer intento. Los modelos de IA no siempre entienden bien los atlas estrictos. Cuanto más contenido pidas, más fácil es que aparezcan celdas desalineadas, conexiones rotas o estilos inconsistentes.
Versión simplificada para modelos de imagen
Generar demasiados tiles de conexión de una vez suele fallar. Para el primer intento, genera solo terreno base.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Genera un atlas de tiles pixel art en vista superior adecuado para Godot 4 TileSet.
Requisitos:
- Vista estrictamente superior
- Tamaño lógico de cada tile: 32×32
- Cuadrícula regular de 6 columnas × 3 filas
- Fondo transparente
- Todas las celdas tienen exactamente el mismo tamaño
- Sin texto, sin etiquetas, sin UI, sin personajes
- No generar un mapa completo
- Mantener estilo e iluminación uniformes
Primera fila:
Césped normal, césped oscuro, césped escaso, tierra, arena, piedra
Segunda fila:
Hierba fina, grava, flores, hojas caídas, grietas del suelo, setas pequeñas
Tercera fila:
Variación de césped claro, variación de tierra oscura, tierra húmeda, piedra con musgo, arena seca, suelo de adoquines
Requisitos técnicos:
- Todos los tiles de suelo deben repetirse sin costuras en las cuatro direcciones
- Los bordes no deben mostrar cortes evidentes
- Los detalles no deben cruzar a celdas vecinas
- Salida como un único atlas PNG
|
Esta versión suele tener más éxito. Genera primero el terreno base, confirma que el estilo y la cuadrícula sirven, y luego continúa con caminos, agua y muros.
Versión de conexión automática entre césped y tierra
Esta versión sirve para configurar Terrain en Godot más adelante.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
Genera un tileset de transición entre césped y tierra en pixel art vista superior, adecuado para el sistema Terrain de Godot 4.
Especificaciones:
- Tamaño lógico de cada tile: 32×32
- Vista estrictamente superior
- Distribución en cuadrícula regular
- Fondo transparente
- Densidad de píxeles uniforme
- Dirección de luz uniforme
- Sin texto, sin UI, sin personajes, sin escena completa
Debe incluir:
- Centro de césped puro
- Centro de tierra pura
- Borde superior donde el césped rodea la tierra
- Borde inferior
- Borde izquierdo
- Borde derecho
- Esquina exterior arriba izquierda
- Esquina exterior arriba derecha
- Esquina exterior abajo izquierda
- Esquina exterior abajo derecha
- Esquina interior arriba izquierda
- Esquina interior arriba derecha
- Esquina interior abajo izquierda
- Esquina interior abajo derecha
- Camino estrecho de tierra horizontal
- Camino estrecho de tierra vertical
- Conexión en cruz
- Conexión en forma de T
Todos los píxeles de borde deben coincidir estrictamente y conectar sin costuras.
No omitir esquinas interiores ni exteriores.
Cada tile de conexión debe ocupar una celda completa de la cuadrícula.
|
Este tipo es de los más difíciles para la IA. Normalmente tendrás que corregir esquinas interiores, exteriores y uniones en T con Aseprite, Krita o Photoshop.
Prompt de tileset de agua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
Genera un atlas de tiles de agua en pixel art vista superior adecuado para Godot 4 TileSet.
Requisitos:
- Tamaño lógico de cada tile: 32×32
- Distribución en cuadrícula regular
- Fondo transparente
- Vista estrictamente superior
- Color de agua y estilo de ondas uniformes
- Sin texto, sin etiquetas, sin UI, sin mapa completo
Contenido:
- Centro de agua
- Variación de agua 1
- Variación de agua 2
- Orilla superior
- Orilla inferior
- Orilla izquierda
- Orilla derecha
- Esquina exterior arriba izquierda
- Esquina exterior arriba derecha
- Esquina exterior abajo izquierda
- Esquina exterior abajo derecha
- Esquina interior arriba izquierda
- Esquina interior arriba derecha
- Esquina interior abajo izquierda
- Esquina interior abajo derecha
- Pequeña onda
- Hoja flotante
- Piedra en el agua
Usar tierra natural y algo de césped en las orillas.
Todos los bordes deben conectar sin costuras en las cuatro direcciones.
El contenido de cada tile no debe salir de su propia celda.
|
En tiles de agua, revisa dos cosas:
- Si el centro de agua se repite sin costuras.
- Si las orillas y las esquinas interiores/exteriores conectan de verdad.
Prompt de tileset de mazmorra
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
Genera un atlas de tiles de mazmorra en pixel art vista superior adecuado para Godot 4.
Especificaciones:
- Tamaño lógico de cada tile: 32×32
- Cuadrícula regular de 6 columnas × 5 filas
- Fondo transparente
- Vista estrictamente superior
- Estilo de mazmorra de piedra gris oscuro
- Densidad de píxeles y dirección de luz uniformes
- Sin personajes, sin habitación completa, sin UI ni texto
Contenido:
- Suelo de piedra normal
- Suelo de piedra agrietado
- Suelo de piedra con musgo
- Suelo de piedra con manchas de sangre
- Centro de muro de piedra
- Parte superior de muro de piedra
- Bordes izquierdo y derecho de muro
- Esquina interior de muro
- Esquina exterior de muro
- Hueco de puerta
- Puerta de hierro
- Columna de piedra
- Base de antorcha
- Caja de madera
- Barril de madera
- Escombros
- Huesos
- Cadenas
- Trampa de suelo
Todos los suelos deben repetirse sin costuras.
Los bordes y esquinas de muros deben conectar correctamente.
Cada objeto debe quedar completamente dentro de su celda.
|
En mazmorras, el fallo típico es que los muros salgan en vista lateral o que la imagen se convierta en una habitación completa. Refuerza “vista superior”, “sin habitación completa” y “solo una hoja de tiles”.
Versión cartoon dibujada a mano
Si no quieres pixel art, usa esta versión de estilo cartoon dibujado a mano.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Genera un atlas de tiles en vista superior, estilo cartoon dibujado a mano, adecuado para Godot 4 TileSet.
Requisitos:
- Tamaño lógico de cada tile: 64×64
- Vista estrictamente superior
- Estilo suave dibujado a mano
- Contornos claros
- Trazos uniformes
- Iluminación uniforme
- Distribución en cuadrícula regular
- Fondo transparente
- No generar una escena de mapa completa
- Sin texto, sin UI, sin personajes
Contenido:
Césped, tierra, arena, camino de piedra, agua, bordes de camino, bordes de transición césped-tierra, flores pequeñas, piedras pequeñas, arbustos.
Todos los suelos base deben repetirse sin costuras.
Los patrones de borde deben conectar con tiles vecinos.
Cada tile debe mantenerse independiente y no cruzar a otra celda.
|
El estilo dibujado a mano produce bordes irregulares con más facilidad que el pixel art. Después de generar, conviene realinear la cuadrícula en un editor de imagen antes de importar a Godot.
Prompts negativos
Si el modelo permite prompts negativos, añade:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
no perspective view,
no isometric view,
no complete map,
no characters,
no text,
no labels,
no UI,
no irregular grid,
no overlapping tiles,
no inconsistent tile sizes,
no borders,
no mockup,
no screenshot,
no realistic photography,
no shadows crossing tile boundaries,
no objects cut off by tile edges
|
Versión en chino:
1
2
3
4
|
不要透视,不要等距视角,不要完整地图,不要角色,
不要文字,不要标签,不要 UI,不要预览边框,
不要不规则网格,不要瓦片重叠,不要尺寸不一致,
不要跨格阴影,不要让物体被网格边缘截断。
|
Si el modelo sigue generando una “vista previa bonita” en vez de una hoja de assets, refuerza con:
1
2
3
4
5
|
no preview scene,
no game screenshot,
no map mockup,
only a tile atlas,
only separate tiles in a regular grid
|
Parámetros prácticos de generación
Empieza con estas especificaciones:
1
2
3
4
5
|
Tamaño lógico de tile: 32×32
Diseño del atlas: 6×4 o 6×5
Imagen final generada: 1024×1024 o superior
Fondo: transparente
Estilo: pixel art
|
Importante: la IA normalmente no generará una cuadrícula realmente estricta de 32×32.
“32×32” le indica al modelo la proporción de diseño. Después de generar, aún tendrás que usar un editor de imagen para:
- Recortar el lienzo.
- Crear una cuadrícula regular.
- Realinear cada tile.
- Escalar al tamaño real
32×32.
- Corregir bordes.
- Exportar PNG.
Para que Godot TileSet pueda cortar el atlas con más facilidad, el atlas final debería garantizar:
- El tamaño del lienzo es divisible por el tamaño del tile.
- Cada tile está dentro de una celda fija.
- No hay borde exterior.
- No hay espaciado irregular.
- Nada cruza límites de celda.
Flujo por lotes más estable
No generes un gran atlas completo de una vez. Usa este orden:
- Primera imagen: terreno base.
- Segunda imagen: conexiones de caminos.
- Tercera imagen: agua y orillas.
- Cuarta imagen: muros y acantilados.
- Quinta imagen: flores, hierba y decoraciones de piedras.
Desde el segundo lote, añade:
1
2
|
Mantener exactamente los mismos colores, trazos, densidad de píxeles,
vista, dirección de luz y estilo de contorno que el conjunto anterior.
|
Aun así, distintos lotes pueden tener deriva de estilo. En un proyecto real, conviene hacer una corrección final de color y limpieza.
La versión que recomiendo usar primero
Si solo quieres probar el flujo de TileSet en Godot, copia primero este prompt:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
Genera un atlas de tiles de terreno base en pixel art vista superior adecuado para Godot 4 TileSet.
Tamaño lógico de cada tile: 32×32.
El atlas usa una cuadrícula regular de 6 columnas × 3 filas.
Fondo transparente.
Vista estrictamente superior, sin perspectiva, sin ángulo isométrico.
Todos los tiles tienen exactamente el mismo tamaño y están bien alineados.
Densidad de píxeles, estilo de color y dirección de luz uniformes.
Primera fila:
Césped normal, césped oscuro, césped claro, tierra normal, tierra oscura, arena.
Segunda fila:
Suelo de piedra gris, suelo de piedra con musgo, suelo de adoquines, tierra húmeda, hierba seca, grava.
Tercera fila:
Decoración de flores pequeñas, decoración de arbusto, decoración de piedra pequeña, decoración de hojas caídas,
decoración de grieta en el suelo, decoración de seta pequeña.
Todos los suelos base deben repetirse sin costuras en las cuatro direcciones.
Las decoraciones deben quedar completamente dentro de su propio tile.
No generar un mapa completo.
No personajes.
Sin texto, números, etiquetas, UI, bordes ni notas de vista previa.
No dejar que ningún patrón cruce a tiles vecinos.
Salida como un único atlas PNG transparente.
|
Esta es la mejor primera prueba. Si Godot puede cortarla con una cuadrícula regular y los tiles de terreno base se repiten bien, ya es suficiente. Añade caminos, agua, muros y decoración después, en vez de intentar conseguir un atlas completo desde el primer intento.
Usar IA para construir escenas completas con un TileSet
Prompt para IA de generación de imagen
Este método sirve para conceptos visuales o previsualizaciones. Sube primero tu tileset como imagen de referencia y usa este prompt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
Referencia estrictamente el tileset que proporcioné. Usa solo los elementos existentes de suelo, caminos, agua, muro de piedra y decoraciones del tileset para montar una escena completa, razonable y utilizable en un RPG de vista superior, con temática de aldea en el bosque.
Especificaciones de la escena:
Vista estrictamente superior.
No usar perspectiva ni vista isométrica.
Tamaño lógico del mapa: 24×18 tiles.
Tamaño lógico de cada tile: 32×32.
Mantener el estilo visual, colores, texturas, dirección de luz y proporciones originales del tileset de referencia.
No cambiar el diseño de los tiles.
No añadir edificios, personajes ni objetos grandes que no existan en la referencia.
No generar UI, texto, bordes ni líneas de cuadrícula.
Generar una escena completa, no un atlas de tiles.
Estructura del mapa:
Usar césped normal como capa base principal, mezclado con algo de césped oscuro y césped escaso para evitar repeticiones grandes.
Colocar una entrada clara en el centro inferior del mapa.
Desde la entrada, crear un camino principal vertical que llegue al centro.
En el centro, el camino principal se divide en dos ramales hacia izquierda y derecha. Todos los caminos deben estar conectados. No crear caminos cortados ni fragmentos sin sentido.
Colocar un estanque pequeño de forma natural en la zona superior derecha.
El estanque debe montarse correctamente con centro de agua, bordes superior/inferior/izquierdo/derecho y esquinas. No crear agua cortada ni orillas en dirección incorrecta.
Colocar una zona de muro de piedra conectada en la parte superior izquierda.
Los bordes y esquinas del muro deben conectar correctamente.
Entre el estanque, los muros y el borde del mapa debe quedar al menos un tile transitable.
Mantener una zona central relativamente abierta para que el personaje pueda moverse.
No permitir que el estanque o los muros bloqueen por completo el camino principal.
Reglas de decoración:
Las flores pequeñas aparecen principalmente en césped, no en caminos ni agua.
Las piedras pequeñas pueden aparecer en poca cantidad sobre tierra, bordes de camino o césped escaso.
Los arbustos se concentran en bordes del mapa, cerca del estanque y en esquinas de muros.
Los tocones aparecen solo en poca cantidad como puntos visuales de interés y no deben bloquear el camino principal.
Las grietas del suelo solo aparecen en tierra o zonas secas.
Las hojas caídas se concentran en esquinas del mapa y cerca de muros.
Mantener limpio el centro de los caminos; la decoración va sobre todo a ambos lados.
Menos decoración en el centro del mapa y más densidad en los bordes.
No decorar cada celda; dejar espacios naturales vacíos.
Requisitos de razonabilidad:
Todos los caminos deben tener un propósito claro y estar conectados entre sí.
Todas las zonas transitables deben ser alcanzables desde la entrada.
El agua, los muros y los caminos deben conectar con la dirección correcta.
No crear tiles aislados de agua, muros aislados ni esquinas incorrectas.
No crear espacios cerrados pequeños a los que no se pueda entrar.
El mapa debe parecer un nivel de juego diseñado, no una colocación aleatoria de tiles.
La composición debe tener jerarquía: la entrada guía al jugador, el camino principal conduce al centro, y el estanque y el muro funcionan como focos visuales secundarios.
Generar solo una escena completa de mapa en vista superior.
|
Este prompt obliga al modelo a pensar en estructura antes que en decoración. Aun así, aunque digas “referencia estricta”, el modelo puede redibujar detalles y no garantiza reutilización pixel-perfect.
Si necesitas un mapa importable al juego, no dependas solo de la imagen generada.
Hacer que la IA genere primero el layout
Este método conserva mejor la lógica del mapa. Primero pide a la IA que no dibuje, sino que genere un mapa de caracteres 24×18. Después, Codex o un script puede convertir esos caracteres en llamadas TileMapLayer.set_cell().
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
Diseña un layout de mapa de bosque RPG en vista superior de 24×18 usando las siguientes reglas.
Símbolos del mapa:
G = césped normal
D = césped oscuro
S = césped escaso
R = camino
W = agua
A = muro de piedra
F = flor pequeña
K = piedra pequeña
B = arbusto
U = tocón
C = grieta del suelo
L = hojas caídas
P = entrada del jugador
Requisitos de diseño:
P está en el centro inferior del mapa.
Desde P debe existir un camino hacia el centro del mapa.
El camino se divide en ramales izquierdo y derecho en el centro; todos los caminos deben estar conectados.
En la zona superior derecha, colocar un estanque natural de unas 4×5 celdas.
En la zona superior izquierda, colocar un tramo de muro de piedra conectado de forma razonable.
Mantener en el centro al menos una zona abierta de 7×5.
Entre el estanque, los muros y el borde del mapa debe quedar al menos una celda transitable.
El jugador debe poder llegar desde P a todos los caminos principales y zonas abiertas.
No permitir zonas cerradas de césped de una sola celda.
No permitir fragmentos de una sola celda sin sentido en caminos, agua o muros.
Las decoraciones no deben bloquear caminos principales.
Más decoración en bordes del mapa, menos en el centro.
Las flores solo van sobre césped.
Las grietas solo van sobre tierra o césped escaso.
Las hojas caídas van principalmente en esquinas y cerca de muros.
Mantener el conjunto natural, no perfectamente simétrico, pero estructuralmente claro.
Requisitos de salida:
Primera parte: solo la cuadrícula completa de 24×18 caracteres.
Cada fila debe contener exactamente 24 caracteres.
Debe haber exactamente 18 filas.
Segunda parte: listar coordenada de entrada, nodos de caminos, rango del estanque y rango del muro.
Tercera parte: comprobar si existen caminos cortados, zonas cerradas o zonas inaccesibles.
No generar imagen.
|
Después de obtener el layout, pide una comprobación:
1
2
3
4
5
6
7
8
9
|
Revisa el mapa de caracteres anterior:
1. Si P puede llegar a todos los tiles R de camino;
2. Si existen tiles W de agua aislados;
3. Si existen tiles A de muro aislados;
4. Si alguna zona transitable queda encerrada por agua o muros;
5. Si cada fila contiene exactamente 24 caracteres;
6. Si el mapa tiene exactamente 18 filas.
Si encuentras problemas, entrega un mapa 24×18 corregido completo.
|
Este flujo se parece más al diseño de niveles que a generar una imagen directa. Primero se valida la estructura, luego se añaden detalles visuales.
Hacer que Codex use estrictamente el tileset en Godot
Esta es la forma más fiable, porque usa coordenadas reales del atlas en lugar de redibujar.
Usa el siguiente prompt en el panel de Codex de VS Code. Supone que el proyecto Godot ya tiene nodos TileMapLayer y un TileSet importado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
Este es un proyecto Godot 4.x. Necesito crear un mapa completo usando el TileSet existente.
Estructura de escena:
World: Node2D
├─ Ground: TileMapLayer
├─ Roads: TileMapLayer
├─ Water: TileMapLayer
├─ Walls: TileMapLayer
├─ Decorations: TileMapLayer
└─ PlayerSpawn: Marker2D
El atlas del tileset tiene 6 columnas × 5 filas. Las coordenadas son:
Primera fila:
(0,0) césped normal
(1,0) césped oscuro
(2,0) césped escaso
(3,0) suelo de tierra
(4,0) suelo de piedra
(5,0) suelo de arena
Segunda fila:
(0,1) camino horizontal
(1,1) camino vertical
(2,1) esquina superior izquierda de camino
(3,1) esquina superior derecha de camino
(4,1) esquina inferior izquierda de camino
(5,1) esquina inferior derecha de camino
Tercera fila:
(0,2) centro de agua
(1,2) borde superior de agua
(2,2) borde inferior de agua
(3,2) borde izquierdo de agua
(4,2) borde derecho de agua
(5,2) esquina exterior de agua
Cuarta fila:
(0,3) centro de muro de piedra
(1,3) parte superior de muro
(2,3) parte inferior de muro
(3,3) lado izquierdo de muro
(4,3) lado derecho de muro
(5,3) esquina de muro
Quinta fila:
(0,4) flor pequeña
(1,4) piedra pequeña
(2,4) arbusto
(3,4) tocón
(4,4) grieta del suelo
(5,4) hojas caídas
Tarea:
Crear un mapa de aldea forestal de 24×18.
Colocar la entrada del jugador en el centro inferior.
Crear un camino principal desde la entrada al centro y dividirlo allí en ramales izquierdo y derecho.
Crear un estanque pequeño conectado correctamente en la esquina superior derecha.
Crear un tramo de muro de piedra conectado correctamente en la esquina superior izquierda.
Mantener el centro abierto.
Todos los caminos deben estar conectados.
El agua y los muros no deben bloquear el paso.
Colocar decoraciones principalmente en bordes, cerca del estanque y en esquinas de muros.
No colocar decoraciones en el centro de los caminos.
No crear agua aislada, muros aislados ni esquinas en dirección incorrecta.
Usar @export para source_id.
Usar Godot 4 TileMapLayer.set_cell().
Usar tipos estáticos.
Separar datos de mapa y lógica de dibujo.
Añadir comprobación de tamaño de mapa y comprobación de alcanzabilidad.
Si al tileset existente le faltan tiles necesarios para alguna conexión, no adivinar ni sustituir con tiles incorrectos. Indicar claramente qué falta.
Primero lee el proyecto, la escena y el recurso TileSet actual. Confirma el source_id real y las coordenadas atlas antes de modificar código. No asumir que source_id es 0.
|
La frase más importante es:
1
|
Primero lee el proyecto, la escena y el recurso TileSet actual. Confirma el source_id real y las coordenadas atlas antes de modificar código. No asumir que source_id es 0.
|
En Godot, source_id, coordenadas atlas y orden de TileSet Source pueden diferir de lo esperado. Si la IA adivina, puede escribir código que se ejecuta pero coloca tiles incorrectos.
Prompt en dos fases para Codex
Si el proyecto ya es complejo, no conviene pedir a Codex que haga todo de una vez. Primero pídele análisis y comprobación sin modificar archivos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Este es un proyecto Godot 4.x.
No modifiques ningún archivo todavía.
Realiza estas comprobaciones:
1. Leer la estructura actual de la escena;
2. Encontrar todos los nodos TileMapLayer;
3. Encontrar el TileSet usado por cada uno;
4. Confirmar el source_id real;
5. Listar qué tile corresponde a cada coordenada atlas;
6. Decidir si el tileset es suficiente para crear un mapa de aldea forestal de 24×18;
7. Si faltan tiles de conexión para caminos, agua o muros, listarlos claramente;
8. Proponer la estructura de datos del mapa;
9. Proponer el método de comprobación de alcanzabilidad;
10. No escribir código todavía.
|
Después de confirmar el análisis, pídele implementar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Ahora implementa el script de generación de mapa.
Requisitos:
1. Modificar solo el script de World;
2. No modificar el TileSet;
3. No renombrar nodos de escena;
4. Tamaño del mapa: 24×18;
5. Guardar los datos del mapa en arrays o diccionarios;
6. Dibujar con TileMapLayer.set_cell();
7. Usar @export para source_id y coordenadas atlas clave;
8. Añadir comprobación de tamaño del mapa;
9. Añadir comprobación de conectividad de caminos;
10. Añadir comprobación de alcanzabilidad desde PlayerSpawn a zonas principales;
11. Si una comprobación falla, usar push_error() con la causa;
12. Al terminar, explicar cómo probarlo en Godot.
|
Este método en dos fases es más estable: primero la IA entiende el proyecto, luego edita.
Las frases más importantes del prompt
Para cualquier escena generada, conviene añadir estas reglas:
1
2
3
4
5
6
|
Todos los caminos deben estar conectados entre sí y tener un propósito claro.
No crear tiles aislados de agua, muros o caminos.
Mantener legible el centro del mapa y aumentar la densidad de decoración en los bordes.
Cada zona principal debe ser alcanzable desde la entrada del jugador.
Las decoraciones no deben bloquear las rutas principales.
Diseñar primero la estructura del mapa y añadir decoración después.
|
La última línea es especialmente importante:
1
|
Primero estructura, después decoración.
|
Si no la escribes, la IA suele intentar que el mapa “se vea rico” primero, y termina con caminos confusos, decoración bloqueando rutas y zonas inaccesibles.
Flujo recomendado
El flujo más seguro es:
- Generar u organizar primero el tileset con IA.
- Crear el
TileSet en Godot y confirmar las coordenadas atlas de cada tile.
- Pedir a la IA que genere primero un mapa de caracteres o layout JSON.
- Comprobar conectividad de caminos, alcanzabilidad desde la entrada, agua y muros.
- Pedir a Codex que convierta el layout en
TileMapLayer.set_cell().
- Ejecutar en Godot con colisiones y vistas de depuración activadas.
- Ajustar la densidad de decoración al final.
Resumen:
No pidas a la IA que “dibuje una escena bonita” al principio. Pídele que diseñe primero la estructura y luego deja que el script monte el mapa con coordenadas reales del tileset. Así el resultado es mucho más fácil de llevar a un proyecto Godot, en vez de quedarse en una imagen conceptual bonita.