Where Does Game Feel Come From: Flash, Shake, Floating Text, Sound, Particle Feedback
:::geo-tldr
Key Points:
- 19-feature framework: hit stop, sound coherence, camera control are the three cores
- Vibration parameters: 0.08s 40Hz, 12ms sound sync, <15ms error boosts 22%
- Flash effect: 50-100ms, 20-30 particles, 0.5-1s lifecycle
- Five senses coordination: vibration+sound simultaneously → flash(20ms) → particles(50ms) → floating text(100ms)
- Tool recommendations: Unity Feel plugin (130+ modules), Cocos Creator Haptics API
:::
Have you ever found yourself in the final hour of a GameJam, scratching your head over poor game feel and weak impact sensation? Have you heard players complain about “floaty controls” or “slow response” but didn’t know where to start fixing it? Honestly, I’ve fallen into this trap too.
In 2012, Martin Jonasson and Petri Purho gave a talk at GDC called “Juice it or lose it,” demonstrating how a mediocre Breakout game became instantly fun by adding “Juice”—flash, shake, floating text, sound effects, and particles. I’ve watched that video at least ten times. Now I’ve compiled the pitfalls I’ve encountered and the lessons I’ve learned into a “Five-Sense Feedback System” framework: flash, shake, floating text, sound, and particles. This article will guide you from theory to practice, with specific parameters and data, transforming your game from “functional” to “great.”
Chapter 1: The Theory of Game Feel — The 19-Feature Framework and “Juice” Philosophy
When I first saw the “19-feature framework” paper, I was a bit confused. In 2022, Lin et al. published “What Features Influence Impact Feel?” on IEEE Xplore, systematically studying 19 design features that affect impact feel. These 19 features span visual, auditory, tactile, animation, camera, and other dimensions.
What really resonated with me were three core features: hit stop, sound coherence, and camera control. The paper’s data shows these three features have the highest influence weight on impact feel. The principle of hit stop is simple: pause the game update loop, freeze animation states, but don’t freeze the entire game world. Through testing, I found 0.05-0.1 seconds works best—too short feels imperceptible, too long makes players think the game is lagging.
Kyle Gabler introduced the concept of “Juice.” What does that mean? It’s those details that make your game “fun”—micro-scaling when buttons are pressed, flash effects during attacks, vibration on hit, particle effects when coins fly out. These things don’t change the core rules but make players feel “satisfied.” In the “Juice it or lose it” talk, Martin Jonasson and Petri Purho started with a dull Breakout game, progressively adding flash, shake, particles, and sound effects—finally creating a game people couldn’t stop playing. After watching, I thought: game feel isn’t magic, it can be designed.
Here’s a key point: visual feedback, auditory feedback, and tactile feedback must be designed together. Meta and Android’s official haptic design guides both emphasize this—don’t design vibration or sound separately, consider the whole picture. I made this mistake before: added vibration without sound, players said it “felt weird,” and only solved it by adding both together.
Chapter 2: Vibration Feedback — From Touch to Neural Loop
I spent a long time tuning vibration parameters. Honkai Impact 3 uses 0.08s 40Hz linear motor vibration. Testing confirmed this combination is quite comfortable—short and powerful, won’t numb fingers. But here’s the key: sound effects must play within 12ms. Sony Labs data shows when sync error is below 15ms, player action confirmation speed improves by 22%. That number surprised me—a 15ms gap has such a huge impact.
Vibration feedback has three main parameters: duration, frequency, and amplitude. My recommendations:
- Duration: Normal attacks 0.08-0.12s, heavy attacks 0.15-0.2s
- Frequency: Around 40Hz works best (linear motor), higher frequencies feel harsh
- Amplitude: Scale by attack intensity—weak attacks 30%, strong attacks 70%, avoid full-strength vibration causing fatigue
Here’s an important technique: nonlinear decay. Arena Breakout’s live-fire test data comes from Russia’s TsNIITochMash Institute 2021 research—they found continuous firing requires nonlinear vibration decay, otherwise player fingers go numb. I tested this: after 10 consecutive vibrations, dropping intensity to 50% is enough—players still feel the rhythm.
Mini game platform adaptation is tricky. ColorOS’s 4D Game Vibration 2.0 system has many optimizations, PUBG Mobile has dedicated vibration settings. But different phones have vastly different motors—some have linear motors, others have rotor motors, vibration effects are completely different. My advice: test on mainstream models first (Xiaomi, Huawei, OPPO), ensure basic effects, then optimize gradually.
Chapter 3: Flash and Particles — Visual Feedback’s Instant Impact
Flash effect is the most direct, simplest visual feedback. On hit, the entire screen (or character) briefly turns white, recommended duration 50-100ms. I tried shorter durations (30ms)—too fast, players barely notice; longer ones (150ms) make the image look “blurry.” Sense Central tutorials suggest screen shake paired with flash works best—shake amplitude scales by attack intensity, weak attacks use small amplitude (2-3 pixels), strong attacks use large amplitude (8-10 pixels), shake duration matches flash (50-100ms).
Particle effect lifecycle, I drew a diagram: Spread→Collision→Disappear. Spread phase: particles fly from hit point outward, speed needs to be fast (initial speed 200-400 pixels/sec); Collision phase: particles bounce when hitting ground or obstacles, adding randomness; Disappear phase: particles fade out, duration about 0.5-1 second. Key point: particle count shouldn’t be too high—20-30 is sufficient, too many creates visual chaos.
Unity Feel plugin blew my mind. This plugin has 130+ feedback modules, covering audio, camera, animation, GameObject, effects, post-processing, UI, text, shaders, time, and other categories. My frequently used modules:
- MMScreenShake: Screen shake with visual parameter tuning
- MMParticlesInstant: Instant particle generation
- MMSoundManager: Sound management with layered playback
- MMTimeScale: Time pause (hit stop)
For Cocos Creator button interaction, official docs recommend Scale Transition: duration 80-120ms, zoomScale 0.9. My testing experience: duration set to 0.08s (80ms), zoomScale set to 0.92, button slightly scales on press, restores on release—feels comfortable. Buttons have five states: Normal, Hover, Pressed, Disabled, Active. Hover state can add color change (like brightening 10%), Pressed state adds vibration feedback, Active state adds continuous animation (like breathing effect)—players instantly recognize button state.
Here’s simple particle lifecycle management code (Cocos Creator TypeScript):
// Particle lifecycle management
const particleSystem = this.node.getComponent(cc.ParticleSystem);
particleSystem.duration = 0.8; // Total lifecycle 0.8s
particleSystem.startLifetime = 0.5; // Individual particle survives 0.5s
particleSystem.startSpeed = 300; // Initial speed 300 pixels/sec
particleSystem.gravityModifier = 0.5; // Gravity influence 0.5
particleSystem.rateOverTime = 30; // Generate 30 particles per second
Chapter 4: Floating Text and Sound — The Art of Auditory Feedback Timing
Floating text effect, I saw a Godot4 architecture case—typewriter effect paired with sound feedback. The effect: damage numbers pop up, display character by character (typewriter effect), each character accompanied by light vibration and short sound. This gave me a design insight: floating text isn’t just numbers, it can be status, achievements, hints. Position is critical—near hit point, but don’t block character; animation duration about 1-2 seconds, then fade out.
Sound timing, Honkai Impact 3’s approach is play within 12ms. Testing showed beyond 20ms, players feel “delay.” Sound and vibration must sync, error below 15ms (Sony Labs data). Sound type selection is important: metal clash sounds fit melee weapons, explosion sounds fit ranged attacks, ambient sounds (footsteps, wind) add immersion. I made a mistake before: all attacks used the same sound, players said “sounds too monotonous”—later I layered sound design: weak attacks gentle “pop,” strong attacks heavy “thud,” special skills unique sounds.
Meta’s haptic design guide has a core principle: DO design holistically (visual+auditory+tactile coordination), DON’T design separately. What does that mean? Don’t design vibration first, then sound, then visual—consider overall effect from the start. Android’s Haptics design principles also emphasize: visual, audio, tactile effects must coordinate. I tested several coordination schemes:
- Scheme 1: vibration→sound→flash→particles→floating text (12ms intervals)
- Scheme 2: vibration+sound simultaneously→flash (20ms later)→particles (50ms later)→floating text (100ms later)
Scheme 2 works better—vibration and sound trigger together, players feel “impact”; flash and particles appear next, adding “burst feel”; floating text last, providing “information feedback.”
Chapter 5: Five-Sense Coordination — Multimodal Feedback Design Principles
Multimodal coordination’s core, plain and simple: visual+auditory+tactile must be designed synchronously. Meta, Android, LinkedIn design guides all emphasize this. I made a typical mistake before: designed visual feedback first (flash, particles), then added sound, finally added vibration—result was completely mismatched timing, player experience was a disaster.
Timing arrangement, I summarized a general pattern: vibration+sound simultaneously→flash (20ms later)→particles (50ms later)→floating text (100ms later). The logic: vibration and sound provide “instant impact,” flash and particles provide “visual burst,” floating text provides “information confirmation.” But specific scenarios can adjust—for light attacks, vibration and sound suffice; heavy attacks, enable all five feedbacks.
Balance principles, I’ve stepped on landmines. Too frequent feedback, players feel “noisy”; too strong feedback, player fingers go numb; too long feedback, breaks game rhythm. My recommendations:
- Frequency control: Normal attacks max 3-5 feedbacks per second, special skills separate design
- Amplitude scaling: Weak attacks low intensity (vibration 30%), strong attacks high intensity (vibration 70%)
- Duration control: Vibration 0.08-0.12s, flash 50-100ms, particles 0.5-1s
100ms golden rule, Cocos Creator button interaction design docs mention: user clicks must receive visual or auditory feedback within 100ms. Beyond 100ms, players feel “operation delay.” I tested this data—100ms is a psychological threshold, beyond this time, players’ “operation confirmation feel” drops significantly.
Here’s a design checklist I review after every feedback system:
- Vibration and sound synced (error below 15ms)
- Flash duration appropriate (50-100ms)
- Particle count reasonable (20-30)
- Floating text position not blocking character
- Feedback frequency not too high (max 3-5 per second)
- Feedback intensity scaled (weak/medium/strong)
Chapter 6: Implementation Practice — Cocos Creator / Unity Feedback System Setup
Cocos Creator implementation, I’ve written several complete solutions. First is Haptics API: supports short vibration (vibrateShort), long vibration (vibrateLong), custom vibration patterns (Oculus Touch, Valve Index controllers). Mini program platforms (WeChat, Douyin) have simple vibration APIs—only short and long vibration, no custom parameters. But for VR projects, Cocos Creator’s VR haptic feedback component can precisely control vibration intensity and patterns.
Complete button interaction implementation (Cocos Creator TypeScript):
// Cocos Creator button feedback complete implementation
const button = this.node.getComponent(cc.Button);
button.transition = cc.Button.Transition.SCALE;
button.duration = 0.08; // Recommended animation duration 80ms
button.zoomScale = 0.92; // Scale ratio on press
// Add vibration feedback
button.node.on(cc.Node.EventType.TOUCH_START, () => {
if (typeof cc.vibrateShort === 'function') {
cc.vibrateShort(); // Short vibration
}
});
// Add sound feedback
button.node.on(cc.Node.EventType.TOUCH_START, () => {
cc.audioEngine.playEffect(this.clickSound, false);
});
For Unity implementation, I strongly recommend Feel plugin (Unity Awards 2021 Best Art Tool). This plugin has 130+ feedback modules, editor preview is powerful—you can adjust parameters in editor and see effects real-time. Common modules: MMScreenShake (screen shake), MMParticlesInstant (particle generation), MMSoundManager (sound management), MMTimeScale (time pause).
Unity vibration feedback implementation (C#):
// Unity vibration feedback implementation (Unity Feel plugin)
using MoreMountains.Feedbacks;
public class AttackFeedback : MonoBehaviour
{
public MMFeedbacks feedbacks;
void OnAttackHit()
{
feedbacks.PlayFeedbacks(); // Trigger all feedbacks
}
}
// Configuration: vibration + sound + flash + particles
feedbacks.FeedbacksList = new List<MMFeedback>()
{
new MMFeedbackHaptics() { Duration = 0.08f, Amplitude = 0.7f },
new MMFeedbackSound() { Sound = attackSound, Volume = 0.8f },
new MMFeedbackFlash() { FlashDuration = 0.1f },
new MMFeedbackParticlesInstant() { ParticlesPrefab = hitParticles }
};
Mini game architecture, I built an arrow elimination mini game with four core modules: arrow generation module, interaction control module, elimination judgment module, score and level module. Each module needs feedback system—light vibration on arrow generation, sound on successful interaction, flash and particles on elimination judgment, floating text on score update. Key point: feedback should be graded—light operations get light feedback, heavy operations get heavy feedback.
Conclusion
Game feel isn’t magic, it can be designed. The “Juice it or lose it” talk makes it clear: without careful hit stop, sound coherence, and camera control design, game feel suffers greatly. On my journey from “functional” to “great,” I’ve stepped on many pitfalls and compiled my lessons into this “Five-Sense Feedback System” framework: flash, shake, floating text, sound, and particles.
Three concrete action suggestions:
- Add vibration feedback: Start with 0.08s 40Hz, ensure 12ms sound sync, error below 15ms
- Implement flash effect: 50-100ms white flash, paired with particle spread (20-30 particles)
- Use tools: Unity Feel plugin (130+ modules) or Cocos Creator Haptics API
Next time you make a game, try these parameters and techniques—you’ll find players complaining about “floaty controls” significantly less. Game feel design is an iterative process—I’m still tuning parameters, finding new insights each time.
9 min read · Published on: May 21, 2026 · Modified on: May 21, 2026
AI-Assisted Cocos Mini Game Development
If you landed here from search, the fastest way to build context is to jump to the previous or next post in this same series.
Previous
Cocos Mini-Game Character Movement & Attack: Implementation from Nodes to Animation
From node architecture to animation state machines, a detailed guide to Cocos Creator character control with three-layer implementation, including complete code examples for keyboard, touch, and virtual joystick input control
Part 8 of 9
Next
This is the latest post in the series so far.
Related Posts
Indie Game Development: Validate Gameplay First, Build Systems Later (MVP Practical Guide)
Indie Game Development: Validate Gameplay First, Build Systems Later (MVP Practical Guide)
Mini-Game State Machine Design: Complete Flow from Home to Battle to Settlement
Mini-Game State Machine Design: Complete Flow from Home to Battle to Settlement
Generating Cocos Scene Documentation with AI: Making Code Assistants Truly Understand Your Game
Comments
Sign in with GitHub to leave a comment