Conceptos clave: cómo maneja Construct el audio
En Construct, el audio se gestiona principalmente con el plugin Audio (proyecto) y se controla desde el sistema de eventos. La idea central es separar el sonido en capas lógicas: música (ambiente/estado), efectos (acciones puntuales) y, si lo necesitas, UI (clics, confirmaciones). Para evitar caos y saturación, conviene definir: canales/etiquetas (tags), volúmenes por categoría, bucles para música/ambiente y reglas anti-superposición para efectos repetidos.
Formatos recomendados y buenas prácticas
- Música: OGG (desktop) y/o M4A/AAC (móvil). Exporta en bucle limpio si va a repetirse.
- Efectos: OGG/WAV cortos. Mantén duración breve y normaliza niveles para que no “griten”.
- Nombres consistentes:
mus_menu,mus_level1,sfx_jump,sfx_hit,sfx_pickup,ui_click. - Preload: si notas cortes al primer uso, considera precargar o reproducir una vez en silencio al inicio (según plataforma/ajustes).
Importar audio al proyecto
Paso a paso
Abre el panel Project y localiza la carpeta Sounds / Music (según tu organización).
Arrastra tus archivos de audio al proyecto o usa Import.
Verifica que cada recurso tenga un nombre claro (renómbralo si hace falta).
Si apuntas a web y móvil, importa variantes (por ejemplo OGG + M4A) para el mismo sonido si tu flujo lo contempla.
Continúa en nuestra aplicación.- Escuche el audio con la pantalla apagada.
- Obtenga un certificado al finalizar.
- ¡Más de 5000 cursos para que explores!
Descargar la aplicación
Consejo: mantén la música en una carpeta separada de los efectos para no confundirte al asignar volúmenes y reglas.
Canales, etiquetas (tags) y volúmenes por categoría
Construct permite controlar el audio por tag (etiqueta). Esto es muy útil para ajustar volumen y hacer fades por grupos sin tocar cada sonido individual.
Definir una convención de tags
- Tag
music: toda la música (menú, nivel, derrota). - Tag
sfx: efectos del juego (salto, golpe, recoger). - Tag
ui: sonidos de interfaz (clic, hover, confirmar).
Eventos base para volúmenes
Usa variables globales para guardar preferencias del jugador:
Global number volMusic = 0.8 // 0 a 1 (o 0 a 100 si prefieres, pero sé consistente) Global number volSFX = 0.9 Global number volUI = 0.8 Global boolean isMuted = falseLuego, al iniciar un layout o al cargar partida, aplica los volúmenes:
System: On start of layout -> Audio: Set volume (tag = "music") to (isMuted ? 0 : volMusic) -> Audio: Set volume (tag = "sfx") to (isMuted ? 0 : volSFX) -> Audio: Set volume (tag = "ui") to (isMuted ? 0 : volUI)Si tu Construct no soporta operador ternario en expresiones, hazlo con dos eventos: uno para isMuted = true y otro para false.
Bucles y música por estados (menú, nivel, derrota)
La música suele ser persistente y cambia según el estado del juego. La clave es: no iniciar la misma pista si ya está sonando, y hacer transiciones suaves con fade in/out.
Reproducir música de menú
System: On start of layout (Menu) -> Audio: Stop (tag "music") (fade-out 0.5s) -> Audio: Play ("mus_menu") looping, tag "music", volume 1 -> Audio: Fade volume (tag "music") to (isMuted ? 0 : volMusic) over 0.5sCambiar a música de nivel
Cuando entras al layout del nivel:
System: On start of layout (Level) -> Audio: Stop (tag "music") (fade-out 0.5s) -> Audio: Play ("mus_level1") looping, tag "music" -> Audio: Fade volume (tag "music") to (isMuted ? 0 : volMusic) over 0.5sMúsica de derrota
Cuando el estado del juego cambia a derrota (por ejemplo, variable global/instancia GameState):
System: On game over (o cuando detectes derrota) -> Audio: Stop (tag "music") (fade-out 0.3s) -> Audio: Play ("mus_defeat") looping, tag "music" -> Audio: Fade volume (tag "music") to (isMuted ? 0 : volMusic) over 0.3sSi mus_defeat no debe repetirse, desactiva el loop y, si quieres, deja un ambiente suave después con otra pista.
Efectos sonoros disparados por eventos (salto, golpe, recoger)
Los efectos son respuestas inmediatas a acciones. Lo importante es dispararlos en el evento correcto (cuando la acción ocurre) y controlar la repetición para que no se apilen.
Salto
Dispara el sonido cuando el salto se ejecuta (no cuando el botón se presiona, si el salto puede fallar):
Player: On jump (o condición equivalente de tu lógica) -> Audio: Play ("sfx_jump") (not looping), tag "sfx", volume 1Golpe
Si hay golpes rápidos, añade una regla anti-spam (cooldown):
Global number tHitCooldown = 0System: Every tick -> set tHitCooldown to max(0, tHitCooldown - dt)Enemy: On hit by PlayerAttack AND tHitCooldown = 0 -> Audio: Play ("sfx_hit"), tag "sfx" -> set tHitCooldown to 0.08Esto evita que 10 colisiones en el mismo frame generen 10 sonidos.
Recoger objeto
Si el jugador puede recoger varios ítems seguidos, puedes limitar la superposición con Stop then play o con un cooldown corto:
Item: On collected -> Audio: Stop ("sfx_pickup") -> Audio: Play ("sfx_pickup"), tag "sfx"Este patrón hace que el sonido se “reinicie” en lugar de apilarse. Úsalo solo si el efecto es muy corto y quieres claridad.
Sincronizar audio con acciones y animaciones
Para que el sonido se sienta “pegado” a la acción, sincroniza con el momento exacto del evento: inicio de salto, frame de impacto, momento de recoger. Si tu animación tiene un frame claro de impacto, puedes disparar el sonido cuando la animación llega a ese frame (o cuando cambia a un frame específico), en lugar de hacerlo al inicio del ataque.
Ejemplo: sonido de golpe en el frame de impacto
Player: Animation name = "attack" AND Animation frame = 3 AND Trigger once -> Audio: Play ("sfx_hit"), tag "sfx"El Trigger once evita que el sonido se repita mientras el frame se mantiene.
Control de volumen y mute desde la UI
La UI puede ofrecer: mute general y sliders (o botones +/-) para música y efectos. La clave es que el cambio se aplique al instante y se guarde (por ejemplo en Local Storage) para futuras sesiones.
Estructura recomendada
- Botón Mute (toggle).
- Slider o botones para Música (0–1 o 0–100).
- Slider o botones para SFX.
Eventos típicos
UI_MuteButton: On clicked -> set isMuted to NOT isMuted -> Audio: Set volume (tag "music") to (isMuted ? 0 : volMusic) -> Audio: Set volume (tag "sfx") to (isMuted ? 0 : volSFX) -> Audio: Set volume (tag "ui") to (isMuted ? 0 : volUI)UI_MusicSlider: On value changed -> set volMusic to Slider.Value -> Audio: Set volume (tag "music") to (isMuted ? 0 : volMusic)UI_SFXSlider: On value changed -> set volSFX to Slider.Value -> Audio: Set volume (tag "sfx") to (isMuted ? 0 : volSFX)Para feedback, puedes reproducir un sonido de UI al mover sliders, pero con limitación de frecuencia (por ejemplo, cada 0.1s) para que no suene como una ametralladora.
Guardar preferencias (opcional pero recomendado)
Si usas Local Storage, guarda al cambiar valores y carga al iniciar:
Al cambiar volMusic/volSFX/isMuted -> LocalStorage: Set item ("volMusic", volMusic) ...System: On start of layout -> LocalStorage: Get item ("volMusic") ... (y aplicar si existe)Transiciones suaves: fade in/out y cambios de escena
Las transiciones de música se sienten profesionales cuando evitas cortes bruscos. Dos patrones útiles: crossfade (solapar dos pistas) o fade-out + fade-in (más simple). Si tu proyecto no necesita crossfade real, el segundo suele ser suficiente.
Patrón simple: fade-out + cambiar + fade-in
| Momento | Acción |
|---|---|
| Antes de cambiar de estado | Fade-out de tag music (0.3–1.0s) |
| Al entrar al nuevo estado/layout | Play nueva pista (loop) con volumen bajo o 0 |
| Inmediatamente después | Fade-in hasta volMusic |
Evitar “doble música”
Regla: antes de reproducir música, detén todo lo que tenga el tag music o verifica si ya está sonando. Así evitas que se acumulen pistas por error.
Reglas para evitar superposición excesiva de sonidos repetidos
En juegos con muchas colisiones o acciones rápidas, los efectos pueden saturar. Aplica una o varias de estas reglas:
- Cooldown por tipo de sonido: no permitir el mismo SFX más de X veces por segundo.
- Stop-then-play: reiniciar el mismo sonido en lugar de apilarlo (útil en pickups).
- Limitar instancias: si el sonido ya está reproduciéndose, no lo vuelvas a disparar (o baja volumen).
- Variantes: 2–4 versiones del mismo SFX y elegir aleatoriamente reduce fatiga auditiva.
Ejemplo: cooldown por sonido (tabla de tiempos)
| SFX | Cooldown sugerido | Motivo |
|---|---|---|
sfx_jump | 0.05–0.10s | Evita dobles disparos por eventos duplicados |
sfx_hit | 0.08–0.15s | Golpes múltiples en colisiones continuas |
sfx_pickup | 0.03–0.08s | Recogidas en cadena |
Actividad guiada: escena con paisaje sonoro completo
Objetivo: construir una escena que incluya música por estado (menú, nivel, derrota), efectos sincronizados (salto, golpe, recoger), control de volumen/mute desde UI, transiciones suaves (fade) y reglas anti-superposición.
1) Preparación de recursos
- Importa:
mus_menu,mus_level1,mus_defeat. - Importa:
sfx_jump,sfx_hit,sfx_pickup,ui_click. - Decide tags:
music,sfx,ui.
2) Variables globales de audio
volMusic = 0.8 volSFX = 0.9 volUI = 0.8 isMuted = falseAplica volúmenes al iniciar cada layout (o en un grupo de eventos global reutilizable).
3) Música por estado con fades
- Menu layout: detener tag
musiccon fade-out, reproducirmus_menuen loop, fade-in. - Level layout: mismo patrón con
mus_level1. - Derrota: al detectar derrota, stop tag
musiccon fade-out, playmus_defeat, fade-in.
4) Efectos sincronizados
- Salto: evento exacto cuando el salto ocurre → play
sfx_jumptagsfx. - Golpe: en el frame de impacto o en el evento de daño → play
sfx_hitcon cooldown. - Recoger: al recoger → stop-then-play
sfx_pickupo cooldown corto.
5) UI de volumen y mute
- Botón toggle para
isMutedque aplique volumen 0 a tagsmusic,sfx,ui. - Slider de música que actualice
volMusicy aplique a tagmusic. - Slider de SFX que actualice
volSFXy aplique a tagsfx. - Opcional: al hacer clic en botones, reproducir
ui_clickcon tagui.
6) Regla anti-superposición (obligatoria)
Implementa al menos una regla para cada SFX repetible:
- Hit: cooldown global o por enemigo.
- Pickup: stop-then-play o cooldown.
- Jump: asegurar un solo disparo por salto (trigger once / evento correcto).
7) Checklist de prueba
- Al entrar a menú, suena
mus_menuy no se duplica si vuelves al menú. - Al iniciar nivel, la música cambia con fade (sin corte brusco).
- Al perder, la música cambia a derrota con fade.
- Salto, golpe y recoger suenan sincronizados y no se apilan excesivamente.
- Mute silencia todo; al desmutear, vuelven los volúmenes configurados.
- Los sliders ajustan en tiempo real sin necesidad de reiniciar.