At 30% health the player presses heal, hears a soft click, presses again, and dies with the ability still on cooldown. The button was grey the whole time. The sound never said why.
That click is a design failure, not a polish problem. It teaches one thing: healing sometimes does nothing, and in a tight fight that lesson becomes hesitation on the key that keeps you alive.
A denied heal is not one state. It is three, and each one asks for a different action.
Cooldown, No Target, No Resource: Three Failures, Three Responses
Group all three under one cue and the player has to test the world to find out which one they hit. That test costs a dodge or a death.
| State | What is actually wrong | What the player should do | Cue job |
|---|---|---|---|
| On cooldown | Time. The press was early. | Wait, keep moving. | Flat, short, unresolved. |
| No valid target | Position or aim. | Reposition, re-aim. | Same body, dry and hollow. |
| No resource | The player's own pool. | Change plan, stop spending. | Same body, thinner, one step down. |
On cooldown, nothing about the world is wrong. The player is early, and the only correct response is to wait. The cue should sound like a door that is shut but not locked: no alarm, no error sting.
With no valid target, the body is in the wrong place or the reticle is on something the cast cannot reach. The response is movement, so the cue wants to feel dry and empty: the game looking and finding nothing.
With no resource, the plan is wrong. The player has to stop spending and retreat. Even here the cue stays informational: a large dissonant hit reads as damage taken, and the player flinches instead of re-planning.
The Denied Cue Has a Tighter Budget Than the Success Cue
The heal confirm can afford 250 to 300 ms. It fires rarely and it is good news. A denial fires several times in the same fight and only has to stop an action: 60 to 90 ms is a working range, and past about 120 ms it starts to feel like its own event.
Two constants. Sit the denial 4 to 6 dB under the success cue on the same bus; at equal level it competes with the confirm and the mix becomes clicks with no hierarchy. And avoid upward pitch motion. Rising pitch is the most reliable shorthand for gain in game audio, so a denial that sweeps up reads as success for its first 80 ms, long enough to commit to a plan that will not happen. The same reasoning sits behind why heal and damage cues must be opposite.
Flat, or one small step down. A 300 Hz body dropping to 240 Hz in the last 30 ms is enough motion to feel like a closed door without sounding like a failure buzzer. A single tone with a fast decay is often more legible than a gesture when it plays five times a second.
Keep the body roughly between 200 and 500 Hz, and any transient under 10 ms in the 1.5 to 3 kHz range. The 1 to 2 kHz band is where the ear is most sensitive, so a sustained denial there is fatiguing and masks dialogue.
One Family, Three Faces
Three unrelated sounds would be a mistake. The player recognises the family first, then reads the variant, and that has to survive combat. One shared transient, one envelope length, one level, with one element per variant carrying the difference.
Cooldown: A Flat Thud That Does Not Resolve
A sine or gently filtered triangle around 280 to 320 Hz, 3 ms attack, 55 to 70 ms exponential decay, no reverb tail. Add a second harmonic at 560 to 640 Hz, 10 to 14 dB down, so it survives a phone speaker. No upward interval. The sound stops without going anywhere, which matches a state that fixes itself if the player waits. A shared denied family is easier to learn than three separate ones, part of the argument in party versus single heals.
No Target: Add One Dry Tick
Start from the cooldown cue and change one thing: a 5 ms band-passed tick at 2 kHz, plus a gentle high-pass on the body. The result reads hollow, which is right for a cast that found nothing. With an invalid target, position the cue at that target so the player hears where the problem is; that beats a reticle flash. With truly no target, play it 2D, because a denial in the world implies a source that does not exist.
No Resource: Let the Body Thin Out
Same transient, thinner body. Drop the second harmonic, add 40 ms of band-limited noise between 400 and 900 Hz that cuts off abruptly, and let the pitch step down once in the last 30 ms. Take it 1 to 2 dB under the other two. The impression should be an empty container, not an alarm.
Retrigger Guard, Haptics, and What the Button Does
A 70 ms cue does not protect itself. Hold the key and the audio system starts a new instance every frame, and the result is a rattle. Put a hard 200 ms gate on the ability: five per second is responsive enough and still readable.
Gate against the audio clock, not the render clock. In Unity,
compare a stored timestamp against
AudioSettings.dspTime before
AudioSource.PlayOneShot. In Unreal, a bool
reset by GetWorldTimerManager().SetTimer covers the
same ground, and one FMOD event with
setParameterByName("DeniedType", ...) carries all
three variants.
Haptics fire on the same frame and run 10 to 20 ms. On iOS,
UINotificationFeedbackGenerator with
.warning fits a cooldown better than
.error, because the player has not made a mistake. On
Android, VibrationEffect.EFFECT_CLICK is the closest
match, and on a gamepad 20 to 30 percent motor for 30 to 40 ms is
enough. Skew beyond 30 ms stops reading as one event.
The button has to move on the same frame as the sound. The cheapest version is a short state change on the icon: an 80 to 120 ms grey flash, the cooldown radial already sweeping, and for the no-target case a brief reticle pulse. Do not shake the button for a cooldown, because the press was not an error. The visual has to say the same word as the cue, which is the core argument in designing game UI sounds. A silent denial with a clear visual is survivable; a loud denial with no visual change is not.
When the Player Mashes the Key
Mashing is information. Players hold the heal key when they cannot tell whether the press registered, and tuning the denial does not fix that on its own. Fix the readout first: is the greyed icon visible at a glance, is the cooldown legible at 1080p, does the button react at all to a rejected press.
Then decide what the audio does under abuse. Gate at 200 ms so the cue cannot become a buzz. After three denials inside one second, step down 2 dB per repeat to about minus 10 dB, or fade out entirely after five. Never speed up, never pitch up, never add a variant per press: a denial that escalates turns into a slot machine and trains the player to keep hitting it. If the game buffers the press and fires it when the cooldown ends, that press was not denied and gets a shorter queued tick.
In a dense mix the denial is also the first thing to disappear: short, 4 to 6 dB down, in the band where explosions live. A 2 to 3 dB music duck for 120 ms is one option, but a frequent denial then pumps the soundtrack, which is worse than the masking. The safer default is to leave the bus alone. The alternative is covered in ducking and sidechain compression.
Numbers to Start From
These are starting points for a 60 fps action game with a 1.5 s heal cooldown.
- Length and envelope: 60 to 90 ms, ceiling near 120 ms, 2 to 3 ms attack, 40 to 70 ms exponential decay.
- Body: sine or filtered triangle, 240 to 320 Hz, second harmonic 10 to 14 dB down.
- No-target tick: 5 ms band-pass at 1.8 to 2.4 kHz.
- No-resource motion: one step down, 300 to 240 Hz across the last 30 ms.
- Level: 4 to 6 dB below the confirm, under 1.5 dB spread across variants.
- Timing: 200 ms retrigger gate, 10 to 20 ms haptic pulse, 80 to 120 ms visual response.
- Delivery: 48 kHz mono WAV for 2D playback.
Test with the screen off: play the three variants to someone who has not heard them and ask what they would do next. If all three get the same answer, they are too close to be three states.