11 enero 2026

Asignación de datos a Tiles en Godot

Portada del artículo
Es muy habitual recurrir a Tilemaps para dar forma a juegos 2D. La sencillez que ofrecen los hacen ideales a la hora de darle forma a un escenario de estética retro.

¿Para que podemos necesitar asociarle datos a un tile? Por múltiples razones. Por ejemplo, supongamos que estemos usando un Tilemap para conformar el mapa de un juego en perspectiva cenital. En ese caso, es probable que queramos añadirle un valor de "resistencia al avance" a los diferentes tiles, de manera que nuestro personaje se mueva más lento en los tiles que representen una ciénaga, más rápido en los tiles que representen un camino, y que no pueda travesar los tiles que muestren piedras infranqueables.

En un artículo anterior, expliqué como asociar este valor a los Tiles que utilices en Unity, pero me he dado cuenta de que no lo expliqué para Godot. Vamos a resolverlo en este artículo.

Imagina tener un escenario creado a base varios TileMapLayer. En el ejemplo de la captura he usado tres TileMapLayer: uno para definir los límites del escenario (WallsTileMapLayer), otro para definir los obstáculos interiores (InteriorObstaclesMapLayer) y otro para las zonas transitables (GroundTileMapLayer). En el de las zonas transitables he colocado todas las baldosas por las que pueden deambular mis agentes, si bien algunas baldosas deben suponer un coste de transito diferente a otras. 

Mi escenario de ejemplo
Mi escenario de ejemplo

Para reflejar los distintos costes de las baldosas, podemos asociar datos a las capas de datos personalizados (Custom Data Layers) del TileSet utilizado en los TileMaps. 

Para empezar, tienes que dar de alta los distintos tipos de datos dentro del TileSet. Dentro del inspector de cualquiera de los TileMaps tienes que extender el recurso del TileSet. Al hacerlo verás que tiene una sección denominada "Custom Data Layers". Si la extiendes podrás ver los tipos de datos asociados a cada baldosa, y añadir otros nuevos con el botón "Add element". En la captura tienes los datos que he asociado a mis baldosas.

Asociación de datos personalizados a un TileSet
Asociación de datos personalizados a un TileSet

Puedes ver que he asociado dos tipos de datos: un booleano definiendo si la baldosa constituye un obstáculo (aunque en mi ejemplo no lo he llegado a usar) y un float definiendo el coste de transitar sobre la baldosa.

Definidos los tipos de datos personalizados que se asocian con las baldosas, tendremos que definir el valor que tienen en cada baldosa.

Cuando selecciones un TileMapLayer en la jerarquía, verás que en el borde inferior del editor te aparecerá una pestaña de TileSet. Al seleccionarla verás que te aparecerán tres secciones para configurar el TileSet: "Setup", "Select" y "Paint". Podemos usar las dos últimas para asignarle valores a los datos personalizados.

En la sección "Select" puedes seleccionar baldosas concretas. Al hacerlo, te aparecerán varias secciones para configurar. Una de ellas es "Custom Data". Al ampliarla puedes ver los distintos datos personalizados y asignarle valores. Recuerda que en los campos numéricos y de texto tienes que pulsar la tecla enter para que el cambio se aplique de manera efectiva.

Configuración de datos personalizados en la sección "Select" de la pestaña "Tileset"
Configuración de datos personalizados en la sección "Select" de la pestaña "Tileset"

Puedes hacer la misma operación de una manera más cómoda desde la pestaña "Paint". Al seleccionarla, te aparecerá un combo en el que elegir el dato al que quieres darle valor, Una vez elegido el tipo de dato, debes meter el valor que quieres asignar en el campo de texto, a partir de ese momento cualquier baldosa que selecciones en el TileSet adoptará dicho valor. Esta opción es ideal para aplicar el mismo valor rápidamente a múltiples baldosas.

Configuración de datos personalizados en la sección "Paint" de la pestaña "Tileset"

Con esto, las baldosas portarán estos datos a las ubicaciones donde las sitúes.

A continuación, y a modo de ejemplo, tienes el método que he utilizado para recuperar el coste de la baldosa asociada a una determinada posición.

Método para recuperar el valor del coste asociado a la baldosa
Método para recuperar el valor del coste asociado a la baldosa

Todo TileMapLayer tiene un método LocalToMap() que te permite pasar una posición a las coordenadas de la baldosa que abarca dicha posición. He usado dicho método en la línea 188. Sin embargo, fíjate en que la posición no puede ser global, sino relativa al TileMapLayer. Por ese motivo he recurrido a la llamada a ToLocal() de la línea 189, con la que he pasado una posición global a otra relativa al TileMapLayer.

Con las coordenadas devueltas por LocalToMap() podemos llamar a GetCellTileData() (línea 190) para recuperar los datos asociados a la baldosa de esa posición. El tipo devuelto (TileData) es un paquete que aglutina todos los datos personalizados. Por eso, para recuperar el dato concreto que nos interese hay que llamar a su método GetCustomData() y hacer casting al tipo que sabemos que tiene ese dato. Ten cuidado porque a ese método hay que pasarle el nombre del dato que queremos y es fácil equivocarse al teclearlo.

Y eso es todo. Con eso ya tienes todo lo que necesitas para asociar datos a tus baldosas y recuperarlos luego dependiendo de la baldosa que ocupe cada posición. Lo que hagas luego con esos datos ya es cosa tuya.

14 diciembre 2025

