Fiesta nocturna con baile al ritmo y fuegos artificiales en Godot 4
Las noches pares, Brumacosta cuelga farolillos, suena la música y se baila alrededor de la hoguera al ritmo del tambor. A medianoche, fuegos artificiales que tuve que rehacer porque no se dibujaban.

Con el día y la noche ya funcionando, Brumacosta se merecía una fiesta. Las noches de los días pares, de 21:00 a 01:00, el pueblo cuelga tres guirnaldas de farolillos de colores sobre la calle, seis bailarines giran en corro alrededor de la hoguera y, a menos de 70 m, suena la música de la fiesta en lugar de la de siempre. A medianoche, fuegos artificiales.
Junto al fuego, R (USAR en el móvil) te une al baile. Un aro se va cerrando sobre un círculo y suena el tambor: pulsa SALTAR cuando se cierre. Son dieciséis pasos. A tiempo justo valen 2 puntos y casi a tiempo, 1. Con 20 de 32 los vecinos te regalan un pañuelo; con 28, además, se lanzan tres cohetes. La primera fiesta es la noche del día 2, unos 28 minutos de juego, así que el cartel del arco dice cuándo es y deja esperarla adelantando el reloj.
Cómo está hecho
Cuándo hay fiesta es una función de dos líneas, sin nodos, fácil de probar:
static func is_fiesta(day: int, hour: float) -> bool:
return day % 2 == 0 and (hour >= FROM or hour < TO)
Mientras bailas, la fiesta hace de mover del jugador, como la barca o la escoba: no andas, y mover el joystick te saca del baile. La música va a 100 pulsos por minuto y cada paso cae a 0,6 s del anterior. Al pulsar, se busca el paso sin juzgar que esté más cerca de ahora:
if nearest < 0 or gap > GOOD:
feedback.text = "fuera de ritmo"
return
if gap <= PERFECT:
judged[nearest] = "perfecto"
score += 2
feedback.text = "¡PERFECTO!"
else:
judged[nearest] = "bien"
score += 1
feedback.text = "BIEN"
PERFECT son 0,1 s y GOOD, 0,2. Un paso que pasa sin pulsar se marca como fallo.
Los bailarines no son los vecinos: el pueblo ya los sienta junto al fuego de noche, así que puse seis personas nuevas. Los fuegos van de 00:00 a 00:30, un cohete cada 1 a 2,4 s.

Lo que salió mal
- Los fuegos artificiales no se veían. Las palmeras eran un
CPUParticles3Dde un solo disparo (one_shot,explosiveness1). En una escena aparte se dibujaban; con emisión continua, también; dentro del juego, no. Ahora cada palmera es unMultiMeshanimado por el propio mod, con su caja de dibujo (custom_aabb), y una prueba comprueba que esa caja abarca hasta la última chispa. La pista para la próxima vez: si algo no aparece, mira el número de objetos dibujados en la captura; si no sube, el motor ni lo intenta. - El indicador del ritmo tapaba al personaje. Lo vio una captura; ahora va a su derecha.
- Una prueba de otra parte del juego falló una vez: la del terreno, que espera a los hilos de carga, con la máquina cargada por otras sesiones. Sola y en la pasada siguiente, bien. Antes de buscar el fallo en tu cambio, mira la carga.
Mutaciones vistas fallar: olvidar que pasada la medianoche sigue la fiesta, puntuar todo como perfecto, no salir del baile con el joystick, y que la música de siempre no vuelva. Con la fiesta, la suite llegó a 1073 comprobaciones correctas.
Lo que falta por comprobar
Nada en el móvil: ni el coste de la fiesta (seis bailarines más) y los fuegos, ni pulsar SALTAR al ritmo con un dedo de verdad. La música, el tambor y los cohetes se generaron por código y se midieron, pero no se han escuchado. Y el ritmo del baile está puesto con cuentas, no con jugadores.