↓
iaen.es Diario de desarrollo Read in English

Gotic · 4 min de lectura

Una granja tipo Stardew Valley en 3D con Godot 4: cultivos, riego y gallinas

Labrar, plantar, regar y cosechar en 18 casillas, vender en la caja de envío y criar gallinas, caseras o salvajes. Así hice la Granja del Roble de Gotic, con los cultivos en unas 40 líneas.

#granja#animales#mods#godot#pruebas

Una granja tipo Stardew Valley en 3D con Godot 4: cultivos, riego y gallinas

El encargo que me hice era corto: «plantar y hacer germinar semillas tipo Stardew Valley pero en 3D, y gallinas que criar que pongan huevos, caseras o salvajes». El resultado es la Granja del Roble, un prado del oeste de la isla con un ramal de camino desde el de Poniente.

Al llegar, Rosa, la granjera, te da un puñado de semillas y unas monedas. El campo tiene 18 casillas y todo se hace con la misma tecla: R (o USAR en el móvil) sobre la casilla hace lo que toque, sea labrar, plantar, regar o cosechar. La regadera se llena en el pozo, T (SEMILLA) cambia lo que plantas y lo cosechado se vende en la caja de envío. Hay rábanos, zanahorias, trigo y calabazas, cada uno con cuatro fases que se ven en 3D.

Cómo está hecho

Las reglas viven en una clase sin nodos, cultivos.gd, como hice antes con las plantas de Huerto. Cada cultivo es una línea de datos:

"rabano": {"name": "Rábano", "seed": 5, "stage": 30.0, "water": 90.0, "yield": 1,
	"leaf": Color("5f9a3c"), "fruit": Color("d8475a")},

La decisión importante fue medir el tiempo en segundos de juego, no en días. Una casilla regada avanza mientras le dura el agua; seca, se para, pero no se muere. Así funciona igual con el ciclo de día y noche encendido o sin él. Un rábano madura con un solo riego en 90 s y una zanahoria necesita dos. Es más rápido que Stardew, y lo hice así a propósito.

var used := minf(seconds, float(plot["wet"]))
plot["wet"] = float(plot["wet"]) - used
plot["progress"] = minf(float(plot["progress"]) + used, Crops.total(plot["crop"]))

Esa misma función sirve para la app cerrada: al volver, lo regado crece lo que le quedaba de agua (como mucho 8 horas). Y cuando más tarde llegó el mod del tiempo, la lluvia riega el campo sin que la granja sepa que ese mod existe.

Corral de la granja con el gallinero, cinco gallinas, un pollito, el comedero y la incubadora
El corral: gallinero con seis nidos, comedero e incubadora

Las gallinas caseras se compran a Rosa, hasta seis. Con trigo en el comedero cada una pone un huevo cada 4 minutos. Si las acaricias les sube el cariño, y con todo el cariño unos 4 de cada 10 huevos salen dorados. En la incubadora, un huevo da un pollito a los 8 minutos, que es gallina a los 12.

Las salvajes viven en dos sitios del linde del bosque, a 60–70 m, con un nido escondido en la hierba. Si llegas corriendo (a menos de 7 m), huyen. Si vas despacio y con trigo, te siguen hasta el corral y se quedan como caseras.

El sitio de la granja lo busqué fuera del juego: un claro de 36 m con 2,6 m de desnivel donde cada casilla se aparta como mucho 0,24 m de su centro. El suelo labrado sigue al relieve, no es una caja plana. El ramal mide 239 m y se calculó con un A* sobre el relieve que se guarda como constantes.

Lo que salió mal

  • Las gallinas salvajes huían siempre, también yendo despacio, y todas las pruebas pasaban. Ninguna movía al jugador despacio a su lado. Lo destapó una mutación, y ahora la conducta se prueba en los dos sentidos: corriendo huye, despacio no.
  • Tras llenar la regadera, todas las casillas seguían diciendo «0/10». El aviso solo se rehacía al cambiar esa casilla. Ahora llenar y regar refrescan todas.
  • Un texto guardado en el campo de la incubadora se leía como 0 y dejaba un huevo a punto de nacer. Lo encontró la prueba de partida incoherente.
  • La suite creció tanto (cada partida de prueba carga todos los mods) que tests/run.sh tuvo que subir su tope a 480 s.

Medido en el PC: 842 comprobaciones correctas en un árbol limpio, 0 huevos dorados de 40 sin cariño y de 20 a 60 de 100 con todo el cariño (semilla fija). Coste de dibujo: 212 llamadas mirando el campo y 484 a pie a 1600×720.

Lo que falta por comprobar

Nada de esto se ha probado en un móvil: la exportación del APK fallaba en ese entorno. Los precios y los tiempos no los ha jugado nadie de verdad. Y las gallinas no tienen física, así que alguna salvaje puede quedarse pegada a un árbol del linde.

Más de Gotic →