Plugin y behavior para juegos musicales, beats, bajos, flechas, disparos, videos y locuras ritmicas varias
Hola chicos, ¿como estan?
Les traigo algo que personalmente me tiene bastante entusiasmado, porque abre una puerta bien entretenida para Construct 2: un sistema pensado para crear juegos musicales, juegos ritmicos, juegos con beats, flechas, disparos sincronizados, objetos que se mueven al ritmo de la musica, videos de fondo sincronizados y mecanicas donde la musica no es solo decoracion, sino parte real del gameplay.
El sistema esta compuesto por dos partes principales:
NecroBeatSync -> Plugin principal de musica, beat, sincronizacion y video.
NecroRhythmMover -> Behavior para sprites que reaccionan al ritmo.
La gracia es que pueden trabajar juntos o separados. Puedes usar solamente NecroBeatSync para detectar beats y manejar eventos normales de Construct 2, o puedes usar NecroRhythmMover para que cualquier sprite se comporte como flecha, nota, enemigo ritmico, bala, plataforma, luz, bola saltarina o lo que se les ocurra.
La idea general es muy simple:
La musica suena.
El plugin detecta los bajos o beats.
Construct 2 recibe eventos.
Los sprites hacen cosas.
El jugador intenta seguir el ritmo.
Todos somos felices.
El sprite probablemente no.
¿Para que sirve?
Este sistema esta pensado para crear juegos y mecanicas como:
• Juegos tipo Guitar Hero o juegos de notas musicales.
• Juegos tipo Dance Dance Revolution o flechas que llegan a un punto de hit.
• Juegos de disparos al ritmo de la musica.
• Juegos de plataformas donde todo cambia por beat.
• Juegos tipo baile o coreografia usando video de fondo propio/local.
• Enemigos que atacan segun los bajos.
• Escenarios que pulsan, vibran, cambian color o lanzan particulas con la musica.
• Luces, camaras, plataformas, obstaculos y fondos sincronizados al ritmo.
• Prototipos locos donde el bajo manda mas que el programador.
Parte 1: NecroBeatSync
NecroBeatSync es el plugin principal. Es el encargado de cargar la musica, reproducirla, leer el tiempo de la cancion, analizar los bajos, generar beats, disparar eventos y manejar la sincronizacion general.
Carga de audio
La musica se puede usar de distintas formas:
• Audio importado directamente en Construct 2.
• Audio cargado por nombre desde la carpeta Sounds o Music.
• Audio cargado desde una URL directa.
• Audio local para pruebas y prototipos.
Lo recomendado para juegos ritmicos es trabajar con archivos propios o autorizados, por ejemplo .ogg, .m4a o .mp3 importados al proyecto. Esto permite que el plugin tenga control real sobre el tiempo, los bajos y la sincronizacion.
Deteccion de bajos en vivo
Una de las funciones centrales es detectar golpes de bajo en tiempo real. Se puede configurar el rango de frecuencias y la sensibilidad del detector.
Ejemplo de configuracion:
Bass range: 20 Hz a 260 Hz
Sensitivity: 1.01
Min gap: 120 ms
Min energy: 0.005
Cada vez que el plugin detecta un bajo fuerte, se dispara el evento:
NecroBeatSync -> On live bass beat
Y desde ahi puedes hacer practicamente cualquier cosa: mover sprites, disparar balas, hacer saltar una bola, cambiar opacidad, activar luces, hacer shake de camara o iniciar una fase del juego.
NecroBeatSync -> On live bass beat
-> Bola: Set X to Bola.X + 5
Resultado: cada beat mueve la bola 5 pixeles a la derecha. Simple, pero poderoso. Todo gran juego ritmico empieza con un sprite moviendose raro y alguien diciendo: "espera, esto puede ser un juego completo".
Beatmap y beats programados
Ademas del beat en vivo, el plugin puede trabajar con beatmaps. Esto es especialmente util para juegos ritmicos mas precisos, donde una flecha debe llegar exactamente al punto de golpe cuando suena el beat.
• Permite generar una lista de beats.
• Permite disparar eventos antes del beat con un tiempo de aproximacion.
• Permite saber en que segundo debe ocurrir cada golpe.
• Permite evaluar si el jugador presiono dentro de una ventana de tiempo correcta.
NecroBeatSync -> On beat approaching
-> Crear Flecha
-> Flecha recibe el TargetBeatTime
-> Flecha se mueve al punto de hit
Eventos por segundo y por numero de beat
Tambien se agregaron triggers para ejecutar acciones cuando la cancion llega a un segundo especifico o a un beat especifico.
NecroBeatSync -> On song second 10
-> Texto: Set text to "Ahora empieza lo bueno"
NecroBeatSync -> On scheduled beat number 4
-> Plataforma: Set angle to Plataforma.Angle + 90
NecroBeatSync -> On live beat number 4
-> Activar modo avance
Esto permite crear fases de cancion muy faciles de controlar:
Segundo 0 -> Intro
Segundo 10 -> Empiezan flechas
Segundo 30 -> Aparece jefe
Beat 4 -> Se activa avance
Cada 8 beats -> Cambio de patron
Video de fondo sincronizado
Otra funcion interesante es el modulo de video de fondo sincronizado. La idea es usar un video propio/local como fondo visual, pero dejar el audio bajo el control de NecroBeatSync.
video_fondo.mp4 -> Video visual, muteado
tema.ogg -> Audio real controlado por NecroBeatSync
Juego -> Construct 2 encima
El audio manda. El video obedece. Si lo hacemos al reves, despues las flechas llegan tarde, el jugador se enoja y el pobre plugin termina pagando la culpa.
Funciones de video disponibles:
• Load background video from URL.
• Load video by name.
• Set video muted.
• Set video opacity.
• Set video fit: cover, contain, stretch o original.
• Set video layer mode: behind canvas, over canvas, browser background o custom rectangle.
• Play video synced.
• Pause video, Stop video, Seek video y Sync video now.
• Show video, Hide video y Destroy video.
NecroBeatSync -> On video loaded
-> Set video muted
-> Set video fit cover
-> Set video layer mode behind canvas
-> Show video
Debug incluido
Para evitar adivinar que esta pasando, el plugin incluye texto de debug.
System -> Every tick
-> Text: Set text to NecroBeatSync.DebugText
El debug puede mostrar valores como:
Loaded: 1
Playing: 1
Time: 12.35
Energy: 0.042
Average: 0.030
Threshold: 0.035
LastBeat: 12.08
LiveBeatCount: 24
Esto ayuda bastante, porque todos sabemos que en Construct 2 hay dos tipos de bugs: el plugin no funciona, o el plugin si funciona pero uno puso mal el evento. El segundo sospechosamente pasa mas seguido.
Parte 2: NecroRhythmMover
NecroRhythmMover es un behavior para sprites. Mientras NecroBeatSync controla la musica y los beats, NecroRhythmMover ayuda a que los objetos reaccionen al ritmo de forma mas directa.
Se puede usar para:
• Flechas y notas musicales.
• Bolas o personajes que saltan con el beat.
• Enemigos que atacan en momentos ritmicos.
• Balas y disparos sincronizados.
• Luces, efectos, plataformas y obstaculos.
• Sprites que deben llegar justo a un punto de hit.
El behavior puede manejar cosas como movimiento hacia un punto objetivo, tiempo de llegada al beat, carriles o lanes, ventanas de input y resultados tipo:
PERFECT
GOOD
OK
MISS
Ejemplos de uso
Ejemplo 1: mover una bola 5 pixeles por cada beat live
NecroBeatSync -> On live bass beat
-> Bola: Set X to Bola.X + 5
Ejemplo 2: los 3 primeros beats saltan, desde el cuarto avanza
Global number BolaAvanza = 0
Mouse -> On any click
+ NecroBeatSync -> Is loaded
-> Set BolaAvanza = 0
-> NecroBeatSync: Reset timeline counters
-> NecroBeatSync: Play from 0 seconds
NecroBeatSync -> On live bass beat
+ NecroBeatSync.LiveBeatCount <= 3
-> Bola: Jump 32 px for 0.22 sec
NecroBeatSync -> On live beat number 4
-> Set BolaAvanza = 1
NecroBeatSync -> On live bass beat
+ BolaAvanza = 1
-> Bola: Set X to Bola.X + 5
Ejemplo 3: juego de flechas
NecroBeatSync -> On beat approaching
-> Crear Flecha
-> Flecha: Set lane
-> Flecha: Set target beat time
-> Flecha: Move to hit point
Keyboard -> On Left pressed
+ Flecha esta en lane izquierda
-> Flecha: Judge input
Ejemplo 4: shooter musical
NecroBeatSync -> On live bass beat
-> Player: Spawn Bala
NecroBeatSync -> On every 4 scheduled beats
-> Enemigo: Spawn BalaEspecial
NecroBeatSync -> On song second 60
-> Crear Boss
Ejemplo 5: plataforma musical
NecroBeatSync -> On live bass beat
-> Plataforma: Toggle visible
NecroBeatSync -> On every 4 scheduled beats
-> Pinchos: Set Y to Pinchos.Y - 32
Keyboard -> On Space pressed
+ Jugador esta dentro de ventana de hit
-> Player: Jump
Parametros importantes
Parametro Descripcion
Bass range Define las frecuencias que se consideraran bajos. Ejemplo: 20 a 260 Hz.
Live detector sensitivity Controla que tan sensible es el detector. Valores bajos detectan mas; valores altos detectan menos pero con mas filtro.
Min energy Evita que cualquier ruido pequeno sea contado como beat.
Min gap Tiempo minimo entre beats detectados para evitar duplicados del mismo golpe.
Sync offset ms Corrige desfases entre musica, juego, video y eventos.
Approach lead time Tiempo antes del beat en que aparece una nota o flecha.
Video sync tolerance Margen permitido antes de corregir el video al tiempo del audio.
Video offset Desfase visual del video respecto al audio.
Cierre para el foro
Asi que eso, chicos. La idea de este plugin y behavior es que puedan crear desde algo tan simple como "cada beat mueve una bola" hasta un juego de flechas completo con musica, video de fondo, hits sincronizados, efectos visuales y patrones por beat.
EMAIL:CONSTRUCT2@PREVFORM.CL
DEMO:https://necro-beat-sync.netlify.app/