Skip to content
pluginv1.0Blueprint only

ScarEyeCam

Cinematic FPS camera system.

Your game does not feel real because your camera is not. ScarEyeCam is a first-person camera system built on spring physics, with five presets, a Shooter and Horror mode system, and deep Blueprint control: 149 editable properties, 36 callable functions and 27 events. Add the component, pick a preset, press Play.

Engine support
Unreal Engine 5.2, 5.3, 5.4, 5.5, 5.6 and 5.7
Version
1.0
Backends
Not applicable

What you get

  • Five camera presets: Realistic, Cinematic, Horror, Arcade and Tactical
  • Shooter and Horror mode system with smooth blending
  • 149 editable Blueprint properties, 36 callable functions, 27 events
  • Sensitivity profiles: Low, Balanced, High and Custom
  • ADS with FOV spring and sway reduction
  • Sprint reactions, fire recoil with barrel drop, explosion response
  • Horror: heartbeat, panic, glitch, post-process and environmental triggers
  • Zero snapping: internal rotation pipeline with spring-based physics

What it feels like

Before any technical detail, here is what each preset delivers. ScarEyeCam is not a list of features. It is a feeling.

PresetThe feel
RealisticSmooth, grounded, believable. Feels like a real human carrying weight. Every step lands, every turn has momentum.
CinematicHeavy, slow, lingering. Every motion has purpose. Perfect for storytelling and walking simulators.
HorrorUnstable, breathing, unpredictable. You are not fully in control. The camera is alive and it is afraid.
ArcadeFast, sharp, responsive. Zero delay, pure gameplay. The camera does exactly what you want, instantly.
TacticalTight, precise, controlled. Medium weight with surgical responsiveness. Built for competitive accuracy.

Before and after

Without ScarEyeCamWith ScarEyeCam
Instant, robotic camera movementPhysical movement with weight and momentum
No weight or inertia on any actionSpring-based inertia on every rotation and offset
Landing feels like nothing happenedLanding drops the camera with spring-back weight
Firing a weapon is just a crosshair flashRecoil kicks, barrel drops, camera settles with weight
No emotional response from cameraDynamic breathing, panic, heartbeat and instability
Every game feels the same5 presets, 2 modes, 149 properties: your game, your feel

Who this is for

  • FPS developers who want realistic, weighted camera feel without months of engineering.
  • Horror creators who want player discomfort, tension and psychological dread baked into the camera.
  • Indie devs who want AAA-level camera quality without complex setup or C++ knowledge.
  • Marketplace asset creators who want a professional camera base to ship with their game templates.
  • Prototypers who want instant physical camera feel: add component, pick preset, press Play.

Plugin installation

ScarEyeCam is distributed as an engine plugin through the Fab Marketplace. It installs directly into your Unreal Engine version and is available across all projects that use that engine version.

Step 1: purchase and install from Fab

  1. 01Open the Epic Games Launcher and navigate to the Fab Marketplace, or visit fab.com directly.
  2. 02Find ScarEyeCam by searching for "ScarEyeCam" in the marketplace search bar, and open the product page.
  3. 03Click Install to Engine and select the Unreal Engine version you want (5.2 through 5.7). The plugin downloads and installs automatically.

ScarEyeCam supports UE 5.2 through 5.7. Install it to whichever engine version your project uses. You can install to multiple engine versions simultaneously.

Step 2: enable the plugin in your project

  1. 01Open your game project in Unreal Editor using the engine version you installed the plugin to.
  2. 02Go to Edit > Plugins to open the Plugins browser window.
  3. 03Search for "ScarEyeCam". It appears under the Camera category.
  4. 04Click the Enable checkbox.
  5. 05Restart the editor when prompted. This is required for the plugin module to load.

After restart, ScarEyeCam is fully installed. The ScarEyeCam Component now appears in the Add Component menu of any Character Blueprint. No C++ code required, no project settings to change, and no Build.cs modifications needed.

Verifying installation

  1. 01Open any Character Blueprint.
  2. 02Click Add Component.
  3. 03Search for "ScarEyeCam". If ScarEyeCam Component appears in the list, installation is complete.

If the component does not appear, verify the plugin is enabled in Edit > Plugins and that you restarted the editor after enabling it.

Adding ScarEyeCam to your character

Once the plugin is installed and enabled, adding the camera system to your game takes under one minute: add the ScarEyeCam Component to your Character Blueprint, select a preset in the Details panel, and press Play. No Blueprint wiring, no timelines, no C++ code.

