↓
iaen.es Diario de desarrollo Read in English

Gotic · 3 min de lectura

Minijuego de pesca de una sola pulsación en Godot 4, con diez especies

Lanzar, clavar cuando pica y mantener pulsado para que la zona verde siga al pez. Diez especies según la hondura y la hora, y un pescador que te regala una caña mejor. Así lo hice.

#minijuegos#mods#godot#pruebas

Minijuego de pesca de una sola pulsación en Godot 4, con diez especies

En el muelle de Caleta Salobre espera Abel, un viejo pescador, que te da una caña. Mirando al agua, G (PESCAR en el móvil) lanza la boya hacia donde mira la cámara. Pasa un rato, la boya se hunde, suena y vibra, y tienes 1,3 segundos para pulsar otra vez y clavar. Entonces empieza la pelea: mantienes pulsado para subir la zona verde, sueltas para dejarla caer, y mientras el pez está dentro se llena la barra de captura.

El jugador en la punta del muelle de Caleta con la caña, mirando a la laguna, con la barca amarrada al lado
Desde la punta del muelle la boya cae en agua honda

Hay diez especies y alguna bota vieja. Qué pica depende de dónde cae la boya (la orilla, el agua honda de la punta del muelle o el mar abierto, que solo se alcanza desde la barca) y de la hora: de noche salen el pulpo y el calamar. Hablando con Abel se abre el cuaderno con cada especie y su récord de peso. Con 3 especies te regala una caña mejor; con 6, un sombrero; con las 10, un trofeo en el muelle.

Cómo está hecho

Como en la granja, las reglas van en una clase sin nodos (peces.gd): cada especie es un diccionario con sus zonas, su hora, su dificultad del 1 al 5, lo que pica respecto a las demás y su peso. La zona sale solo de la hondura donde cae la boya: menos de 1,5 m es orilla y más de 12 m, mar abierto.

El minijuego es el de Stardew Valley reducido a números entre 0 y 1. El pez elige cada poco otro sitio de la barra, más lejos y más a menudo cuanto más fuerte es. Lo que decide la pelea son estas líneas:

var gain := GAIN / (1.0 + 0.15 * maxf(level - 1, 0))
fight["progress"] = float(fight["progress"]) + (gain if inside(fight) else -LOSS) * delta
if float(fight["progress"]) >= 1.0:
	return "won"
if float(fight["progress"]) <= 0.0:
	return "lost"

Un detalle importante: el pez nunca baja de 0,38. Sin pulsar, la zona verde se queda abajo y no lo alcanza, así que no se puede ganar sin jugar.

Como todo son cuentas, pude simularlo: 200 peleas por especie. Sin pulsar, nunca se saca un pez. Pulsando al azar, entre el 0,5 y el 16 %. Un jugador simulado que sigue al pez con 0,25 s de retraso saca 197–200 de 200, y con 0,4 s el atún baja a 184 (con la caña buena, 200). Una pelea dura de 3 a 12 s. Esto no son jugadores, son pilotos automáticos.

La pesca no conoce a la barca. Pregunta a lo que te lleve si allows_fishing(), y la barca dice que sí cuando está parada. Así cada mod prueba su lado del contrato.

Lo que salió mal

  • Pescando desde la barca te ponías de pie en el banco. Las posturas de pescar eran completas (cadera, rodillas, tobillos) y pisaban la de ir sentado. Lo vio la otra sesión de Claude que hacía la barca en paralelo, en una captura. Ahora la pesca guarda la postura que había y solo cambia tronco, cabeza y brazos.
  • Cargar la partida quitaba la postura de la barca, aunque no estuvieras pescando. Lo destapó una prueba con la barca guardada a bordo.
  • El trofeo se veía de canto al llegar desde el pueblo, y Abel miraba al norte. Lo vio una captura de cerca; ahora los dos miran hacia el pueblo y hay prueba.
  • Una prueba de «no se puede» probaba mal. «Con la caña en la mochila no se pesca» se comprobaba lejos del agua, donde tampoco se podía, y la mutación sobrevivió. Ahora se comprueba junto al muelle.

Medido en el PC: 47 comprobaciones propias (7 s). Coste de dibujo pescando en el muelle, 82–100 llamadas.

Lo que falta por comprobar

No se ha probado en un móvil: ni FPS ni mantener PESCAR con un dedo de verdad. Los sonidos (lanzar, chapoteo, picada) se generaron por código y se midieron, pero no se han escuchado. El equilibrio de la pesca está puesto con simulaciones, no con jugadores. Y pescar desde la barca solo se probó junto una vez, fuera de la suite.

Más de Gotic →