# Setup Custom Montages

## Working with Animation Montages

Animation Montages are crucial in Soulslike Framework for handling actions like **attacks, dodging, weapon abilities & interactions.** They allow you to play animations dynamically while also triggering gameplay events using **Notify States**.

### What are Animation Notifies?

<figure><img src="/files/BnQDCFMwbwgmsDc1Sa4l" alt=""><figcaption></figcaption></figure>

Animation Notifies and Animation Notify States are powerful tools designed to synchronize animations with gameplay systems. They enable seamless integration with the framework’s core systems, such as combat & visual feedback.

Soulslike Framework comes equipped with various Animation Notifies & Animation Notify States for you to use out of the box.

### Creating New Dodging/Rolling Montages

Let's start simple. Locate your relevant multi-directional dodging/rolling animations.

{% hint style="warning" %}
Ensure that you are working with **Root Motion** animations.
{% endhint %}

1. Open up your Animation asset and ensure **"Enable Root Motion" is ticked** and that the root motion is working correctly.

<figure><img src="/files/n8NMwZdyXqAdow6UuOMe" alt=""><figcaption></figcaption></figure>

2. Right-click the relevant animation asset and select to **Create -> Create AnimMontage** to create your Animation Montage.

<figure><img src="/files/BinYnJD1AXy3Rc0fuMcn" alt="" width="238"><figcaption></figcaption></figure>

3. Open up the newly created Animation Montage asset. Now we must utilize one of your **Animation Notify States** to ensure that this montage is compatible with the Input Buffer. Right-click the ***Notifies Track*** and add new Notify State -> **ANS\_InputBuffer.** [\[Input Buffer Notify\]](/animation-notifies/miscellaneous/input-buffer-notify.md)

<figure><img src="/files/YCeibgUySt5wl6puXZyQ" alt=""><figcaption></figcaption></figure>

4. Adjust the start/end of the Notify State accordingly.

   1. **Start:** Input is queued in the **Input Buffer** to avoid interrupting the animation.
   2. **End: I**nput is enabled, allowing the player to seamlessly transition to the next action.

   <figure><img src="/files/P1TRFLb17pCBbi6a4k8P" alt=""><figcaption></figcaption></figure>
5. Add a new notify track and similarly add the **ANS\_InvincibilityFrame** Notify State. [\[Invincibility Frame Notify\]](/animation-notifies/defensive/invincibility-frame-notify.md)

   1. **Start:** Player will become invincible to all damaging attacks.
   2. **End:** Invincibility window finished, player can be damaged by attacks.

   <figure><img src="/files/dMa3nezB2QkdjK3TtqvS" alt=""><figcaption></figcaption></figure>
6. (Optional) Add a new notify track and add the **AN\_TryGuard** notify. This notify will check if player wants to "guard" at that specific time. [\[Check for Guard Notify\]](/animation-notifies/defensive/try-guard-notify.md)
7. (Optional) You can also add a new notify track and add the Unreal-provided **"Disable Root Motion"** Notify State to disable root motion temporarily. This Notify State is particularly useful when you want the player to have periodical freedom from Root Motion locking. You can check out some of the provided montages to see how we've utilized it.

<figure><img src="/files/2S3triUHO59aGniqhD4K" alt=""><figcaption></figcaption></figure>

Create rest of your dodging montages similarly.

***

### Creating New Attacks/Combo Montages

Soulslike Framework handles combo's through the **Montage Section** system provided by Unreal Engine. Luckily, it is very easy to work with. Lets see how we can create new combo's below.

In this example, we'll be creating a **Light attack combo** for a weapon with the **Light Sword animset**:

1. Create a montage from the **First** attack animation/sequence.
2. Drag and Drop rest of the sequences to the Montage Track:

<figure><img src="/files/dV3jeJjdtWKCE8pDnot4" alt=""><figcaption></figcaption></figure>

After you're done, your Montage Track should look like this:

