Build a Game Character with GASP + ALS

Add advanced locomotion and overlay layering to a character in Unreal Engine 5.

Introduction

30 Second Summary

Think about how characters in AAA games shift their posture when injured, adopt a combat stance when drawing a weapon, or walk differently based on personality. That fluid adaptation is what separates professional animation from stiff, robotic movement.

In this project, you will build a game character with production-grade locomotion that dynamically changes movement style based on gameplay context. You will use Unreal Engine 5.7's Motion Matching combined with the Advanced Locomotion System's overlay layering to make it happen.

What You'll Build

A third-person character in Unreal Engine 5.7 that combines Motion Matching locomotion with ALS overlay layering to switch between distinct movement styles at runtime.

By the end of this project, you'll have:

  • A configured GASP-ALS project with a permanently enabled State Machine locomotion setup using skeletal mesh tags.
  • Blueprint input bindings that switch overlay states (Masculine, Feminine, Injured) with keyboard presses.
  • A weapon attachment system that triggers combat overlay transitions on equip and unequip.
  • Secret Mission: An automatic gameplay-triggered overlay that shifts locomotion to Injured when health drops below a threshold.

Are there any prerequisites?

You need Unreal Engine 5.7.4 installed on Windows. Basic familiarity with navigating the UE Editor (Content Browser, Details panel, Blueprint Editor) is helpful but not required.

Download and Open the GASP-ALS Project

Every professional game character needs a locomotion system that handles walking, running, stopping, and turning with fluid transitions between each state.

The PolygonHive GASPALS project gives you exactly this. It combines Unreal Engine's Motion Matching system (800+ animations for lifelike movement) with the Advanced Locomotion System's overlay layering (dynamic posture changes based on gameplay state). In this step, you will download this project and verify it runs correctly.

In this step, get ready to:
  • Download the GASPALS project from GitHub.
  • Open the project in Unreal Engine 5.7.4.
  • Verify Motion Matching locomotion works in Play mode.
Download the GASPALS UE 5.7 release

The GASPALS project is hosted on GitHub as a complete Unreal Engine project. You will download it as a ZIP file, so no Git installation is required.

  • Open your web browser and navigate to the GASPALS releases page.
  • Find the release labeled Unreal Engine 5.7 (it is marked as Latest).
  • Under Assets, click Source code (zip) to download the project.
  • Once the download finishes, right-click the ZIP file in File Explorer and select Extract All.
  • Choose a location on your drive (e.g., C:\Projects\GASPALS) and click Extract.

Why download from PolygonHive instead of the official Game Animation Sample?

Epic's Game Animation Sample is available on Fab, but it does not include the ALS overlay system. The PolygonHive GASPALS project ships as a working project with ALS already integrated. This means you spend time on animation concepts instead of merging config files.

Download taking a long time?

The GASPALS ZIP is several gigabytes. On slower connections, this can take 10+ minutes. Make sure your extraction destination has at least 4 GB of free space.

help me troubleshoot my GASPALS download

Open the project in Unreal Engine 5.7.4

The extracted folder contains a GASPALS.uproject file. Double-clicking this file tells Windows to open the project in your installed Unreal Engine.

  • In File Explorer, navigate to the folder where you extracted the ZIP (e.g., C:\Projects\GASPALS).
  • Double-click GASPALS.uproject.
  • If prompted to select an engine version, choose Unreal Engine 5.7.
  • If prompted about enabling plugins, click Yes.
  • Wait for shaders to compile and the project to load.

Why does shader compilation take so long?

The first time you open any Unreal Engine project, the engine compiles thousands of shaders for your specific GPU hardware. This is a one-time process for this project.

On most machines this takes 5 to 20 minutes, but it can take longer depending on your hardware. Subsequent launches load much faster because the compiled shaders are cached.

Stuck on shader compilation for a very long time?

If the progress bar appears stuck at a percentage for more than 30 minutes, open Task Manager and check that ShaderCompileWorker processes are still running. If they show CPU activity, the compilation is progressing. Let it finish.

