A pause gives contact a place to land.
A hit can happen so quickly that you register the motion, but miss the moment of contact. Hit-stop holds that moment. In this experiment, the attacker and target briefly keep their contact poses before the target moves away.
Try 4f, then 0f. The difference is only about 67 milliseconds at our demo’s 60 Hz simulation rate. Watch the target: does it feel easier to tell when the hit connects?
This is a question to test in your own game, not a universal recipe. A fast sequence, a heavy swing and a distant camera give that pause very different jobs.
Stop the action. Shake the view.
Turn on camera shake, then set hit-stop to 0f. The view moves, but the characters never hold their contact pose. Now try both together at 4f.
The two effects operate on different things:
- Hit-stop changes the action’s timing. Here, it holds both characters. In another game, you might hold only selected actors.
- Camera shake changes the view. Here, a deterministic camera offset decays for 12 frames (200ms at 60 Hz), even while the characters are frozen.
More shake does not replace a clearer contact pose. If your hit is hard to read, first turn both effects off and inspect the silhouette, spacing and timing.
Four frames, counted honestly.
Contact begins at frame 27. With a hold of S frames, the held interval is 27 ≤ frame < 27 + S. At 4f, frame 31 is already moving. At 0f, the target starts moving on frame 27.
We draw the state after each simulation step. At 0f, the contact event and the first movement happen in the same step: you see the impact mark, but no stationary touching pose. Here, “4f” counts the contact step itself; it does not mean four extra frames after a separate contact frame.
The slider and ±1f buttons let you inspect the boundary without animation. Playback uses fixed 1/60-second simulation steps; a 120 Hz screen does not make the action twice as fast. Quarter speed changes playback speed, not the meaning of a simulation frame.
Our camera offsets use a repeatable integer hash, not fresh randomness. Returning to a frame returns to the same picture. The offset is measured in our diagram’s world units, so its screen size scales with the figure.
Take the question back to your game.
- Start with a readable contact pose and no camera shake.
- Compare 0f, 2f and 4f at a stated simulation rate. Keep everything else fixed.
- Watch both the impact and the recovery. A strong accent can also interrupt rhythm.
- Add a little camera movement only if it helps the action read.
- Check rapid hits, camera edges and reduced-motion settings before keeping the effect.
The useful question is not “how much juice?” It is “what should the player notice?”
The sketch below is engine-neutral pseudocode. Scope the hold to the actors that need it, and keep input, UI and effect timing on the appropriate clocks. It is not a tested engine integration.
on_contact:
held_steps = chosen_hit_stop_frames
shake_steps = 12
each_fixed_step:
# Contact is resolved before this step's hold decision.
if held_steps > 0:
held_steps -= 1
else:
advance_affected_actors()
if shake_steps > 0:
draw_camera_offset(shake_steps)
shake_steps -= 1
else:
clear_camera_offset()
The order of your collision and update phases matters. Test the actual rendered poses at contact and release, not only a timer or a freeze flag.
What we know. What we don't.
- About the source
- The source link was supplied with our editorial handoff. We have not independently verified the WIP, so we make no claim about its implementation.
- Test conditions
- Our demo, fixed 60 Hz simulation: contact at frame 27; 4f hit-stop holds frames 27–30 and releases at 31. Camera shake lasts 12 simulation frames.
- Credit
- @LivingWorldProj ↗ — The inspiration recorded in our handoff. No quotation or media is reproduced.
For corrections, credit changes or removal, contact @FableQuest by DM . If DMs are unavailable, mention us in a public post. Corrections log