<figure><img src="/files/bDBJg5HWJWEPQW2J9qlA" alt=""><figcaption></figcaption></figure>

3. Right click the **Montage Track (above the sequences)** and add **Montage Sections** at the start of each sequence.

   1. For a **light attack combo**, use the following naming for the sections&#x20;
      1. **"Light\_01" -> "Light\_02", etc.**
   2. For a **heavy attack combo**, use the following naming for the sections&#x20;
      1. **"Heavy\_01" -> "Heavy\_02" etc.**

   <figure><img src="/files/Np1qFlOpodMLVREHbcXA" alt=""><figcaption></figcaption></figure>

4. After you're done, ensure that all chains/links are cleared in the **Montage Sections** tab. If you do not have this tab, you can open it from **Window -> Montage Sections.**

<figure><img src="/files/ksGReNterSy40BRK9fjQ" alt=""><figcaption></figcaption></figure>

5. Now, the framework has complete control over this montage. However we will need to setup necessary **Anim Notifies** to get our new combo montage working. Head into the first **Notify Track** **(1)** and add a new **Notify State** **->** **ANS\_RegisterAttackSequence.** Add this Notify State to each section and ensure that the Queued Section is set correctly. [\[Register Attack Notify\]](/animation-notifies/damaging-and-combos/register-attack-notify.md)

<figure><img src="/files/LWdzyhMK3clWhCFmde5P" alt=""><figcaption></figcaption></figure>

6. Add a new **Notify Track** and add the **ANS\_InputBuffer** Notify State so that the montage can communicate with the Input Buffer component. This Anim Notify will enable/disable input detection. [\[Input Buffer Notify\]](/animation-notifies/miscellaneous/input-buffer-notify.md)

<figure><img src="/files/xAgqGsxPN0X0MGthIACH" alt=""><figcaption></figcaption></figure>

7. We can add another **Notify Track** and add the **Disable Root Motion** Notify State to allow player to move minimally at the start of the attacks. This will also allow the player to rotate quickly at the start of each section.

<figure><img src="/files/YqakEe7Ub9hWi8mq5cQg" alt=""><figcaption></figcaption></figure>

8. Lets add another **Notify Track** and add the Notify **AN\_InterruptMontage.** Place it somewhere before the blend-out stage of the attack sequence. You can tweak the **Blend Out Duration** to your liking per notify. This Notify allows the user to break out of the blend-out part of an attack animation. [\[Montage Break Notify\]](/animation-notifies/miscellaneous/interrupt-montage-notify.md)

<figure><img src="/files/0VlfdiWK2DRzPX8agdbh" alt=""><figcaption></figcaption></figure>

9. Add yet another **Notify Track** and add the Notify **AN\_TryGuard.** Place it somewhere **after the Input Buffer Notify State.** This notify will ensure that player can go back to the **Guarding** state if they're trying to guard (holding the guarding key). [\[Check for Guard Notify\]](/animation-notifies/defensive/try-guard-notify.md)
10. Finally, lets add our **Notify State** responsible for weapon tracing. Add another **Notify** **Track** and add the **ANS\_WeaponTrace** Notify State. Ensure that **TraceType** is set correctly relevant to your animation. [\[Weapon Trace Notify\]](/animation-notifies/damaging-and-combos/weapon-trace-notify.md)

<figure><img src="/files/uh0PQeuyms1Xbm8HnSh9" alt=""><figcaption></figcaption></figure>

10. That is it for the fundamental notifies. Rest is up to your liking! Here's an example on what notifies could be added furthermore:

<figure><img src="/files/wNdaNPi3tbIuZSuiErhY" alt=""><figcaption></figcaption></figure>

For more information about the provided notifies, you can check out [the Animation Notifies category.](/animation-notifies/damaging-and-combos.md)

Now, how do we utilize these new montages? [Read more on the Utility Tools page.](/getting-started/quickstart-1.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://soulslike-framework.isik.vip/getting-started/quickstart/setup-custom-montages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
