Video Introduction
Start at 12:10.
System Overview
General Effects System (GES) is used to play sound effects and visual effects in any context, primarily for automating footstep sounds/effects, but it can also be applied to other scenarios that require audio and visual feedback.
Initial setup
After installing this plugin, make sure it is enabled and that your project has the Niagara plugin enabled.
Context Effect Component
This plugin is very simple. You just need to add the GES_ContextEffect
component to your actor and that's enough.

- DefaultEffectContexts: Specifies the default Tags for this component, used as SourceTags when playing effects. If using a TagsProvider, this is typically not necessary to set.
- DefaultContextEffectsLibraries: Specifies multiple VFX/SFX libraries from which playback requests will query suitable effects.
- AutoSetupTagsProvider: When checked, this component will query the first object implementing the IGameplayAssetTagInterface in the Actor and its component tree during BeginPlay, then set this object as the TagsProvider.
Vfx/sfx library
This is a data asset of type GES_ContextEffectsLibrary, which can be created in the Content Browser.
The image below shows two configured context effect libraries:
- CFX_MMS_Sfx: Used to control footstep sounds/effects, defining the sounds played when different types of footsteps contact various surface materials.
- CFX_CombatFX: Used for combat effect control, defining the sounds played by different weapons under various conditions.

- EffectTag: Specifies the name Tag of the effect, which is used in API calls to determine the effect to be played.
- Effects: Add any sound assets and Niagara/Cascade effect assets to the Effects array.
- SourceTagQuery: Effects will only be played if the incoming SourceTags match the specified SourceTagQuery.
- TargetTagQuery: In API calls, additional Tags from other objects can be passed in for further matching of suitable effects.
Editor settings

In the Game section of the project settings, you can find the global settings of GES. Here, you can map the physical materials used in the project to GameplayTag.
At the same time, you can also enable the editor preview globally here and specify which preview settings to use.
Editor preview

The above image is an editor preview setting example. You can choose which vfx/sfx library to look for sounds and effects from in the animation sequence playback window, and also pretend to provide different scenarios for the effects through PreviewContexts.
You need to enable preview in editor. Otherwise, when you scrub the timeline in the animation sequence player, the corresponding effects will not be triggered, and nothing will happen.
Play sound/special effects through animation
Manually Placing Play Context Effects Animation Notifies
The image below demonstrates the use of context effect notifies to coordinate with the weapon swinging action.


Depending on how you configure your context effects library, the character will determine the most suitable sound effects or visual effects to play during this montage based on the tags that the context effect component currently has.

Automated Footstep Placement
This section is for automating the setup of character footstep placement and footstep sounds. Any animation that requires footstep effects needs to have the following animation modifier added:

- AM_FootFX: Automatically detects the timing of foot placement in the animation and adds the corresponding
FootPlant
notifies. - AM_FootstepContextEffect: Automatically adds "Play Context Effects" animation notifies based on the position of
FootPlant
notifies.

The image below shows the parameters for the "Play Context Effects
" anim notify. The effect to be played is specified through EffectIn; for example, the landing animation uses Footstep.Land, while the walking animation uses Footstep.Walk.

Play Sfx/Vfx via API
In certain situations, you may want to play sound effects/visual effects through Blueprints. Here’s a simple API:

- Attached: When checked, you need to pass ComponentToAttach to the Input parameters.
- SourceContextType: When Override is selected, the passed SourceContext will be used directly for querying effects as SourceTags; when Merge is selected, the passed SourceContext will be merged with the Tags of the context effect component itself.
- TargetContext: Optional; depending on the game mechanics, you may need to pass TargetContext for complex effect queries.
This is a low-level API that is typically used in other systems. For example, when a weapon adds a context effect component, it plays hit effects using the weapon type Tag as Contexts when the weapon strikes the environment.
GAS integration
Since the context in GES generally refers to GameplayTags, and on the EffectContexts component, in addition to setting default Contexts, GameplayTags can also be provided through external objects, which must be implemented GameplayTagsAssetInterface, the most typical being the AbilitySystemComponent in the GameplayAbilities plugin.
You only need to call the "SetGameplayTagsProvider" on the EffectContexts component and pass on the skill component to drive GES with GAS.

Using GES in GameplayCue
Assuming there is a Cue that plays sound effects/visual effects when a weapon hits a target character, you can use the relevant parameters of the Cue as parameters for playing context effects, allowing GES to handle the playback of sound effects/visual effects.
By adopting this method, a single simple Cue can implement multiple mechanisms.