Detailed walkthrough

  1. 01Open your Character Blueprint. This is the Blueprint that inherits from ACharacter, for example BP_FirstPersonCharacter in the first-person template.
  2. 02Click + Add in the Components panel. Search for "ScarEyeCam Component" and add it. It appears under your root component.
  3. 03Select the ScarEyeCam component. The Details panel shows all ScarEyeCam properties organised by category.
  4. 04Under ScarEyeCam > Presets, set Camera Preset to your desired feel: Realistic, Cinematic, Horror, Arcade or Tactical.
  5. 05Under ScarEyeCam > Mode, check either Enable Shooter Mode or Enable Horror Mode. Modes are mutually exclusive.
  6. 06Compile, Save, and press Play. Walk, sprint, jump and turn. The camera responds with physical weight immediately.

The component auto-detects your CameraComponent. If you have multiple cameras, for example a weapon camera, assign the correct one to Target Camera in the Details panel.

Leave both Shooter and Horror mode unchecked to get neutral spring smoothing without mode-specific effects. Useful for testing or custom setups.

First time user quick start

Add component. Set preset to Realistic. Enable Shooter Mode. Compile. Press Play. You now have a fully responsive FPS camera with physical weight, sprint reactions, landing impacts, strafe tilt and recoil support. Customise from there.

Camera presets

Presets are one-click camera personalities that adjust six global pipeline controls simultaneously. Select one in the Details panel under ScarEyeCam > Presets, or call ApplyPreset() from any Blueprint at runtime.

PresetSmoothnessWeightResponseImpactInertiaFOV
Realistic1.01.01.01.01.090
Cinematic1.61.50.70.81.485
Horror1.31.30.60.71.680
Arcade0.60.51.51.30.495
Tactical0.90.81.21.00.788

Presets are starting points. After applying one, tweak individual values in the Details panel. Changes persist until another preset is applied.

Call ApplyPreset() at runtime to change feel during gameplay, for example Cinematic for cutscenes and Tactical for combat.

Sensitivity profiles

Control how player input translates to camera movement. Independent of presets. Editable under ScarEyeCam > Sensitivity in the Details panel.

PropertyDefaultRangeDescription
LookSensitivity1.00.1 - 5.0Rotation spring speed multiplier
AimSensitivity0.60.1 - 3.0Multiplies LookSensitivity during ADS
Acceleration0.00.0 - 1.0Input curve. 0 = linear, 1 = max acceleration

Built-in profiles: Low (0.6 / 0.4 / 0), Balanced (1.0 / 0.6 / 0) and High (1.8 / 0.8 / 0.3). Retrieve them with GetDefaultSensitivityProfile("High").

Mode system (Shooter and Horror)

Two exclusive modes. Enabling one automatically disables the other. Toggle in the Details panel or call SetShooterMode() / SetHorrorMode() at runtime.

Shooter mode

Aggressive, clean, heavy impact. All horror systems are hard-gated off in code, not just via settings.

  • Sprint reactions: camera punches forward on sprint entry, lurches on stop, with roll sway during sprint.
  • Fire reactions: recoil kick with barrel-weight drop. Each shot feels heavy.
  • Strafe tilt: camera rolls during lateral movement.
  • ADS: FOV narrows, sway reduces, rotation tightens for precision.

Horror mode

Unstable, psychological, alive. The player never feels fully in control.

  • Heartbeat: physical camera pulse at panic-driven BPM with FOV micro-pulse.
  • Glitch: five types, being RotationJump, Jitter, MicroFreeze, PositionOffset and FreezeFrame.
  • Post-process: vignette, chromatic aberration, desaturation, motion blur and exposure flicker.
  • Panic: builds while moving, decays when still. Drives all horror systems.
  • Horror triggers: nine types via TriggerHorrorEvent(), being Jumpscare, Whisper, Hallucination, Darkness, ChaseStart, ChaseEnd, EntityNearby, EnvironmentShift and Custom.

Master switches

  • bEnableCameraSystem: global on/off. When false, the entire system is disabled.
  • bEnableSmoothing: when false, spring smoothing is bypassed. Useful for A/B comparison.

All Blueprint callable functions

Call these from any Blueprint that has a reference to the ScarEyeCam component. Drag from the component pin in the Event Graph and search.

Presets and sensitivity

