Un pueblo en lo alto de la meseta: cómo comprobé en Godot que la cuesta se sube a pie
Altomira está a 58 m de altura, al final de 713 m de camino. Calculada en una rejilla, la cuesta parecía suave; medida metro a metro, rozaba el límite de lo que el personaje puede subir.

Altomira es el pueblo al que más cuesta llegar. Está en lo alto de la meseta del este, a 58 m de altura, y su camino es el más largo de la isla: 713 m desde el arco de Brumacosta, subiendo por el interior. Al llegar ves el arco con el nombre en violeta y, detrás de las casas, la torre vigía de piedra con almenas y una bandera amarilla. Arriba arde un brasero que se ve hasta a 600 m. Mara, la vigía, dice que desde la torre se ve la isla entera. Teo, el cabrero, avisa de que la subida es larga, pero el camino va «por donde las cabras pueden». Y si llevas prisa, en Brumacosta hay una escoba que vuela.
Cómo está hecho
El pueblo sale del constructor común con "landmark": "tower". La torre tiene colisión: se puede rodear y, con la escoba, aterrizar encima. Lo difícil no fue la torre, sino asegurarme de que se puede llegar andando.
El personaje sube laderas de hasta 46°, que en el juego es una pendiente de 0,305 (Island.slope_at). El camino a la meseta se calculó fuera del juego sobre el relieve y quedó guardado en el mod como una lista de 35 puntos. Pero que una lista de puntos «sea transitable» no se puede dar por hecho, así que la comprobación tiene dos partes:
- Metro a metro. La prueba recorre cada tramo del camino en pasos de un metro y apunta la altura mínima (no puede pisar agua) y la pendiente máxima, que tiene que quedar en 0,29 o menos. Dejé ese margen hasta 0,305 porque entre dos muestras el relieve puede apretar un poco más.
- Con física. Busca el punto más empinado de todo el camino, pone al personaje 10 m más abajo y lo empuja cuesta arriba con el motor de física de verdad hasta 10 m más arriba. Si en 360 pasos no se ha acercado a menos de 1,5 m del objetivo, falla.
for frame in range(360):
var direction: Vector3 = goal - main.player.position
closest = minf(closest, Vector2(direction.x, direction.z).length())
if closest < 1.5:
break
main.player.move_input = Vector2(direction.x, -direction.z).normalized()
await t.physics_frame
Las dos comprobaciones viven en tests/village_checks.gd y las usan los tres pueblos nuevos, pero solo en Altomira se ponen serias: Caleta no pasa de 0,05 y Vega de Poniente, de 0,09. La cuesta de la meseta marca 0,28, a un suspiro del límite del jugador, y la sube con física.
Lo que salió mal
El camino se buscó en una rejilla de 4 m, y en esa rejilla la subida a la meseta daba una pendiente de 0,21, holgada. Al recorrerla metro a metro salió 0,28. Entre dos puntos de la rejilla el relieve puede ser bastante más empinado que en los propios puntos, y la rejilla no lo ve. Si me hubiera fiado de ella, habría creído que tenía margen de sobra, cuando en realidad el tramo es un 33 % más empinado y está a un paso del límite. Por eso la prueba no mira los puntos del camino, sino todo lo que hay entre ellos.
La torre tiene su propia prueba: un rayo lanzado desde arriba tiene que chocar con ella a más de 11 m del suelo, para confirmar que es sólida y más alta que las casas.
Lo que falta por comprobar
Esa cuesta solo la ha subido el personaje empujado por una prueba, nunca un pulgar en el joystick. Con dedos de verdad, en una pantalla táctil, no sé si 713 m de subida se hacen largos o si el tramo de 0,28 se atasca. Los FPS con este pueblo en el móvil están sin medir: el APK llegó a instalarse, pero el teléfono estaba bloqueado. Esta captura costó 323 llamadas de dibujo y unos 151 000 triángulos en el PC.