↓
iaen.es Diario de desarrollo Read in English

Gotic · 4 min de lectura

Mapas del tesoro dibujados del relieve real en Godot 4: la búsqueda del capitán Brea

Una botella en la playa trae un pergamino con la costa, las curvas de nivel y una X. Cinco cofres, una brújula en trozos y un loro. Los mapas no se pintan a mano: salen del relieve de la isla.

#misiones#procedural#mundo#mods#godot

Mapas del tesoro dibujados del relieve real en Godot 4: la búsqueda del capitán Brea

La isla de Gotic tiene unos 1,8 km², y casi todo lo que había que hacer estaba junto a los pueblos. Quería una excusa para ir a los sitios donde no había nada, y la encontré en un pirata: el tesoro del capitán Brea.

En la orilla de la playa de salida hay una botella. Dentro, un mapa: un trozo de la isla dibujado como un pergamino, con la costa a tinta, curvas de nivel, manchas de bosque, una flecha al norte y una X roja, más una pista («Una piedra plantada en lo alto de un prado, al norte de la playa donde llegaste»). En cada sitio hay una señal (un menhir, un mojón, un árbol seco, un ancla, los restos de una barca) y tierra removida donde se cava con R (USAR en el móvil), quieto. Los cuatro primeros cofres guardan un trozo de brújula y el mapa siguiente. Con la brújula entera, una aguja arriba de la pantalla apunta al último, en el islote de arena frente a Caleta, al que se llega vadeando.

El jugador en un prado con Brea, un loro verde y rojo, sobre el hombro izquierdo
Brea, el loro del capitán, se te sube al hombro

Dentro del último está Brea, un loro que se te sube al hombro y de vez en cuando suelta un «¡Arrr!» o un «¡Galletas, galletas!».

Cómo está hecho

Los mapas no se dibujan a mano. Como la altura de la isla es una función de la posición, cada mapa lee 260 m del relieve de verdad alrededor del cofre y lo pinta píxel a píxel. El agua va en azul, más oscura cuanto más honda; la tierra, en ocre con una luz que sale de la pendiente. Las curvas de nivel salen de comparar cada punto con sus vecinos:

if floor(h / CONTOUR) != floor(right / CONTOUR) or floor(h / CONTOUR) != floor(down / CONTOUR):
	color = color.lerp(INK, 0.55)
if right < Island.SEA_LEVEL or down < Island.SEA_LEVEL:
	color = INK

Si entre un punto y el de al lado se cruza un múltiplo de 10 m, ahí va una curva. Si el vecino está bajo el mar, ahí va la costa. Un ruido encima envejece el papel y come los bordes.

Dos detalles para que no sea trivial: la X no va en el centro del trozo (cada mapa está desplazado unas decenas de metros), y el mapa grande del juego solo marca la zona, el centro del trozo, no la X. Hay que leer el pergamino y reconocer la costa o la colina.

Los cinco sitios los busqué fuera del juego: en tierra, casi llanos en 3 m alrededor, a más de 200 m entre sí, lejos de los claros de los demás mods y alcanzables a pie desde la salida (vadeando hasta 1,2 m).

Lo que salió mal

  • Los mapas daban un tirón. A 160 px tardaban unos 230 ms en el PC al abrir el cofre. Ahora se calculan a 80 px, se amplían sin suavizar (de ahí el aire pixelado) y se guardan: unos 70 ms la primera vez.
  • El primer cofre caía junto a las ruinas de las luciérnagas. La búsqueda de sitios había tomado coordenadas relativas a Brumacosta como si fueran del mundo. Lo encontró la prueba que mira los claros reales de los demás mods, y el sitio se movió.
  • La tapa del cofre abierto caía delante, tirada en el suelo. Giraba sobre la bisagra de atrás con el ángulo cambiado de signo. Se vio en una captura de cerca; ahora una prueba mira que el borde de la tapa queda por encima del cofre.

Medido en el PC: 30 comprobaciones propias. Mutaciones vistas fallar: cavar en cualquier cofre, seguir cavando al alejarse, la aguja al revés, un loro que no se va al apagar el mod. Coste de dibujo en los sitios del tesoro: 55–182 llamadas.

Lo que falta por comprobar

La búsqueda entera no se ha recorrido a pie con la física: la prueba lleva al jugador a cada sitio, y que se pueda llegar sale de un recorrido calculado fuera del juego. El loro no tiene física, va pegado al hombro. Los sonidos (cavar, el cofre, el loro) se generaron y se midieron, pero no se han escuchado. Y nada se ha probado en un móvil.

Más de Gotic →