GAMEPLAY & MOVEMENT

Unreal Engine 5

Movement was built on Epic's motion-matching Game Animation Sample, refactored from Blueprint to C++ and rebuilt on the Gameplay Ability System. Traversal, stealth, and combat movement all run through the same tag-driven, server-authoritative framework, while AnimLayers and curves handle its activation.

Basic Movement: Walk, Run, Jump, Crouch

Enhanced Movement: Hurdle, Vault, Mantle, Slide

Stance: Orient-to-Movement, Strafe

Traversal movement Combat movement Stealth movement Aerial traversal

Experience-Driven Input Config

Input configurations are delivered with the Hero Pawn Data on each Experience, so every world maps its own controls through the same data path. The config splits actions into two kinds: Native Actions bind directly to movement and camera functions, while Ability Actions are routed by Gameplay Tags to the abilities they activate. This is the same input model that lets equipment grant and remove its own bindings on the Inventory and Weapon side.

Native Input Actions

Move · Look · Look (Gamepad, w/ Aim Sensitivity) · Crouch · Slide · Walk · Strafe

Ability Input Actions

Jump · Traverse · Sprint · Interact · Show Inventory · Aim · Weapon Fire · Reload · WeaponUnequip · Lethal

Custom Character Movement

A custom CharacterMovementComponent owns the movement math. Walk, Run, and Sprint operate with a configurable fixed-speed model, where distinct walk and run speeds are chosen by an input threshold rather than continuously scaling with stick tilt. This gives predictable locomotion that the motion-matching animation set and the AI's velocity-driven gait can rely on.

Slide is computed on the component's Pre-Movement Tick Component, so it resolves slope angle and momentum before the movement update runs. This keeps the slide physically grounded on ramps instead of fighting the simulation after the fact, while also predicting angular slope.

For testing, Stance can be switched dynamically between Orient-to-Movement and Strafe at runtime, and abilities drive it: activating Aim automatically puts the character into strafe so the body faces the shot, then releases back to orient-to-movement without manual state juggling.

Traversal as a Gameplay Ability

Hurdle, vault, and mantle were refactored to C++ and moved into a custom Gameplay Ability. Its activation policy is while-input-active, and on activation it cancels jump and blocks weapon-related tags — so the player can't fire mid-vault, and the ability cleanly owns the character for the duration of the traversal.

Obstacles in the world implement a TraversableObstacleComponent with splines that describe the climb path. To make that practical across a whole level, I built a base Traversable class that attaches to meshes, plus an empty, meshless variant that provides a box collision on the traversable trace channel. Highly reusable and scales to any size to mark up geometry that has no traversable mesh of its own.

Weapon Overlays & Anim Layers

Equipping a weapon activates its own AnimLayer, so the same locomotion drives a different upper-body pose per weapon state. It's built on the ALS Overlay System (Polygon Hive's GASP / ALS) with custom Additive Curves, paired with an Animation Interface between Blueprints to sync Weapon States, layered on State Machines with Choosers for selecting the right pose set.

In Development

Primary melee & combo / agility attacks

Weapon holstering & melee anim layers

Motion-warp combat targeting