Input Buffer System
The "Input Buffer Mechanism" is a common requirement in combat games, and this framework also provides support for it.
In simple terms, by configuring the input buffer, it allows you to more easily achieve branching combo effects, similar to the image below:

Define Input Buffer Windows
Define input buffer windows on the input configuration (InputConfig). Here all available input windows are defined.

You can define multiple input buffer windows. Each window is associated with a GameplayTag. Each window can define which inputs (including their event types) are allowed to be buffered, as well as the priority of these inputs, and the trigger method for buffered inputs.
At runtime, only one buffer window can be active at a time.
At the same time, there are three trigger methods for buffered inputs:
LastInput | During the window period, the last allowed input pressed will trigger the input event after the window period ends. This is the default method. |
HighestPriority | During the window period, only the highest priority of any input that can be buffered will be recorded, and then triggered after the window period ends. |
Instant | During the window period, if any allowed input event occurs, it will be triggered immediately and the window will be closed early. |
Different trigger methods can bring different feelings to your game and more diverse mechanism changes. Below are the effects of triggering combos with Instant and LastInput trigger methods.
Instant method:

LastInput method:

Place Input Buffer Anim Notify State
Anim Notify State: ANS_GCS_InputBufferWindow
You can place this animation notify state on an animation montage to control the opening/closing of the buffer window.

In the image above, after completing an attack trace, a buffer window named "InputBuffer.Combo" is opened for a period of time, allowing other combat-related inputs (combo inputs, dodge, etc.) to be received.
In the non-Instant method, the buffered input (if any) is triggered only when the anim notify state ends.
If you have multiple input buffer windows overlapping, all active input buffer windows will be removed when a buffered input is fired.
Input Buffer Flow
The input buffer mechanism is used in conjunction with InputChecker. Any input that is currently not allowed will enter the input buffer flow.
The specific flow is as follows:
- When any input event occurs, it first goes through InputChecker for preliminary judgment to determine if the input is allowed.
- If the input is not allowed, it checks if there is an active buffer window at the moment. If there is an active window and the window allows the current input, the input can be successfully buffered.
- The buffered input, when triggered, will not go through InputChecker again but will directly execute the input processor associated with that input.