If CPU activity has dropped to zero and nothing is happening, try closing the engine, deleting the DerivedDataCache folder inside the project directory, and reopening GASPALS.uproject.

help me fix shader compilation issues

Verify the project runs

Once the editor finishes loading, you should see the default level with a character ready to control. Time to confirm everything works.

  • Press Alt+P to enter Play mode in the viewport.
  • Move the character with W, A, S, D and observe how locomotion transitions between walking, running, and directional changes.
  • Walk toward the Game Animation Widget (the floating in-game panel visible in the level) to confirm the overlay switcher is accessible.
  • Press Escape to stop Play mode.

The character should walk, run, and transition fluidly between movement states. Directional changes blend seamlessly thanks to Motion Matching selecting the best animation from the 800+ animation database in real time.

What is Motion Matching?

Traditional animation systems use state machines with hand-authored transitions. Motion Matching takes a different approach. It searches a large database of animations every frame and picks the clip that best matches the character's current velocity, direction, and intended movement.

The result is more natural-looking locomotion with fewer manual transition rules to maintain.

Character not moving or animations look broken?

Make sure you clicked inside the viewport after pressing Alt+P. If the viewport does not have focus, keyboard input goes to the editor instead of the character.

If animations appear to slide or pop, shaders may still be compiling in the background. Look at the bottom-right corner of the editor for a shader compilation progress indicator. Wait for it to finish, then try Play mode again.

help me fix character movement in the GASPALS project

Your GASPALS project is loaded and the Motion Matching locomotion is running. Next up, you will force the project to permanently use its State Machine locomotion architecture, which gives you a more customizable animation setup for overlay layering.

Force Permanent State Machine Locomotion

Your GASP-ALS project is running with smooth Motion Matching locomotion. The character walks, runs, and transitions fluidly between movement directions.

The project also includes a second, more customizable animation architecture: the State Machine setup. In this step, you'll force the character to permanently use this architecture so it persists across editor sessions without relying on the Game Animation Widget.

In this step, get ready to:
  • Understand the two animation architectures in the GASP-ALS project.
  • Add the Force SM Setup tag to permanently enable State Machine locomotion.
  • Verify that State Machine locomotion persists across editor sessions.
Understand the two animation architectures

The GASP-ALS project ships with two locomotion modes that drive the character's movement animations differently.

What are the two locomotion modes?

The first mode is full Motion Matching. It uses 800+ animations and dynamically selects the best matching pose based on the character's current movement. This is the default mode when you press Play.

The second mode is the State Machine setup. It uses under 400 animations and combines traditional state machines with Choosers and Blend Stacks. This approach is more performant and easier to customize.

Why force State Machine permanently?

The Game Animation Widget in the level lets you toggle between these modes during Play. However, those settings reset every time you stop Play or reopen the project.

By adding a tag directly to the character's skeletal mesh, you bypass the widget entirely. The State Machine architecture activates every session without manual toggling.

Add the Force SM Setup tag to the character

The GASP-ALS project reads tags from the Skeletal Mesh Component to determine which locomotion architecture to activate. Adding a specific tag forces the State Machine path permanently.

  • In the Content Browser at the bottom of the editor, navigate to the Blueprints folder.
  • Double-click CBP_SandboxCharacter to open the Blueprint Editor.
  • In the Components panel (top-left of the Blueprint Editor), click the Skeletal Mesh Component to select it.
  • In the Details panel on the right, scroll down to find the Tags section (listed under the component properties, also called Component Tags).
  • Click the + button next to Component Tags to add a new entry.
  • Type the exact value Force SM Setup into the new tag field. Capitalization and spacing matter.
  • Click Compile in the toolbar at the top of the Blueprint Editor.
  • Click Save next to the Compile button.

What does this tag do?

The CBP_SandboxCharacter Blueprint checks for specific tags on its Skeletal Mesh Component at startup. When it finds Force SM Setup, it activates the State Machine locomotion path instead of the full Motion Matching path.

