INSODIMENSIONStudios
CameraReference

Modifiers

Every behavior and parameter modifier in Agentic Gameplay Camera, with parameters, defaults, JSON examples and the blend curve list

Modifiers Reference

Modifiers are what turn authored data into rig behavior. A behavior modifier goes in a mode's Modifiers array and produces GameplayCameras rig nodes. A parameter modifier goes in a state's Parameters array and overrides values for that state.

Both use the same shape: a tag plus a Params map of string values. The generated /AgenticGameplayCamera/Shared/AgenticCameraSchema.json is authoritative for key names — regenerate it with Validate All Camera Tables whenever you are unsure.

Constraints and Shake require the Params. prefix. Their settings live in an inner struct, and the import resolver only descends into a struct when the path is explicitly dotted. A bare "PitchMin" is reported as an unknown key in the import report and the modifier keeps its C++ default. Every other modifier on this page takes bare keys.


Behavior Modifiers

Focus

Tag: Agentic.Camera.Modifier.Focus

Lock-on target tracking. Rotates the view to keep the target framed by driving control rotation, which makes the camera arm orbit the character. Needs IAgenticTargetProvider on your character — from the optional sibling Agentic Targeting plugin. Without a target source this modifier is inert; the rest of the camera is unaffected.

ModeBehaviorUse case
SoftThe player can look away; the camera drifts back at InterpSpeedSouls-like lock-on
HardLockPlayer look input is disabled outright; the camera always points at the targetBoss fights, cinematic combat

HardLock calls SetIgnoreLookInput(true), which is what prevents the input fighting that reads as camera stutter. Input is restored automatically when the target is lost, the mode changes to Soft, or the camera mode deactivates.

ParamTypeDefaultDescription
ModeenumSoft"0" = Soft, "1" = HardLock
InterpSpeedfloat10.0Rotation speed toward the target, degrees/sec. Soft only
bYawOnlyboolfalseRotate yaw only, preserving the player's pitch
TargetOffsetvector(0,0,50)Offset from target centre — aim at the head instead of the torso
bDebugDrawboolfalseTarget indicator, lock-on line, lock mode label
{
    "ModifierTag": { "TagName": "Agentic.Camera.Modifier.Focus" },
    "Params": {
        "Mode": "0",
        "InterpSpeed": "12.0",
        "bYawOnly": "true",
        "TargetOffset": "(X=0,Y=0,Z=50)"
    }
}

Awareness

Tag: Agentic.Camera.Modifier.Awareness

Multi-threat framing. Adjusts arm length, FOV and lateral framing offset so several threats stay readable — and never touches rotation. The player always controls where they look; Awareness only controls how far back and how wide the view is, like taking a step back from a scene. Requires IAgenticTargetProvider.

It queries awareness targets, filters by ScoreThreshold, checks MinThreatsToActivate, measures the angular spread of what is left, and pulls back when that spread exceeds the current FOV.

ParamTypeDefaultDescription
MinThreatsToActivateint21 = always, 2+ = group fights only
ScoreThresholdfloat0.1Minimum threat score (0–1) to consider
FramingPaddingfloat0.1Margin around the threats
MinArmLengthfloat300.0Arm length when threats are clustered
MaxArmLengthfloat600.0Upper bound on pullback
ArmWeightfloat0.7Arm contribution, 0–1
MaxHeightOffsetfloat100.0Height rise at full pullback — a tactical overhead lean
MinFOVfloat90.0FOV when threats are clustered
MaxFOVfloat110.0Widest FOV
FOVWeightfloat0.3FOV contribution, 0–1
bEnableFramingOffsetbooltrueSlide laterally to keep threats visible
MaxFramingOffsetfloat200.0Maximum sideways shift
FramingOffsetWeightfloat0.5Framing offset strength, 0–1
bEnableInputSteeringboolfalseRedirect pitch input into yaw when threats leave the frame below
InputSteeringWeightfloat2.0Redirect multiplier
InputSteeringThresholdfloat20.0Degrees off-screen before steering starts
InputSteeringMaxAnglefloat70.0Beyond this the player is deliberately looking away; steering stops
InterpSpeedfloat5.0Adjustment speed
bDebugDrawboolfalseThreat boxes, threat lines, zoom bar
{
    "ModifierTag": { "TagName": "Agentic.Camera.Modifier.Awareness" },
    "Params": {
        "MinThreatsToActivate": "2",
        "MinArmLength": "300.0",
        "MaxArmLength": "600.0",
        "ArmWeight": "0.7",
        "MaxFOV": "110.0",
        "FOVWeight": "0.3",
        "bEnableFramingOffset": "true",
        "FramingOffsetWeight": "0.5",
        "InterpSpeed": "5.0"
    }
}

