A More Realistic HitStop

As Jason De Heras mentions in his article (link below): "Combat design is one part rules/goals and one part FEEDBACK ". There are several ways to enhance combat feel by layering different feedbacks, the implementation varies from game to game depending on the fantasy/theme. (ex: God of War is more of a power fantasy and DMC is more supernatural speed and skill)

Techniques to make combat impactful:

What is a hit-stop?

Traditional hit stop (or freeze frame) is a well-established technique that helps emphasize impact, but it can sometimes feel jarring and unnatural. While it effectively conveys power, it often interrupts the flow of combat in a way that breaks immersion.

God of War

I've used the classic method a few times and wondered how it can be improved by making it more dynamic, ensuring that the hit feels weighty without being glitchy. One way to achieve this is by making hit stop more reactive using Inverse Kinematics (IK), allowing the attacker's body to respond naturally to the force of an attack. (or even enemy)

When playing God of War (2018), I noticed how well the game handled hit-stop. The Leviathan Axe hits felt weighty and deliberate, and the impact lingered for just a moment before continuing the attack. This gave me the motivation to experiment with a similar technique and see how I could implement and refine it myself.

Goal: Experimenting with Advanced Hit Stop (Sticky Axe)

With this in mind, My aim was to understand the technique better by implementing a more dynamic hit-stop effect in Unreal Engine.This article will break down my process step by step.

Implementation

The planning:

For this project, the goal was to create a straightforward combat system in Unreal, focusing on the essential components that make a single hit feel impactful—one of which is hit-stop. These steps can be applied to most attacks to enhance their feel. However, mechanics like target selection, additional attack types, and dodging were intentionally left out since they go beyond the scope of the sticky axe mechanic.

The chosen combo consists of a simple sequence: the first two hits incorporate stickiness, the third is a combo finisher designed to create space, and the fourth is a powerful jump attack for execution.

I had two key limitations regarding animations: they had to come from either free or paid pre-made asset packs, and they needed to fit the overall theme of the project.

Base Locomotion

I used the Gameplay Animation Sample Project (GASP) with motion matching as the foundation for locomotion. While this introduced some challenges, it was a worthwhile choice as it minimized the effort required for basic movement, allowing me to focus on the core aspects of the experiment. 

Combat sub-systems:

Anatomy of a normal melee attack using the Axe in God of War

Breaking down Kratos' attack step by step, we can identify the following structure:


Full-Body IK Using Control Rig

This system is used to pin the axe to the target during impact. Instead of relying on animation-driven hand and weapon bone data, we override it with cached transform data captured at the moment of impact. This ensures the weapon remains visually locked to the target for a few frames. (Further improvements to this system will be discussed at the end of the article.)

Key optimizations include:

Weapon Placement & Impact Adjustment

Early Results & Identified Issues

The early implementation, shown below, demonstrates most of the core systems in action

However, several structural issues in the attack flow disrupt the overall feel:

These issues impact the flow and weight of the attack, and adjustments are needed to improve realism and player feedback.

Fixing the Antic Pose
To improve the antic pose, I experimented with additive layer tracks in the animation sequencer. This is a powerful feature that allows for fine-tuning animations without altering the base motion. (though tricky to make it work at times)

Before

The original antic pose in the animation asset

After

modified pose using additive layer tracks

Fixing the "Dragging" Problem

To address the lack of dragging motion, I first identified a fundamental issue: the player's body needed to continue moving while the axe was pinned to the target. Without this, the motion felt stiff and unnatural, similar to traditional hit-stop—defeating the entire purpose of this experiment.

At first, I tried modifying the attack animation using additive layer tracks in the sequencer, adding extra upper-body rotation to create a smoother dragging effect. While this helped, it revealed another problem. Since the axe was pinned to the enemy while the player's animation continued, as soon as the IK turned off, the weapon snapped back to its default animation position—almost near the follow-through. This completely broke the motion trajectory.

While tweaking the additive layers and considering better blending options, I decided to analyze God of War more closely. I captured additional gameplay footage and later confirmed through an article by one of the game’s designers that the game actually switches to a different drag and follow-through animation when the axe makes contact with a target. Essentially, the swinging animation in the air is different from the one used on impact, even though the timing remains nearly the same. This approach made perfect sense—it was simpler, art-directable, and avoided unnecessary complexity.

With that in mind, I created a dedicated “pull” animation by duplicating the attack animation and removing all frames before the hit frame, where the animation switch is expected to happen. The idea was to have 3-4 frames where the axe remains stuck in place, using additional IK stabilization, before smoothly pulling it out. The motion needed to be fast enough to maintain combat flow but slow enough to make the action readable.

For the first attack swing, I managed to modify the upper body and weapon hand to follow this new approach. Immediately, the motion felt much smoother, though visually, the animation itself doesn't look that good ^^'.

Refining the Second Attack (Back Swing)

The second attack, a backswing, proved to be a much greater challenge since it required more drastic changes to work properly. To tackle this, I decided to try a new tool—Cascadeur.

Since this was my first attempt at animating in any software, I had to take the time to establish a solid pipeline:

The process took far longer than expected, requiring countless small adjustments. However, I genuinely enjoyed the learning experience and look forward to doing more animation work in the future(unless AI takes over first, heh)! In the end, just like the first attack, this one finally started to flow smoothly, even if it still didn’t look great visually.

Result (side by side)

And here is the result! ^^ There’s still plenty of room for improvement, both in the systems and especially in the content. But overall, I’m happy with the progress and have learned a lot throughout this experiment.

Combat design and implementation hold a special place in my heart, and I’ll keep experimenting and learning about all the different aspects and disciplines that contribute to it.

Further Improvements