Audio, música y efectos sonoros integrados en Construct

Capítulo 8

Tiempo estimado de lectura: 9 minutos

+ Ejercicio

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

  1. Abre el panel Project y localiza la carpeta Sounds / Music (según tu organización).

  2. Arrastra tus archivos de audio al proyecto o usa Import.

  3. Verifica que cada recurso tenga un nombre claro (renómbralo si hace falta).

  4. 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!
    O continúa leyendo más abajo...
    Download App

    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 = false

Luego, 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.5s

Cambiar 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.5s

Mú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.3s

Si 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 1

Golpe

Si hay golpes rápidos, añade una regla anti-spam (cooldown):

Global number tHitCooldown = 0
System: 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.08

Esto 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

MomentoAcción
Antes de cambiar de estadoFade-out de tag music (0.3–1.0s)
Al entrar al nuevo estado/layoutPlay nueva pista (loop) con volumen bajo o 0
Inmediatamente despuésFade-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)

SFXCooldown sugeridoMotivo
sfx_jump0.05–0.10sEvita dobles disparos por eventos duplicados
sfx_hit0.08–0.15sGolpes múltiples en colisiones continuas
sfx_pickup0.03–0.08sRecogidas 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 = false

Aplica 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 music con fade-out, reproducir mus_menu en loop, fade-in.
  • Level layout: mismo patrón con mus_level1.
  • Derrota: al detectar derrota, stop tag music con fade-out, play mus_defeat, fade-in.

4) Efectos sincronizados

  • Salto: evento exacto cuando el salto ocurre → play sfx_jump tag sfx.
  • Golpe: en el frame de impacto o en el evento de daño → play sfx_hit con cooldown.
  • Recoger: al recoger → stop-then-play sfx_pickup o cooldown corto.

5) UI de volumen y mute

  • Botón toggle para isMuted que aplique volumen 0 a tags music, sfx, ui.
  • Slider de música que actualice volMusic y aplique a tag music.
  • Slider de SFX que actualice volSFX y aplique a tag sfx.
  • Opcional: al hacer clic en botones, reproducir ui_click con tag ui.

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_menu y 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.

Ahora responde el ejercicio sobre el contenido:

¿Cuál es la forma recomendada de evitar que se acumulen varias pistas de música al cambiar de menú a nivel o a derrota, manteniendo una transición suave?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Para evitar la “doble música”, conviene parar cualquier sonido con el tag music (con fade-out) antes de iniciar la nueva pista y luego hacer fade-in hasta el volumen de música configurado.

Siguiente capítulo

Enemigos, IA básica y dificultad progresiva en Construct

Arrow Right Icon
Portada de libro electrónico gratuitaConstruct desde Cero: Aprende a Crear Juegos Sin Programar
80%

Construct desde Cero: Aprende a Crear Juegos Sin Programar

Nuevo curso

10 páginas

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.