Focus and Awareness compose deliberately: Focus points the camera at the locked target, Awareness pulls back to reveal flankers, and neither fights the player's input.

LookAhead

Tag: Agentic.Camera.Modifier.LookAhead

Offsets the camera toward the movement direction so motion reads with anticipation.

ParamTypeDefaultDescription
ModeenumVelocityVelocity holds the offset while moving; Impulse kicks on acceleration and decays
MaxOffsetfloat60.0Maximum offset in units
InterpSpeedfloat3.0Lower is smoother
VelocityScalefloat0.1Velocity / acceleration multiplier
MinVelocityfloat50.0Minimum speed to activate, units/sec
DecaySpeedfloat2.0Impulse mode only: decay back to centre
bHorizontalOnlybooltrueOffset horizontally only

PitchScale

Tag: Agentic.Camera.Modifier.PitchScale

Scales arm length and FOV by camera pitch: one extreme gets intimate and close, the other gets a wider overview.

ParamTypeDefaultDescription
bScaleArmLengthbooltrueEnable arm scaling
ArmLengthMinScalefloat0.8Arm multiplier when looking straight down
ArmLengthMaxScalefloat1.2Arm multiplier when looking straight up
MinAbsoluteArmLengthfloat150.0Safety clamp — keeps the character visible
bInvertPitchDirectionboolfalseOff: down → min scale, up → max scale. On: inverted
bScaleFOVbooltrueEnable FOV scaling
FOVMinScalefloat0.95FOV multiplier at the min-scale extreme
FOVMaxScalefloat1.05FOV multiplier at the max-scale extreme
InterpSpeedfloat5.0Response speed

PitchFollow

Tag: Agentic.Camera.Modifier.PitchFollow

Tilts the camera to follow terrain slope while walking up or down an incline, returning to a resting pitch on flat ground. For falling pitch, use the Pitch parameter on the Falling state instead — the separation lets you tune slope and falling independently.

ParamTypeDefaultDescription
Speedfloat30.0Pitch adjustment speed, degrees/sec
TimeThresholdfloat2.0Seconds without camera input before it activates
AngleThresholdfloat5.0Minimum deviation to trigger, degrees
RestingPitchfloat-10.0Resting pitch on flat ground (negative looks down)
SlopeMinInclinefloat15.0Minimum slope angle to react to, degrees
SlopeWeightfloat0.50 ignores the slope, 1 matches it exactly
bDebugDrawboolfalseSlope direction, angle text, target pitch indicator

YawFollow

Tag: Agentic.Camera.Modifier.YawFollow

Rotates yaw to follow the character's movement direction after a delay without camera input — the exploration camera that quietly centres itself behind the character. Not recommended on combat modes, where precise manual control matters more.

ParamTypeDefaultDescription
Speedfloat30.0Yaw rotation speed, degrees/sec. Above 30 is allowed, and the table validator warns
TimeThresholdfloat2.0Seconds without camera input before it activates
AngleThresholdfloat10.0Minimum deviation from movement direction, degrees
bResetTimerOnStopMovementboolfalseReset the idle timer when the character stops
bDebugDrawboolfalseMovement-direction arrow, timer bar, status text

Constraints