Análisis del libro "Game Design Workshop" de Tracy Fullerton

Portada del libroHay muchas maneras de entrar en el desarrollo de videojuegos. Todos lo hacemos desde nuestro placer por jugar, pero unos tenemos un trasfondo técnico y entramos directamente a programar con un engine, otros se meten después de hacer sus pinitos en el mundo del modding o de la creación de niveles para un juego específico y otros incluso se meten desde el mundo de los juegos físicos en tablero. 

Este libro es para todos ellos porque parte del concepto más abstracto de lo que llamamos juego y, si bien lo acaba concretando en un videojuego, se centra en el proceso creativo de generar ideas, encontrar las más prometedoras, probarlas con un prototipo que no tiene por qué ser como su forma final, iniciar un proceso iterativo de refinado hasta dar con algo genuinamente divertido por su concepto en sí (y no por su implementación) y, sólo entonces, empezar su desarrollo. Y es que el libro no empieza a tratar lo que conocemos por desarrollo hasta su tercer tercio, e incluso entonces no trata la parte técnica del desarrollo, en este libro no se ve ni una línea de código, sino su parte de planificación y gestión de la labor de un grupos de personas.

El libro adopta el punto de vista del diseñador de videojuegos. Si bien es un rol muy específico dentro de un grupo de desarrollo de videojuegos, se trata del que tiene un papel más transversal, como el libro se encarga de explicar, y por tanto cuenta con más visibilidad de todo el proceso, de ahí su importancia.

Los dos primeros tercios del libro se encargan de explicar el rol del diseñador de videojuegos; qué entendemos por juego; cuales son sus elementos fundamentales; qué elementos los enriquecen para darles el carácter que queremos; cuales son las dinámicas de juego más habituales según ese carácter; cómo podemos mantener el interés de los jugadores conforme pasa el tiempo; y cómo podemos mantener el juego equilibrado para evitar la frustración del jugador o, peor, su aburrimiento. Luego pasa a cómo filtrar y refinar las ideas de juegos que tengamos, dándole muchísima importancia (y capítulos) al proceso de prototipado y prueba de esos prototipos con jugadores reales (al margen del diseñador). Prueba del enfoque eminentemente "meta" del libro es la insistencia del libro en que los prototipos probados empiecen siendo físicos, en papel y cartón incluso, desde mucho antes de hacer el primer prototipo digital. Ese enfoque de evitar los prototipos digitales, hasta muy avanzado el proceso, puede resultar chocante para los que disfrutamos escribiendo líneas de código, pero el autor se encarga de razonar dicho enfoque de una manera muy convincente y realmente refrescante.

El último tercio es el que trata el desarrollo propiamente dicho, pero con un enfoque "alejado del teclado". Aquí, el libro trata de ponerte en la piel de un gestor de equipo que tiene que coordinar a multiples especialistas para dar forma a un juego que se pueda vender. Todo el libro tiene un enfoque muy realista, pero aquí es donde más se nota. El autor hace un esfuerzo notable en transmitirte el día a día de un estudio de desarrollo de videojuegos, tanto en sus labores internas cotidianas de creación del juego, como en sus interacciones con actores externos clave para su prueba, financiación y distribución, como son los testers o las casas publicadoras (publishers). Para ello, te explica cómo estructurar los equipos de desarrollo, qué roles son los habituales y cómo se puede relacionar entre sí de una manera eficiente y sana. Luego te explica cómo pueden ayudar las metodologías ágiles a humanizar el desarrollo y mejorar su producto. Me ha gustado mucho cómo te explica el funcionamiento del mercado del videojuego y te mentaliza sobre cómo aproximarte a una publicadora para que esta elija tu juego para financiarlo. Llega incluso a hablar sobre cómo suelen ser los contratos típicos entre publicadoras y equipos de desarrollo, para que entiendas cómo funciona el sistema de pago por hitos durante el desarrollo, y luego el posterior de royalties tras la publicación del juego. Es un interesantísimo baño de realidad, que sirve para desmitificar el mundo del desarrollo del videojuego, pero al mismo tiempo da una medida del enorme esfuerzo que hay detrás de un juego que consigue venderse.

Todo lo anterior ya tiene un valor enorme, pero además el libro está aderezado con los testimonios de muchos diseñadores de juegos. Te encontrarás con que más de uno habrá hecho juegos que hayas disfrutado. En esos testimonios, cada uno de ellos te cuenta cómo se introdujo en el mundillo del diseño y desarrollos de videojuegos, que es lo que les atrae de él y cual es el proceso creativo que siguen a la hora de darle forma a un juego. Leerlos, humaniza el papel del diseñador, pone rostro a las personas que están detrás de los juegos que más has disfrutado y te permite conocer el camino vital que han seguido hasta llegar al punto de poder crear los juegos que les han hecho famosos. Muchos de esos caminos vitales no han sido fáciles. Más de uno llega al punto de recomendarte que no te metas en el mundillo si tienes vocación o pasión clara, ya que no es una profesión fácil ni que te haga rico. Pero todos ellos confirman que si realmente quieres hacer juegos, y estás dispuesto a hacer el esfuerzo y los sacrificios, se trata de una profesión que puede llenarte plenamente.

Por tanto, si no sólo te gustan los juegos, sino como se hace, este es tu libro. Es un refrescante baño de realidad, que desmitifica, humaniza y reivindica el esfuerzo creativo que hay detrás de lo que disfrutas en to PC o consola. Un  libro realmente recomendable.