This is the same mechanism used internally by CBP_SandboxCharacter_SetupComparison to compare the two architectures side by side.

Don't see the Tags section?

Make sure you selected the Skeletal Mesh Component in the Components panel, not the root component or the character Blueprint itself. The Component Tags property only appears when a component is selected.

If the Details panel feels empty, try scrolling down or using the search bar at the top of the Details panel. Type tag to filter directly to the tags property.

Help me find the Component Tags property in the Details panel.

Verify the State Machine is active

With the tag saved, the character should now permanently use State Machine locomotion. You will confirm this persists even after restarting the editor.

  • Press Alt+P to enter Play mode.
  • Move the character with WASD and observe that locomotion remains smooth.
  • Walk, run, and change direction to confirm the movement still blends fluidly between states.
  • Press Escape to stop Play mode.

How can I confirm it is the State Machine?

To verify the State Machine is driving locomotion, select the character during Play mode and open the Animation Blueprint debugger using the Anim Graph viewer. You should see state machine nodes active rather than the full motion matching trajectory path.

The movement will look similar to Motion Matching because the State Machine uses Choosers and Blend Stacks for smooth transitions. The underlying architecture is different even if the visual result is comparable.

  • Close the Unreal Editor completely.
  • Reopen the project by double-clicking GASPALS.uproject in your project folder.
  • Once the editor loads, press Alt+P again and move the character.
  • Confirm that State Machine locomotion is still active without needing to use the Game Animation Widget.

Character movement looks broken after restart?

Double-check the tag value is exactly Force SM Setup with those exact capital letters and a space between each word. A typo here means the Blueprint won't recognize the tag.

Also verify you compiled and saved the Blueprint before closing the editor. Unsaved changes are lost on restart. Reopen CBP_SandboxCharacter, select the Skeletal Mesh Component, and confirm the tag still appears in the Component Tags array.

My character's movement broke after adding the Force SM Setup tag.

Your character now permanently uses State Machine locomotion. Next up, you'll wire keyboard inputs to switch between overlay states, giving your character distinct movement personalities at the press of a button.

Wire Overlay Switching to Input Events

Your character has smooth State Machine locomotion, but right now it always moves the same way. In a real game, a character's movement style should change based on context. A soldier carrying a weapon moves differently than someone walking casually.

The ALS overlay system solves this by layering different postures and gaits on top of the base locomotion. In this step, you will create keyboard inputs that switch between overlay states at runtime. Pressing a key will instantly change how your character holds their body and moves through the world.

In this step, get ready to:
  • Create Input Action assets and map them to the 1, 2, and 3 keys.
  • Wire each input event to the Set Overlay State function with the correct GameplayTag.
  • Test real-time overlay switching between Masculine, Feminine, and Injured locomotion styles.
Set up Input Actions for overlay switching

Unreal Engine's Enhanced Input system uses Input Action assets to define what inputs your game responds to. You need three Input Actions, one for each overlay state you want to trigger.

  • In the Content Browser, navigate to the Input folder.
  • Right-click in the folder, select Input > Input Action.
  • Name the first Input Action IA_Overlay1.
  • Repeat the process to create two more Input Actions: IA_Overlay2 and IA_Overlay3.

You should now see three new Input Action assets in your Input folder.

Next, you need to map these actions to physical keys using the project's Input Mapping Context.

  • In the Input folder, locate and double-click the Input Mapping Context asset used by the project to open it.
  • Click the + button next to Mappings to add a new mapping.
  • Set the Input Action to IA_Overlay1 and assign it to the 1 key.
  • Add another mapping for IA_Overlay2 assigned to the 2 key.
  • Add a third mapping for IA_Overlay3 assigned to the 3 key.
  • Save the Input Mapping Context.

What is an Input Mapping Context?

An Input Mapping Context connects Input Actions (abstract gameplay events) to physical keys or buttons. This separation means you can remap controls without touching your gameplay logic.