Tag: Agentic.Camera.Modifier.Constraints

Limits pitch and yaw, decelerating smoothly into the boundary rather than clamping hard. Requires the Params. prefix.

ParamTypeDefaultDescription
Params.bConstrainPitchbooltrueEnable pitch limits
Params.PitchMinfloat-89.0Minimum pitch
Params.PitchMaxfloat89.0Maximum pitch
Params.PitchTolerancefloat10.0Deceleration zone before the limit, degrees
Params.bConstrainYawboolfalseEnable yaw limits
Params.YawMinfloat0.0Minimum yaw
Params.YawMaxfloat360.0Maximum yaw
Params.YawTolerancefloat10.0Deceleration zone, degrees
bDebugDrawboolfalsePitch limit arc, current pitch marker, yaw range text
{
    "ModifierTag": { "TagName": "Agentic.Camera.Modifier.Constraints" },
    "Params": {
        "Params.bConstrainPitch": "true",
        "Params.PitchMin": "-89.0",
        "Params.PitchMax": "89.0",
        "Params.PitchTolerance": "10.0",
        "Params.bConstrainYaw": "false"
    }
}

IdleReset

Tag: Agentic.Camera.Modifier.IdleReset

Returns the camera to the rotation captured when the mode activated, once the player has been idle long enough.

ParamTypeDefaultDescription
Speedfloat30.0Rotation speed, degrees/sec (30 ≈ 3 s for a 90° turn). Above 30 is allowed, and the table validator warns
TimeThresholdfloat2.0Seconds without input before the reset starts
AngleThresholdfloat10.0Minimum deviation to bother resetting, degrees
MinMovementSpeedfloat100.0Speed below which the character counts as idle, units/sec
InterpCurveenumEaseInOutLinear, EaseIn, EaseOut, EaseInOut

Shake

Tag: Agentic.Camera.Modifier.Shake

Procedural Perlin shake, location and rotation, with per-axis control. Every value is a camera parameter evaluated by the plugin's deterministic shake math — the same evaluator the cinematic Shake correction uses — so a state that shakes differently is a variable write into the running rig, not a rig rebuild. Requires the Params. prefix.

ParamTypeDefaultDescription
Params.AmplitudeMultiplierfloat1.0Global amplitude multiplier
Params.FrequencyMultiplierfloat1.0Global frequency multiplier
Params.Octavesint1Noise octaves, 1–4, for a more organic feel
Params.bEnableLocationShakeboolfalseEnable positional shake
Params.LocationX_Amplitude / _Frequencyfloat0.0 / 1.0Forward-back axis
Params.LocationY_Amplitude / _Frequencyfloat0.0 / 1.0Left-right axis
Params.LocationZ_Amplitude / _Frequencyfloat0.0 / 1.0Up-down axis
Params.bEnableRotationShakebooltrueEnable rotation shake
Params.Pitch_Amplitude / _Frequencyfloat0.5 / 8.0Pitch, degrees
Params.Yaw_Amplitude / _Frequencyfloat0.3 / 6.0Yaw, degrees
Params.Roll_Amplitude / _Frequencyfloat0.2 / 4.0Roll, degrees
Params.Seedint0Noise seed — the evaluator is deterministic, so the same seed gives the same shake
{
    "ModifierTag": { "TagName": "Agentic.Camera.Modifier.Shake" },
    "Params": {
        "Params.Octaves": "2",
        "Params.bEnableRotationShake": "true",
        "Params.Pitch_Amplitude": "0.15",
        "Params.Pitch_Frequency": "6.0",
        "Params.Yaw_Amplitude": "0.08",
        "Params.Yaw_Frequency": "4.5",
        "Params.Roll_Amplitude": "0.12",
        "Params.Roll_Frequency": "5.0"
    }
}

Rig Overlay

Tag: Agentic.Camera.Modifier.Rig

Overlays a designer-authored camera rig on top of the programmatic one — the bridge between data-driven modifiers and Epic's visual node graph. Good for one-off effects that are simply easier to draw than to describe.

