A mode-stacked, data-driven camera — push and pop blendable modes for third-person, aim, top-down, and lock-on with no per-frame camera code.

Gameplay · Camera · Unreal Engine 5

Compose your camera. Don't code it every frame.

Push and pop modular camera modes onto a blend stack and the runtime blends them by weight — smooth transitions between third-person, top-down, aim, and lock-on with no tick-camera code. It ships with the extras games actually need: over-the-shoulder framing, zoom, lag, recenter, shake, occlusion fade, and a multi-lock-point lock-on built on Unreal's Gameplay Targeting System.

Video coming soon

Why CrimsonCamera

A complete, data-driven camera layer — composable modes, the polish games ship with, and a Souls-style lock-on.

A mode stack that blends

Push and pop modular UCrimsonCameraMode classes; the stack blends their output by weight every frame. Switching from third-person to aim to lock-on is a smooth, code-light transition instead of a hard cut.

Third-person & top-down, built in

Ready-made modes with pitch-driven offset curves and penetration avoidance. Subclass to tweak, or push one as-is and you already have a camera that follows your pawn.

Shoulder, zoom, lag & recenter

Over-the-shoulder framing, a clamped dolly zoom, optional view lag that never touches control rotation, and idle / on-demand recenter — all toggled and tuned on the mode.

Fade what blocks the shot

An occlusion component traces from camera to pawn and fades tagged walls and foliage via a material scalar — clean shots in tight spaces, alongside or instead of pulling the camera in.

Data-driven lock-on

A multi-lock-point target lock-on built on Unreal's Gameplay Targeting System. Reorder selection, filters, and sort tasks to retune targeting with no recompile — switch targets by screen direction and cycle weak points.

Local by design, multiplayer-clean

Every feature runs on the locally-controlled pawn and produces that client's view. There's no camera state to replicate and nothing to desync — lock-on only moves the local control rotation, which already replicates as the player's view.

A closer look

A following camera in five steps, zero tick code

Point your PlayerController at ACrimsonPlayerCameraManager, add a UCrimsonCameraComponent to your pawn, make a third-person mode, and push it once on BeginPlay. The camera sits behind your pawn and follows it — no per-frame camera logic anywhere.

Video coming soon

Switch views by pushing modes

Push a tag-keyed override when something starts — aim, mount, cutscene — and pop it when it ends; most-recently-pushed wins. Or override Determine Camera Mode to pick the base view from game state each frame. Overrides always take precedence.

Video coming soon

Souls-style lock-on, fully data-driven

Author a targeting preset (selection → filters → sort) and a lock-on config, drop a component on the player and a lockable component on targets, then bind input. One actor can carry several lock points, so players cycle a boss's weak spots. It depends only on the Targeting System — never on your team plugin.

Video coming soon

Technical details

Engine
UE 5.8
Platforms
Windows, Mac, Linux
Blueprint-ready
Yes
C++ required
No
Network replicated
No
Dependencies
CrimsonCommon, GameplayTargetingSystem, GameplayTags
Last updated
June 2026

Frequently asked questions

Do I need C++ to use it?
No. The camera manager, component, modes, push/pop, shoulder, zoom, lag, recenter, shake, occlusion fade, and the whole lock-on system are Blueprint-accessible. The only C++-only API is the optional UI-camera takeover, and you can wrap that in a single BlueprintCallable function.
Does it work in multiplayer?
Yes — and there's nothing to manage. Camera is a local concern: every feature runs on the locally-controlled pawn and produces only that client's view. There's no camera state to replicate, and lock-on changes only the local control rotation, which already replicates as the player's view. Just don't treat the camera's locked target as server-authoritative.
Does it depend on other Crimson plugins?
Only CrimsonCommon (logging + shared types), per the suite's cardinal rule. Lock-on additionally uses Unreal's first-party Gameplay Targeting System, which enabling the plugin turns on for you. Everything except lock-on works without it.
Is the lock-on hard to set up?
No — it's data-driven, not code. You author a targeting preset (selection → filters → sort) and a config asset, add two components, and bind input. Reorder or disable tasks to change targeting with no recompile. Team filtering is an optional task, so lock-on never depends on a team plugin.
How does it relate to the free CrimsonCommon foundation?
CrimsonCamera is a premium gameplay plugin that builds on the free CrimsonCommon base. Install CrimsonCommon first (it's free), then drop CrimsonCamera in — it slots into the same conventions the rest of the suite uses.

Give your game a camera that blends

Set the manager, add the component, push a mode — you've got a smooth third-person camera with no tick code. Then layer in shoulder, zoom, occlusion fade, and data-driven lock-on. Start with the Quick Start or follow the course.