INSODIMENSIONStudios

Troubleshooting

Common issues and solutions for the Agentic FeedbackFX System

Troubleshooting

Common issues and solutions for the Agentic FeedbackFX System.


Setup Issues

Component not found at runtime

Symptoms: FindComponentByClass returns null.

Solution: Ensure component is on PlayerController, not Character:

// Correct - get from controller
APlayerController* PC = Cast<APlayerController>(GetController());
UAgenticFeedbackFXComponent* Feedback = PC->FindComponentByClass<UAgenticFeedbackFXComponent>();

"No FeedbackConfig assigned" warning

Solution: Set the FeedbackConfig property on the component:

  1. Select your FeedbackFX Component
  2. In Details panel, set Feedback Config to your data asset

Hit Stop Not Working

Hit stop does nothing

Check:

  1. HitStop event exists in config - Ensure the event tag maps to a HitStop event
  2. Duration is non-zero - Check HitStop event's Duration property
  3. Enable debug:
    FeedbackComponent->bEnableDebugLogging = true;

Hit stop affects wrong actors

Check Target setting:

TargetBehavior
LocalVisualOnly locally-controlled actors (multiplayer-safe)
SourceOnly attacker
TargetOnly victim
BothSource and Target
GlobalWorld time dilation (NOT multiplayer-safe)

Recommended: Use LocalVisual for multiplayer games.

Hit stop too short/long

Adjust Duration:

  • Base Duration - Default duration in seconds
  • Min/Max Duration - Clamping range after magnitude scaling
  • Duration Curve - Optional curve for custom falloff

Post-Process Not Showing

Material effect not visible

Check:

  1. Material is Post-Process material - Must be set to Post Process domain
  2. Blendable Location - Set to Before Tonemapping or After Tonemapping
  3. Weight is non-zero - Check MaxWeight in the event

Persistent effect won't fade out

Solution: Call RemovePostProcessEffectByTag:

// Trigger persistent effect
Feedback->TriggerFeedbackEvent(LowHealthTag, Context);

// Later, when health recovers
Feedback->RemovePostProcessEffectByTag(LowHealthTag);

Multiple effects stacking incorrectly

Each post-process effect has its own weight. Check:

  • MaxWeight - Maximum blend weight (0-1)
  • MagnitudeAffectsWeight - If true, magnitude scales the weight

Attribute Triggers Not Firing

Low health trigger doesn't work

Check trigger configuration:

PropertyRequired Value
AttributeHealth (or your attribute)
Max AttributeMaxHealth (for percentage)
ComparisonLessThan
Threshold25 (percent)
Event TagYour event tag (e.g., Event.Status.LowHealth)

Trigger fires repeatedly

Add hysteresis:

  • Hysteresis - Prevents re-triggering until value crosses threshold + hysteresis
  • Example: Threshold=25, Hysteresis=5 means trigger at 25%, reset at 30%

"No ASC found" warning

Solution: Ensure your pawn has an AbilitySystemComponent:

// In your character
UPROPERTY(VisibleAnywhere)
TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent;

Audio/Haptics Issues

Sound not playing

Check:

  1. Sound asset assigned - Sound property must reference a valid USoundBase
  2. Volume is non-zero - Check Volume and MagnitudeScalesVolume
  3. Audio device - Ensure audio is not muted in editor

Haptics not working

Check:

  1. Controller connected - Haptics require a gamepad
  2. Mode setting:
    • Manual - Uses LeftMotor/RightMotor values
    • ForceFeedback - Uses ForceFeedbackEffect asset
  3. Duration - Ensure duration is non-zero

Camera Shake Issues

Shake not visible

Check:

  1. Shake asset assigned - CameraShakeClass must be set
  2. Scale is non-zero - Check InnerScale and OuterScale
  3. Camera manager exists - Component must be on PlayerController

Shake too intense

Adjust scaling:

  • InnerScale - Base shake intensity
  • MagnitudeScalesShake - If true, magnitude multiplies intensity
  • Falloff - Reduces intensity over distance (for radial shakes)

Debug Visualization

Enable debug logging to diagnose issues:

// In your component setup
FeedbackComponent->bEnableDebugLogging = true;

Log output:

  • TriggerFeedbackEvent: Tag=Event.Damage.Heavy, Magnitude=0.80
  • StartHitStop: Duration=0.150
  • StartPostProcess: Material=M_BloodSplatter, Duration=0.50

Cancel/Stop Effects

Cancel specific effect by tag

Feedback->CancelEffectsByTag(EventTag);  // Cancels hit stop + post-process from this tag

Cancel all active effects

Feedback->CancelAllEffects();  // Stops everything

Cancel individual effect types

Feedback->CancelHitStop();              // Just hit stop
Feedback->CancelAllPostProcessEffects(); // Just post-process

Getting Help