Skip to content
Back to wiki

Getting Started

A

Author

Author

Created: Apr 15, 2025Updated: Oct 20, 2026

Table of contents

GenericCombatSystem Quick Start

The shortest loop is: enable GCS and its .uplugin dependencies, finish Ability System initialization from the GenericGameplayAbilities Quick Start, attach UGCS_CombatSystemComponent to the combat pawn, then produce a visible attack result with one melee Trace or a companion-project level. The plugin pack has no Content. The companion project, provided separately after purchase, is the other observation path.

1. Enable the plugin

Enable GenericCombatSystem. That pulls in GenericGameplayAbilities plus EnhancedInput, GameplayAbilities, ModularGameplay, TargetingSystem, StateTree, GameplayStateTree, and MotionWarping. StateTree and MotionWarping are listed as .uplugin dependencies; GCS runtime source does not call their APIs directly.

Input buffering, Input Setups, and StateTree input nodes belong to the Generic Input System that ships with the product. They are not a module dependency of this plugin. How a key activates a combat ability is GIPS or your own input layer.

Point Ability System Globals at UGGA_AbilitySystemGlobals, or the GGA attribute callbacks and Effect Context payloads that Combat Flow expects will not be allocated. Follow the GGA docs for that step.

2. Attach the minimum components

On each pawn that fights:

  1. Confirm the authority already called InitializeAbilitySystem.
  2. Add UGCS_CombatSystemComponent and set CombatFlowClass to an instantiable UGCS_CombatFlow subclass with at least one processor. Base HandleGameplayEffectExecute is empty; wire it in Register the First Attack Result.
  3. Add UGCS_TraceSystemComponent for melee, UGCS_BulletSystemComponent for ranged.
  4. Add UGCS_TargetingSystemComponent and UGCS_CombatTeamAgentComponent when lock-on or affiliation filters matter.
  5. Implement IGCS_CombatEntityInterface on the actor or a component so it can return the current target, death state, current weapon, and combo table (or null when unused).

In Blueprint, Get Combat System Component / Find Combat System Component should succeed.

3. Author one attack definition

Create a Data Table with row type GCS Attack Definition (FGCS_AttackDefinition). Fill one row:

  • AttackTags such as melee or light attack.
  • TargetEffectClass: an instant Gameplay Effect that changes a target attribute. For local predicted feedback, add UGCS_GEComponent_PredictivelyExecute to that effect.
  • Leave knockback, cues, and extensions empty for the first pass.

For melee, also author one FGCS_TraceDefinition (TraceTag, shape, sweep channel). Point UGCS_AttackRequest_Melee.AttackDefinitionHandle at that attack row, and list the same Trace tag in TracesToControl.

4. Fire one melee

Pick one path:

Path

What to do

Ability Task

In a combat ability call HandleCollisionTraces, then AddMeleeRequest. Call RemoveMeleeRequest when the window ends.

Animation window

Place GCS_ANS_AttackTrace on the montage and fill the embedded melee request. The notify is not a runtime executor; a Collision Trace Task still has to consume that request.

After a hit, use UGCS_CombatFunctionLibrary to write the attack-definition handle into the Effect Context, then apply the effect to the target. The target's Combat Flow builds an FGCS_AttackResult from the attribute PostGameplayEffectExecute callback and registers it on the component FastArray.

The ranged path is Author a Ranged Attack: WaitForBulletEvent reads UGCS_AttackRequest_Bullet from a Gameplay Event.

5. Verify

In PIE, open the Combat category of Gameplay Debugger (registered at module startup):

  1. The Shared section shows the combat component, Combat Flow, and combat-entity interface.
  2. After one hit, Attack Result shows the latest result plus prediction and replication flags.
  3. Melee also shows handles and active state in the Trace section.
  4. Set LogGCS_Combat / LogGCS_Trace to Verbose to see resolution and sweeps.

In multiplayer PIE, confirm the server produces a result before checking that LocalPredicted processors on the AutonomousProxy run only once.

Common failures

Symptom

Check first

GCS components missing in Blueprint

Plugin and dependencies enabled; project compiled

Animation plays, no hit

Trace component present; ANS is only a data container and the Task never started; collision channel

Effect has no attack context

FGCS_ContextPayload_Combat written; Globals class is GGA

Client FX, no server result

Predicted bullets never apply GE; the authoritative path actually Applies

Next

  • Walk a finished level: Observe the Companion Project
  • Make the Flow produce the first Result: Register the First Attack Result
  • Separate GGA / GIPS: System Boundaries
  • Failures: Debugging and Troubleshooting