The GASPALS project already has an Input Mapping Context with movement and camera actions defined. You are adding your three overlay actions to the same context so they activate alongside the existing controls.

Don't see an Input folder?

The Input folder may be nested inside a subfolder of the project's content directory. Use the Content Browser's search bar to search for existing Input Action assets (like IA_) to find where the project stores its input assets. Create your new actions in the same location.

Help me find where Input Actions are stored in the GASPALS project

Call Set Overlay State from input events

Now you need to connect the input events to the overlay system. The GASPALS plugin exposes a function that changes the character's overlay state using GameplayTags. Each tag identifies a specific overlay (Masculine, Feminine, Injured).

  • Open CBP_SandboxCharacter and navigate to its Event Graph.
  • Locate the section marked with a red comment block labeled Set Overlay State. This is the GASPALS plugin's overlay switching logic.

Where are the GameplayTags defined?

The GameplayTags for overlays are defined in Config/Tags/GameplayTags_GASPALS.ini. You can open this file in a text editor to see the exact tag hierarchy and confirm the tag names for each overlay state.

  • Right-click in the Event Graph and search for Enhanced Input Action to add an event node.
  • In the node's details, set the Input Action to IA_Overlay1.
  • From the Triggered execution pin of this node, call the Set Overlay State function.
  • Set the GameplayTag parameter to the Default/Masculine overlay tag.

Repeat this process for the other two overlays.

  • Add a second Enhanced Input Action event node for IA_Overlay2.
  • Connect its Triggered pin to Set Overlay State with the Feminine overlay GameplayTag.
  • Add a third Enhanced Input Action event node for IA_Overlay3.
  • Connect its Triggered pin to Set Overlay State with the Injured overlay GameplayTag.
  • Click Compile, then click Save on the Blueprint.

What does this Blueprint logic do?

Each Enhanced Input Action event fires when the mapped key is pressed. The Set Overlay State function tells the ALS overlay system to transition to a different animation layer.

The overlay does not replace the base locomotion. It layers on top of it using Linked Anim Layers. This means the character keeps walking, running, and turning smoothly. Only the posture, arm position, and gait style change.

Can't find Set Overlay State?

Make sure you are searching in the Event Graph of CBP_SandboxCharacter, not a different Blueprint. The function is provided by the GASPALS plugin and should appear when you search for it in the right-click context menu. If it does not appear, check that the GASPALS plugin is enabled under Edit > Plugins.

Help me find the Set Overlay State function in my GASPALS Blueprint

Test overlay switching in Play mode
  • Press Alt+P to enter Play mode.
  • Move the character around with WASD in the default state.
  • Press 1 to switch to the Default/Masculine overlay.
  • Press 2 to switch to the Feminine overlay.
  • Press 3 to switch to the Injured overlay.

Observe how the character's posture, arm positioning, and gait change for each overlay. The Injured overlay produces a limping, hunched movement while the base locomotion continues underneath.

  • Try switching overlays while sprinting or changing direction to see how they blend with the State Machine locomotion.
  • Press Escape to stop Play mode.

What should I see?

Each overlay produces a visually distinct locomotion style. The Masculine overlay has a wider, more confident stance. The Feminine overlay adjusts hip and shoulder movement. The Injured overlay adds a pronounced limp and hunched posture.

Transitions between overlays should be smooth and should not break the base movement. The character keeps responding to WASD input without interruption.

Pressing 1/2/3 does nothing?

Make sure you clicked Compile on the Blueprint before playing. Also confirm that the Input Mapping Context has your three new mappings saved. If the keys still do nothing, check that the Enhanced Input Action nodes reference the correct Input Action assets (IA_Overlay1, IA_Overlay2, IA_Overlay3) and not empty fields.

Help me debug why my overlay input isn't working in UE 5.7

Your character now dynamically switches between three distinct movement styles with a single keypress. Next up, you will attach a weapon to the character and trigger a combat overlay that changes how the character moves when armed.

