What makes a hit feel good
A hit that feels heavy is not one effect. It is six or seven small responses that fire together in about a tenth of a second: the game freezes for a moment, the camera jolts, the enemy flashes white and gets pushed back, sparks fly, a number pops up and a sound cracks. Each one is cheap. Together they tell the player the blow landed. Take them away and the same attack feels like hitting air. Press Juice: ON to switch every effect off and hit the dummy again. That difference is what this tool tunes.
The effects
Hit stop. The whole game freezes for a few frames on impact. It is the strongest tool you have. 30 to 60 ms for a light hit and 80 to 150 ms for a heavy one is a common range. Screen shake. Each hit adds trauma between 0 and 1 and the shake grows with trauma squared, so small hits nudge and big hits rattle. Direction makes the camera kick along the hit instead of shaking at random. Zoom punch. A quick zoom in that snaps back. Flash. The target turns pure white for a moment. Knockback and squash. The target gets pushed and squashed, then springs back. Sparks and shockwave. Particles fly out in the hit direction. Damage numbers. A number pops up, bigger and in another colour for a critical hit. Slow motion. Time slows for a moment after a big hit. Impact frame. One or two frames drawn as black and white silhouettes, the look of anime and fighting games. Sound and rumble. A punchy hit sound made from a low thump and a sharp crack, and a controller rumble.
Three hits, not one
If every hit uses full shake and a long freeze, nothing feels special and players get tired. Tune a light, a heavy and a critical hit on their own so the feedback grows with the hit. Keep the strongest effects, like long hit stop, slow motion and impact frames, for the hits that matter.
Shooter mode
Switch Game type to Shooter to tune guns instead of swords. Hold a weapon button to fire. Guns feel good from a different mix: a camera kick against the aim, the gun sliding back, a muzzle flash, shell casings, a tracer, a hit marker and a short tick when a bullet lands. Each of the four weapons has its own fire rate, pellets, spread and bullet speed. A machine gun fires many times a second, so it needs a tiny shake per shot and almost no hit stop, while a sniper shot can freeze the game and kick hard. Shotgun pellets that land together count as one hit, and their damage is added into one number. Presets cover an arcade shooter, a tactical game, a bullet hell and a retro FPS.
Using the engine kit (Pro)
| Engine | How |
|---|---|
| Godot 4.2+ | Copy the hit_feel folder into your project and add gsk_hit_feel.gd as an autoload named HitFeel. On a hit call HitFeel.hit($Sprite2D, direction, "heavy", 42). When a gun fires call HitFeel.shoot(muzzle_position, aim, "shotgun") and when its bullet lands call HitFeel.hit(enemy, direction, "shotgun", 8). The current Camera2D shakes by itself. The sounds in the same folder load by themselves. |
| Unity | Put GskHitFeel.cs on any object in the scene, set the camera and drag in the sounds. Give your sprites the GameShipKit/SpriteFlash material so they can flash white. On a hit call GskHitFeel.Instance.Hit(enemy.transform, direction, "heavy", 42). For guns call Shoot(muzzle.position, aim, "shotgun") when firing and Hit(...) when the bullet lands. |
Hit stop and slow motion use the engine's time scale and run on a real time clock, so they end on time even while the game is frozen. The shake moves the camera only, never your game objects. Both scripts have an intensity value and a reduce flashing switch that you can tie to your settings menu.
Is anything uploaded?
No. The dummy, the effects, the sounds and the exported files are all made in your browser.