ParamTypeDefaultDescription
OverlayRigasset path(none)Path to a camera rig asset
BlendWeightfloat1.00 = no effect, 1 = full effect

Create one with Content Browser → right-click → Miscellaneous → Camera Rig, build the node tree in the Camera Rig Editor, then reference its path.


Parameter Modifiers

State-specific value overrides, used in the Parameters array of a state configuration.

Arm — Agentic.Camera.Param.Arm

ParamTypeDefaultDescription
LengthMinfloat200.0Minimum arm length
LengthMaxfloat400.0Maximum arm length
BlendTimefloat0.5Seconds to blend the change
BlendCurveenumEaseInOutSee blend curves

FOV — Agentic.Camera.Param.FOV

ParamTypeDefaultDescription
FOVMinfloat90.0Minimum field of view
FOVMaxfloat90.0Maximum field of view
BlendTimefloat0.5Seconds to blend the change
BlendCurveenumEaseInOutSee blend curves

Offset — Agentic.Camera.Param.Offset

ParamTypeDefaultDescription
bOverrideSocketOffsetbooltrueOverride the socket offset
SocketOffsetvector(0,40,0)Offset at the camera end of the arm, in socket space — the shoulder offset
bOverrideTargetOffsetbooltrueOverride the target offset
TargetOffsetvector(0,0,60)Offset at the character end of the arm, in target space — the pivot
BlendTimefloat0.5Seconds to blend the offset change

Pitch — Agentic.Camera.Param.Pitch

ParamTypeDefaultDescription
PitchOffsetfloat0.0Degrees; negative looks down
BlendTimefloat0.3Seconds the offset blends over on enter and exit; 0 snaps
BlendCurveenumEaseInOutCurve shape of that blend

Lag — Agentic.Camera.Param.Lag

ParamTypeDefaultDescription
PositionLagSpeedfloat-1.0Override; -1 uses the mode default. Higher is snappier, lower floatier
bUseSameLagForBlendOutboolfalseUse this speed when exiting the state too

bUseSameLagForBlendOut is what makes a transition symmetric. Entering crouch at lag speed 5 and leaving it at the mode's default 12 reads as a slow settle and a fast snap back; setting the flag uses 5 in both directions.

The mode's Lag config also carries Lag.bDebugDraw, which draws the lag offset line, the target position sphere and the lag speed as text.


Blend Curves

Used by Arm, FOV, Pitch and the mode transition config.

CurveShapeUse for
Linearf(t) = tConstant rate, mechanical
EaseInt²Slow start, accelerating — deliberate actions
EaseOut1−(1−t)²Fast start, smooth settle — responsive
EaseInOutSmoothstepS-curve, the default and the natural choice
OvershootBack easing, ~10%Goes past the target and settles — punchy jumps
BounceBall physicsBounces at the end — landings
Snap1−2^(−10t)Very fast initial move — combat responsiveness
AnticipationPull back firstWindup before the move
SmoothStep3t²−2t³Hermite, relaxed and cinematic
ElasticDamped springSpringy oscillation
ExpoOut1−2^(−10t)Exponential ease out (identical to Snap)
CircularInOutCircular arcSmooth circular motion

Recommended starting points per state: EaseInOut for a crouch's arm, EaseOut for sprint arm and FOV, Snap for falling and for aim arm, SmoothStep for walking, Overshoot for a jump's arm, EaseOut for aim FOV.


Adding Your Own

A new behavior modifier is a UAgenticCameraModifier subclass; a new parameter modifier is a UAgenticCameraParam subclass overriding GetParamTypeId(). Either way the data side is three files in this order:

  1. DT_GameCameraTags.csv — the tag, added first, then reimported.
  2. DT_GameCameraModifiers.json — the tag → class mapping.
  3. DT_GameCameraModes.json — the modes or states that use it.

Then run Validate All Camera Tables: it cross-checks that contract and regenerates the schema your new parameter keys need to appear in.