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:
- Confirm the authority already called
InitializeAbilitySystem. - Add
UGCS_CombatSystemComponentand setCombatFlowClassto an instantiableUGCS_CombatFlowsubclass with at least one processor. BaseHandleGameplayEffectExecuteis empty; wire it in Register the First Attack Result. - Add
UGCS_TraceSystemComponentfor melee,UGCS_BulletSystemComponentfor ranged. - Add
UGCS_TargetingSystemComponentandUGCS_CombatTeamAgentComponentwhen lock-on or affiliation filters matter. - Implement
IGCS_CombatEntityInterfaceon 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:
AttackTagssuch as melee or light attack.TargetEffectClass: an instant Gameplay Effect that changes a target attribute. For local predicted feedback, addUGCS_GEComponent_PredictivelyExecuteto 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 |
Animation window | Place |
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):
- The Shared section shows the combat component, Combat Flow, and combat-entity interface.
- After one hit, Attack Result shows the latest result plus prediction and replication flags.
- Melee also shows handles and active state in the Trace section.
- Set
LogGCS_Combat/LogGCS_Traceto 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 | |
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