FunctionWhat it does
ApplyPreset(Preset)Apply camera personality preset
ApplySensitivityProfile(Profile)Apply sensitivity profile
GetDefaultSensitivityProfile(Name)Get built-in: Low, Balanced or High

Mode control

FunctionWhat it does
SetShooterMode(bool)Enable or disable Shooter mode
SetHorrorMode(bool)Enable or disable Horror mode

Combat

FunctionWhat it does
AddRecoil(Pitch, Yaw)Simple recoil kick
AddDirectionalRecoil(P, Y, R, Push)Full recoil with roll and pushback
TriggerExplosionReaction(Loc, R, I)Directional explosion push
EnterADS()Enter aim-down-sights
ExitADS()Exit aim-down-sights

Horror

FunctionWhat it does
TriggerHorrorEvent(Type, Intensity)Trigger typed horror event (9 types)
TriggerScare(Intensity)Quick jumpscare shortcut
SetPanicLevel(0-1)Manually override panic level

Camera control

FunctionWhat it does
SetTargetFOV(float)Override FOV manually
ClearFOVOverride()Return to automatic FOV
PlayCameraShake(Class, Scale)Play an Unreal CameraShake on top
ResetCamera()Reset all springs. Call on respawn.

Lean

FunctionWhat it does
LeanLeft(0-1)Drive lean left. Call each tick.
LeanRight(0-1)Drive lean right. Call each tick.
SetLeanInput(-1 to +1)Combined lean axis
StopLean()Return to center lean

System toggles (15 functions)

Every subsystem is togglable at runtime. Springs reset cleanly when disabled.

SetHeadBobEnabled | SetBreathingEnabled | SetMicroMovementEnabled
SetLagEnabled | SetTiltEnabled | SetDynamicFOVEnabled | SetInertiaEnabled
SetAccelerationEnabled | SetProceduralShakeEnabled | SetBodycamEnabled
SetChaosEnabled | SetHeartbeatEnabled | SetGlitchEnabled
SetPostProcessEnabled | SetLeanEnabled

All 27 Blueprint events

These are BlueprintImplementableEvent functions. Override them in your Character Blueprint Event Graph to trigger sound, VFX, UI or gameplay logic. They fire automatically.

How to use any event: open your Character Event Graph, right-click, search the event name (for example OnCameraRecoil) and select it. A red event node appears with output pins. Connect it to your logic, such as Play Sound or Spawn Emitter.

Impact and movement

EventWhen it firesParameters
OnCameraImpactAny significant impactfloat Intensity
OnCameraShakeProcedural shake activefloat Intensity
OnCameraLandLanding from fallfloat ImpactStrength
OnCameraLandedLanding (legacy)(none)
OnCameraJumpedCharacter jumps(none)
OnCameraMovePlayer moving above thresholdfloat Speed
OnCameraIdlePlayer still for delay(none)
OnFootstepEach footstepbool bIsLeftFoot

Shooter

EventWhen it firesParameters
OnCameraRecoilWeapon recoil appliedfloat Intensity
OnFireReactionPost-recoil barrel dropfloat Intensity
OnSprintStartSprint beginsfloat EntrySpeed
OnSprintEndSprint ends(none)
OnSprintFootstepHeavy sprint stepbool, float Intensity
OnADSEnterEntered ADS(none)
OnADSExitExited ADS(none)

Horror

EventWhen it firesParameters
OnCameraGlitchAny glitch fires(none)
OnGlitchGlitch with type dataEScarGlitchType
OnHeartbeatPulseEach heartbeat(none)
OnHeartbeatHeartbeat with BPMfloat CurrentBPM
OnPanicThresholdPanic crosses 0.3 / 0.6 / 0.9float PanicLevel
OnHorrorTriggerHorror event triggeredType, float Intensity

Mode and system

EventWhen it firesParameters
OnCameraModeChangedMode switchedbool bIsHorror
OnModeBlendCompleteBlend finishedbool bIsHorror
OnPresetAppliedPreset changedEScarEyeCamPreset
OnLeanStartLean beginsfloat Direction
OnLeanEndLean returns to center(none)
OnLeanBlockedLean blocked by wall(none)

Blueprint workflow examples

Weapon fire with sound and barrel smoke

  • On Fire input, call AddRecoil(3.5, 0.8) on your ScarEyeCam component.
  • Override OnCameraRecoil in the Event Graph. Connect it to Play Sound 2D and wire Intensity to Volume Multiplier.
  • Override OnFireReaction and spawn an emitter at the weapon muzzle for barrel smoke.