Set Up Weapon Attachment with Combat Overlay

Your character now responds to keyboard input with distinct overlay states. Pressing 1, 2, or 3 switches locomotion style on command.

In professional games, overlay transitions often happen automatically based on gameplay events. Equipping a weapon is a perfect example. When a character draws a weapon, their entire posture and gait should shift to a combat stance. In this step, you will wire up a weapon attachment system that simultaneously places a mesh in the character's hand and triggers a combat overlay transition.

In this step, get ready to:
  • Explore the GASPALS weapon attach system and skeleton sockets.
  • Wire a weapon equip input to overlay transitions using toggle logic.
  • Test the full equip and unequip flow during Play mode.
Locate the weapon attach system

Before building the equip logic, you need to understand how the GASPALS project positions weapons on the character. The system uses skeleton sockets to define attachment points on bones.

  • In the Content Browser, navigate to Plugins/GASPALS/Content to explore the plugin's content folder.
  • Look for weapon Blueprint assets. Examine how they reference character sockets for placement.
  • Note that the ALS weapon system uses the hand_r socket (right-hand grip) to position weapons on the character's skeletal mesh.

What is a skeleton socket?

A socket is a named attachment point offset from a bone in a skeletal mesh. When you attach a mesh to a socket, it moves with that bone during animation. The hand_r socket sits on the right hand bone, so any weapon attached there follows the hand through every animation pose.

Wire weapon equip to overlay transition

You will now create a new Input Action for weapon equipping and wire it to both a weapon mesh attachment and a combat overlay state change. This uses the same Enhanced Input workflow you used for overlay switching in the previous step.

  • In the Content Browser, navigate to the Input folder where your IA_Overlay1, IA_Overlay2, and IA_Overlay3 assets live.
  • Right-click in the Asset View, expand Input, and select Input Action.
  • Name the new asset IA_EquipWeapon.
  • Open the project's Input Mapping Context asset (the same one you added keys 1, 2, 3 to earlier).
  • Add a new mapping entry for IA_EquipWeapon and assign it to the E key.

Why a separate Input Action for equip?

Each Input Action represents a single player intent. Overlay switching and weapon equipping are different intents with different consequences. Keeping them as separate assets makes the system easier to debug and extend later.

Now wire the toggle logic inside the character Blueprint.

  • Open CBP_SandboxCharacter and navigate to the Event Graph.
  • In the My Blueprint panel on the left, click the + button next to Variables to add a new variable.
  • Name it bWeaponEquipped and set its type to Boolean. Leave the default value as false.
  • Click Compile to register the new variable.

What does bWeaponEquipped do?

This boolean tracks whether the weapon is currently equipped. Each time the player presses E, your logic checks this variable to decide whether to equip (spawn and show the weapon) or unequip (hide and revert). This is a standard toggle pattern in game development.

  • Right-click in the Event Graph and search for Enhanced Input Action IA_EquipWeapon to add the input event node.
  • From the Pressed execution pin, add a Branch node.
  • Drag bWeaponEquipped into the graph as a Get node and connect it to the Branch's Condition pin.

Now build the "equip" path (Branch False, meaning weapon is not yet equipped).

  • From the False pin, add a node to spawn or set-visible a weapon Static Mesh Component attached to the hand_r socket on the character's Skeletal Mesh Component.
  • After the attachment node, call Set Overlay State with the weapon/combat overlay GameplayTag (find the combat tag in Config/Tags/GameplayTags_GASPALS.ini).
  • Add a Set bWeaponEquipped node and set the value to true.

Next, build the "unequip" path (Branch True, meaning weapon is currently equipped).

  • From the True pin, add a node to hide or destroy the weapon mesh component.
  • Call Set Overlay State with the Default overlay GameplayTag to revert the character's posture.
  • Add a Set bWeaponEquipped node and set the value to false.
  • Click Compile, then Save the Blueprint.

How does the attachment work?

