Skip to content
Combat System (ComboGraph)
Type a keyword to search

Combat System (ComboGraph)

Echo Quest combat system implementation, covering ComboGraph selection rationale, light attack combos, collision detection, and ANS-based shape-sweep logic

Updated2026-07-15·~6 min read

This chapter explains why ComboGraph was selected, how the combo system is implemented, and how animation-notify-driven collision detection is handled.

In this project, ComboGraph acts as the bridge between the presentation layer (animation/combo flow) and the logic layer (GAS). It integrates combo input, Input Buffering, and attack montage playback management, while also connecting to GAS to dispatch and execute core attack events such as damage, ability Cost, and Gameplay Cue feedback.

System composition:

ComponentResponsibility
ComboGraphCollisionRuntime collision detection logic. See section 2.2.2.
Primary ComboGraphAssetData asset defining combo nodes and flow.

ComboGraph asset folder structure with HeavyCombo / LightCombo folders and CG_HeavyAttackCombo / CG_LightAttackCombo assets

A lesson from a previous project: why use ComboGraph instead of hand-building combo logic in Blueprint?

DimensionHand-built BlueprintComboGraph
VisualizationA large Switch on Int plus many If branches, creating tangled wires during branch design.Tree-style node structure. Each node is an action, and each edge is a branch condition.
Input bufferingRequires high-precision Input Buffering, which is central to action-game feel and difficult to implement robustly in Blueprint.Built-in InputBuffer records input during the current action and automatically chains into the next action.
IterationRequires disconnecting wires, rewiring, or even rewriting logic.Data-driven. Nodes and edges can be edited directly in the editor.
Complex branchingPause and hold detection become mixed into combo logic, eventually becoming hard to maintain.Represented as different transition conditions on edges.

2.2 Light Attack Combo: How ComboGraph Is Implemented in This Project

Section titled “2.2 Light Attack Combo: How ComboGraph Is Implemented in This Project”

Light attack ComboGraph node graph with a five-stage combo tree and track properties panel on the right

Left side of the node graph — combo logic: when the player presses the LightCombo input (left mouse button), PlayerBP executes this ComboGraph from Entry and plays the first montage. Edges represent the ordered montage transitions triggered by different inputs. The light attack combo has four stages, with the final stage supporting left/right mouse button conversion between light and heavy attacks.

Right side of the node graph — execution content (top to bottom):

TrackContent
AnimationPlays the corresponding montage, including AN/ANS events inside the montage, and sets the play rate.
Gameplay EffectsSends the Event.Montage Tag to OnHit objects, activates GE_Damage_Melee (damage -5.0), and triggers GE_Cost_LightAttack (stamina cost).
Gameplay CuesPresentation-layer effects triggered by receiving the Event.Montage Tag, such as hit-location sound and particle effects.

2.2.1 Animation Montage Configuration (AnimNotify)

Section titled “2.2.1 Animation Montage Configuration (AnimNotify)”

AnimNotify is used to send signals or trigger logic at specific times during animation playback.

Animation Montage AnimNotify configuration with CollisionWind ANS detection window, MotionWarp, NS_Stylized_Trail VFX, and SFX tracks

The current attack animation contains the following AnimNotify entries:

NotifyPurpose
Motion WarpingHandles Motion Warping logic. See the Motion Warping chapter.
Collision WindowAttack collision detection. See sections 2.2.2 and 2.2.3.
Niagara VFX / Sound EffectsWeapon trail effects (Niagara VFX), footsteps, and attack SFX.

2.2.2 Collision Detection: ComboGraphCollision

Section titled “2.2.2 Collision Detection: ComboGraphCollision”

ComboGraphCollision is a component attached to the attacking Actor and acts as a collision manager. It solves two pain points that are difficult to handle with native UE collision events such as Overlap / Hit:

BP_MainPlayer Components panel showing ComboGraphCollision mounted alongside GAS core components such as AbilitySystemComponent and GSCCore

  1. Static Mesh setup

    Several Sockets are added to the weapon StaticMesh to define the position of each sweep point.

    Weapon StaticMesh Socket setup showing Socket 1 / Socket 2 as sweep endpoints

  2. Animation setup

    An AnimNotifyState (ANS), the Collision Window described above, is added to the keyframe track of the attack Animation Sequence / Montage. The start point (Notify Begin) is the frame where the attack begins to pose a threat, and the end point (Notify End) is the frame where the swing ends. Together they define the attack’s hit detection window.

  3. Runtime logic

    When animation playback reaches the start of the Collision Window ANS, the component begins working. Based on the difference between the Socket positions in the previous frame and the current frame, it performs shape sweeps supporting Line, Sphere, Box, or Capsule traces. This fills gaps between frames and creates a continuous, robust arc-shaped hit trajectory, significantly reducing tunneling and missed-hit issues at low frame rates.

Collision detection visualization showing continuous attack trajectory with connected blue spheres and orange hit VFX marking the actual impact point