Horror jumpscare from a trigger volume

  • In your Level Blueprint, on Overlap Begin, get the player ScarEyeCam component.
  • Call TriggerHorrorEvent(Jumpscare, 1.0).
  • In your Character Blueprint, override OnHorrorTrigger and branch on Type == Jumpscare.
  • On True: play a scare sound and flash a white UMG widget overlay, fading out over 0.2s.

Sprint sounds with foot intensity

  • Override OnSprintStart and start a looping heavy-breathing audio component.
  • Override OnSprintFootstep, play a heavy boot impact, wire Intensity to Volume, and use bIsLeftFoot to alternate variations.
  • Override OnSprintEnd and fade out the breathing loop over 1 second.

Dynamic horror music from panic level

  • Override OnPanicThreshold and branch on PanicLevel.
  • At 0.3 fade in a tension music layer, at 0.6 add distortion, at 0.9 go to full chase music.
  • Override OnCameraIdle and fade all layers back to ambient over 5 seconds.

ADS UI (scope overlay)

  • Override OnADSEnter. Set the crosshair widget to Hidden and enable the scope overlay widget.
  • Override OnADSExit. Show the crosshair and disable the scope overlay.

Cutscene feel switch

  • At cutscene start, call ApplyPreset(Cinematic). The camera becomes heavy and cinematic.
  • At cutscene end, call ApplyPreset(Tactical) to return to gameplay feel.
  • Override OnPresetApplied to crossfade the audio mix to match the new preset.

All editable properties

You do not need to touch most of these. Presets handle everything. They exist for advanced customisation when you need precise control over specific behaviours.

Main

PropertyTypeDefaultDescription
bEnableCameraSystembooltrueGlobal on/off
bEnableSmoothingbooltrueToggle spring smoothing

Presets and mode

PropertyTypeDefaultDescription
ActivePresetenumRealisticCamera personality
bEnableShooterModeboolfalseShooter mode
bEnableHorrorModeboolfalseHorror mode
ModeBlendDurationfloat1.0Blend time in seconds

Pipeline

PropertyTypeDefaultDescription
GlobalSmoothnessfloat1.0Damping multiplier
GlobalResponsivenessfloat1.0Stiffness multiplier
SoftLimitStrengthfloat0.30Rotation limit softness
LeanEaseStrengthfloat0.65Lean input easing

Motion and inertia

PropertyTypeDefaultDescription
GlobalWeightfloat1.0Camera mass feel
RotationResponsivenessfloat1.0Rotation speed
InertiaStrengthfloat1.0Input-to-lag ratio

Impact

PropertyTypeDefaultDescription
ImpactIntensityfloat1.0Master impact scale (0-5)
ImpactRecoverySpeedfloat1.0Impact settle speed
ImpactEventThresholdfloat0.5Min magnitude for event
bStepMotionEnabledbooltrueFootstep head bob
LandingImpactIntensityfloat4.5Landing drop strength
LandingMaxImpactfloat12.0Max landing clamp
JumpImpactIntensityfloat1.8Jump camera kick

Shooter

PropertyTypeDefaultDescription
bTiltEnabledbooltrueStrafe tilt
bProceduralShakeEnabledbooltrueSpeed-driven shake
bBodycamEnabledbooltrueOff-center mount
bDynamicFOVEnabledbooltrueMovement FOV
RecoilSpringStiffnessfloat280Recoil recovery speed
IdleFOV / WalkFOV / SprintFOVfloat90 / 90 / 95FOV per state
SprintSpeedThresholdfloat420Sprint activation

ADS

PropertyTypeDefaultDescription
ADSFOVfloat65.0ADS field of view
ADSFOVSpeedfloat12.0FOV transition speed
ADSStabilizationfloat0.6Sway reduction (0-1)

Lean

PropertyTypeDefaultDescription
bLeanEnabledbooltrueToggle lean
LeanMaxAnglefloat8.0Max roll in degrees
LeanMaxOffsetfloat18.0Max lateral offset in cm
LeanForwardOffsetfloat3.5Forward shift in cm

Horror

PropertyTypeDefaultDescription
bBreathingEnabledbooltrueBreathing oscillation
bChaosEnabledbooltrueRandom micro-jolts
bHeartbeatEnabledbooltrueHeartbeat pulse
bGlitchEnabledbooltrueCamera glitches
bPostProcessEnabledbooltrueHorror post-process
PanicBuildRatefloat0.12Panic build speed
PanicDecayRatefloat0.05Panic decay speed
MaxVignetteIntensityfloat0.65Max vignette
MaxChromaticAberrationfloat3.5Max chromatic aberration
MinColorSaturationfloat0.65Min saturation