The hand_r socket is defined on the character skeleton's right hand bone. When you attach a Static Mesh Component to this socket, Unreal Engine parents the mesh to that bone. The weapon then follows every animation frame of the hand, including overlay transitions that change arm positioning.

The Socket Name parameter on the attach node must match the exact socket name defined in the skeleton. Spelling or capitalization mismatches cause the weapon to snap to the mesh origin instead.

Blueprint won't compile?

Make sure the bWeaponEquipped variable type is set to Boolean, not a different type. Check that both the True and False paths from your Branch node have complete execution chains ending in Set bWeaponEquipped.

Help me debug my weapon equip Blueprint logic.

Test the full weapon and overlay flow
  • Press Alt+P to enter Play mode.
  • Move the character around using WASD in the default state.
  • Press E to equip the weapon.

You should see two things happen simultaneously: the weapon appears in the character's right hand, and the character's posture shifts to a combat stance with arms up and more deliberate movement.

  • Move around, sprint, and change direction to observe how the combat overlay affects all locomotion states.
  • Press E again to unequip. The weapon disappears and the posture reverts to the relaxed default.
  • Try pressing 3 while the weapon is equipped to see how the Injured overlay interacts with the combat state and which takes priority.
  • Press Escape to stop Play mode.

Weapon not appearing in hand?

Confirm that the Socket Name in your attachment node is exactly hand_r. Socket names are case-sensitive and must match the skeleton definition precisely.

Also verify that your weapon mesh asset is valid and assigned to the Static Mesh Component. An empty mesh reference causes the component to attach invisibly.

Why isn't my weapon mesh showing up when I press E?

Secret mission

Gameplay-Triggered Overlay Transitions

Your overlay switching works great with manual key presses. But in a real game, animation states respond to gameplay events automatically. Can you build a health system that triggers the Injured overlay when your character takes too much damage?

Clean Up Your Resources

Clean Up Your Resources

This project runs entirely locally, so there are no ongoing costs. Decide whether to keep your GASPALS project files on your drive or delete them to reclaim disk space.

Resources you used:

  • GASPALS project folder on your local drive (approximately 2-4 GB).

Keep everything running

No action needed. Choose this if you plan to keep building on your character or experimenting with the overlay system.

  • Your GASPALS project stays on your drive at zero cost.
  • All your Blueprint changes (overlay switching, weapon attachment, health system) are saved and ready to extend.

Pause - I'll come back to this later

Since this is a local project with no running processes, there is nothing to pause. Your project files sit idle on disk and consume no resources beyond storage space.

  • Close the Unreal Editor to free up RAM and GPU memory.
  • Your project files remain on your drive and you can reopen them anytime by double-clicking GASPALS.uproject.

Delete - I don't want to use this again

Remove the project folder entirely to reclaim disk space.

  • Close Unreal Engine if it is still open.
  • Open File Explorer and navigate to the folder where you extracted the GASPALS project (e.g., C:\Projects\GASPALS).
  • Right-click the GASPALS folder and select Delete.
  • Empty your Recycle Bin to fully reclaim the disk space.

Alternatively, delete the folder from a terminal by running:

rmdir /s /q C:\Projects\GASPALS

Adjust the path to match your setup

Replace C:\Projects\GASPALS with the actual path where you extracted the project in Step 1.

That's a Wrap!

That's a Wrap!

Nice work! You just built a game character with production-quality locomotion that dynamically adapts its movement style based on gameplay context.

You've learned how to:

  • Set up and permanently configure State Machine locomotion in the GASP-ALS project using skeletal mesh tags, bypassing the session-only widget.
  • Wire Enhanced Input Actions to ALS overlay state switching, enabling real-time locomotion style changes between Masculine, Feminine, and Injured states.
  • Build a weapon attachment system that triggers combat overlay transitions on equip and unequip.
  • Secret Mission: Created an automatic gameplay-triggered overlay system that shifts locomotion to Injured when health drops below a threshold.

Ready to quiz yourself?