Events config

PropertyTypeDefaultDescription
MoveEventSpeedThresholdfloat50.0Min speed for OnCameraMove
IdleEventDelayfloat1.5Idle delay in seconds

Per-mode settings reference

Each mode has its own FScarModeParams struct visible under ScarEyeCam > Shooter / Horror. Values blend smoothly during mode transitions.

PropertyShooter defaultHorror default
StepVerticalImpulse32.0 (strong punch)18.0 (soft, heavy)
StepSpringStiffness140.0 (fast snap-back)55.0 (slow, lingering)
BreathingIntensityV0.15 (minimal)0.60 (very visible)
InertiaInputScale0.09 (responsive)0.24 (24% lag)
RotationSpringStiffness32.0 (tight)5.0 (dreamy)
HeartbeatBPM0.0 (disabled)68.0 (resting rate)
GlitchChance0.0 (none)0.12 (12% per check)
PostProcessIntensity0.0 (clean)1.0 (full horror)
SprintEntryPitch2.2 (strong punch)0.8 (weak, panicked)
FireDropIntensity0.5 (noticeable)0.15 (minimal)
LeanJitterScale0.0 (none)0.45 (camera trembles)

The full FScarModeParams struct contains 40 or more properties covering step motion, breathing, inertia, rotation, tilt, acceleration, shake, bodycam, chaos, focus drift, micro movement, heartbeat, glitch, post-process, lean, sprint and fire reaction.

Read-only state variables

Use Get nodes in Blueprint to read these for UI, animation, AI or gameplay logic. They update every frame.

VariableTypeWhat it tells you
ActiveModeenumCurrent mode: None, Shooter or Horror
ModeBlendAlphafloatBlend progress (0 = Shooter, 1 = Horror)
CurrentLeanOutputfloat-1 = full left, 0 = center, +1 = full right
bIsADSboolTrue while aiming down sights
CurrentSpeedfloatHorizontal speed in cm/s
bIsSprintingboolTrue when above sprint threshold
bIsMovingboolTrue when speed is over 10 cm/s
bIsInAirboolTrue when falling or jumping
CurrentPanicLevelfloatPanic 0-1 (Horror only)
CurrentHeartbeatBPMfloatCurrent BPM (Horror only)

Tuning cheatsheet

SymptomFix
Camera feels too floatyIncrease GlobalResponsiveness (1.3). Decrease GlobalSmoothness (0.7). Decrease InertiaStrength (0.5).
Camera feels too stiffIncrease GlobalSmoothness (1.4). Increase GlobalWeight (1.3). Increase InertiaStrength (1.2).
Impacts not heavy enoughIncrease ImpactIntensity (1.5 to 2.0). Decrease ImpactRecoverySpeed (0.7).
Impacts too violentDecrease ImpactIntensity (0.5). Increase ImpactRecoverySpeed (1.5).
Horror not scary enoughIncrease PanicBuildRate (0.3). Increase MaxChromaticAberration (6.0). Decrease HorrorSettings.RotationSpringStiffness (3.0).
ADS too loose or too tightAdjust ADSStabilization (0-1). Lower for natural sway, higher for laser-steady.

Use cases, limitations and performance

Where to use ScarEyeCam

  • Bodycam shooters
  • Tactical FPS
  • Horror exploration
  • Walking simulators and narrative adventures
  • Story-driven cinematic projects
  • Any first-person game that needs physical camera feel

Not designed for

  • Static cameras or security camera systems
  • RTS, top-down or isometric games
  • Projects without a player-controlled first-person camera

Honest positioning. We would rather you know exactly what this does than oversell it.

Performance

ScarEyeCam runs entirely on the game thread with zero allocations per frame. All systems are spring-based math with no traces, no line checks and no collision queries. Subsystems toggled off consume zero CPU. Tested at 120+ FPS on mid-range hardware with all systems active.

Supported platforms

Win64, Mac, Linux, Android and iOS. The plugin uses only core engine APIs, with no platform-specific code, and compiles on all platforms supported by UE 5.2 through 5.7.

Stuck on something?

We answer every serious message ourselves. Discord is the fastest way to get an answer from the person who built the plugin.