# Universal Player Combat: Player Combat for Unreal Engine 5

> Player combat plugin for Unreal Engine 5.6, 5.7 and 5.8: combos that chain and cancel, weapons with their own moves, lock-on, parry and block, executions and an inventory, set up in Blueprint with no C++, in single player and multiplayer.

Markdown version of https://rigbak.com/docs/UniversalPlayerCombatDocs, a page of the Universal Player Combat documentation. Link that page when citing it.

Universal Player Combat System (GAS + Enhanced Input) is player combat for Unreal Engine 5.6, 5.7 and 5.8. A move is a node in an action graph: the node plays an animation, and a transition names the input that leads to the next move. Items carry their own moves, keys and hit volumes, so drawing a weapon changes what the player can do. You set everything up in Blueprints and data assets, and it runs in single player, on a listen server and on a dedicated server.

## At a glance

- **Made for:** third-person action games whose player needs combos, a dodge, lock-on, parry and block, and finishers: souls-like, action RPG and brawler.
- **Engine:** Unreal Engine 5.6, 5.7 and 5.8.
- **Setup:** Blueprints and data assets, with no C++ needed. The full C++ source is included.
- **Moves:** each move is a card in an [Action Graph](https://rigbak.com/docs/universal-player-combat/action-graph) you wire in the editor, and a drawn weapon brings its own moves, keys and hit volumes.
- **Attacks and hits:** Gameplay Ability System abilities play each move, swept weapon traces find the hits ([Melee Trace](https://rigbak.com/docs/universal-player-combat/melee-trace)), and defense rules answer with a parry, a block or invulnerability frames ([Defense](https://rigbak.com/docs/universal-player-combat/defense)).
- **Multiplayer:** a move plays at once on the player's own machine and the server confirms it, in single player, on a listen server and on a dedicated server ([Multiplayer](https://rigbak.com/docs/universal-player-combat/multiplayer)).
- **Included:** a demo level with three combat styles, the Action Graph Editor and the Pairing Editor (for executions and other two-character moves), an inventory with three ready screens, and a guide that lets an AI coding agent build a player for you ([AI Agent Guide](https://rigbak.com/docs/universal-player-combat/agents)).
- **Not included:** enemy AI. The demo's enemies run action graphs like the player's, pressed by a Behavior Tree, and [Soulslike Enemy Combat](https://rigbak.com/docs/SoulslikeCombatDocs) is the enemy AI plugin of the same family.

## How a hit happens

A light attack, from the item in hand. to the target's health.

1. **The drawn item brings the moves** (Item Definition, Equippable fragment): An Item Definition holds fragments, parts you add in its Details panel. Its Equippable fragment names an action graph, keys and hit volumes. Drawing a sword hands the character all three; drawing another item changes the moveset. With nothing drawn, the Default Item, such as bare fists, gives the moves.
2. **A key becomes an input tag** (Equippable: Input Mapping Context, Input Mappings): Each mapping pairs an Input Action with a gameplay tag such as UPC.Input.LightAttack, and the character's UPC Input Mapping component sends that tag on when the key is pressed.
3. **The graph picks the move** (Action Graph: a transition on the current node): Each transition out of a move names an Input Tag and the move it leads to: from idle (ROOT), UPC.Input.LightAttack leads to Light 1, and from Light 1 to Light 2. A press during Light 1 waits, and Light 2 starts when Light 1 ends. A montage can mark an action window, a stretch where a press cuts in sooner.
4. **The move plays its montage** (Action node: Play Montage): The node lasts as long as its montage, or the section it plays. Windows on the montage also say when the blade sweeps and which tags the character holds.
5. **A trace window sweeps the blade** (UPC Melee Trace Window, Equippable: Trace Sockets): Every frame of the window, the item's hit volumes sweep from where they were to where they are, so a fast swing does not skip the space between frames. Teammates are passed over.
6. **The target answers the hit** (Damage Config, then the target's Defense and Vitals): The window's damage config says what a hit is worth and what it sets off: sparks, hit stop (a short pause on impact), a flinch. The target's defense rules can parry, block or scale it, and what is left comes off its health.

---

## Start here

- [Getting Started](https://rigbak.com/docs/universal-player-combat/getting-started): Turn the plugin on, play the demo and land a hit.
- [Build Your First Combo](https://rigbak.com/docs/universal-player-combat/first-combo): A sword with a three-hit combo, from an empty folder.
- [Character Setup](https://rigbak.com/docs/universal-player-combat/character-setup): Make a character of your own fight without reparenting it.

Building with an AI coding agent such as Claude Code, Codex or Cursor? The [AI Agent Guide](https://rigbak.com/docs/universal-player-combat/agents) lets it build a player from your mesh and animations in your open editor.

---

## Guides

- [Souls-like Player Combat: Where to Start](https://rigbak.com/docs/universal-player-combat/soulslike-player-combat-ue5): Each part of a Dark Souls style player, and the page that sets it up.
- [One Item at a Time](https://rigbak.com/docs/universal-player-combat/one-item-at-a-time): Carry only what is in hand: no hotbar, no inventory screen.

---

## Moves

- [Action Graph](https://rigbak.com/docs/universal-player-combat/action-graph): Moves as nodes, inputs as transitions, and when a press counts.
- [Action Graph Editor](https://rigbak.com/docs/universal-player-combat/action-graph-editor): Wire moves together and watch a character run them in play.
- [Gates, Costs and Cooldowns](https://rigbak.com/docs/universal-player-combat/gates-costs-cooldowns): When a move may start, what it spends, how long it waits.
- [Input](https://rigbak.com/docs/universal-player-combat/input): Keys to input tags: the character's, an item's, and chords.

---

## Items and equipment

- [Items](https://rigbak.com/docs/universal-player-combat/items): An item asset and the fragments that give it each capability.
- [Equipment](https://rigbak.com/docs/universal-player-combat/equipment): Draw and put away items, places on the body, worn gear.
- [Quick Bar](https://rigbak.com/docs/universal-player-combat/quick-bar): The belt: one key per slot, with filters.
- [Pickups, Drops and Holders](https://rigbak.com/docs/universal-player-combat/pickups-drops-holders): Items on the ground, dropping, and weapon racks.

---

## Inventory

- [Inventory](https://rigbak.com/docs/universal-player-combat/inventory): Stacks of owned items, and picking an inventory style.
- [Containers and Rules](https://rigbak.com/docs/universal-player-combat/inventory-containers): Slots, grids, storage, caps per kind, weight limits.
- [Bags and Banks](https://rigbak.com/docs/universal-player-combat/inventory-bags): Pouches that open containers of their own, and a bank.
- [Combines](https://rigbak.com/docs/universal-player-combat/inventory-combines): Drop one item onto another: recipes, magazines, keys.
- [Loot Chests](https://rigbak.com/docs/universal-player-combat/loot-chests): A chest every nearby player shares, with Take All.
- [Inventory Screens](https://rigbak.com/docs/universal-player-combat/inventory-screens): The ready screens, and building your own.
- [Saving the Inventory](https://rigbak.com/docs/universal-player-combat/inventory-saving): Put every item back from your own save game.
- [Survival Grid Inventory](https://rigbak.com/docs/universal-player-combat/inventory-survival-grid): A small case where items turn to fit, and an item box.
- [Party RPG Inventory](https://rigbak.com/docs/universal-player-combat/inventory-party-rpg): A backpack, weight tiers, pouches, worn gear, a camp stash.
- [Open World List Inventory](https://rigbak.com/docs/universal-player-combat/inventory-open-world-list): One sorted list by category, and weight that slows.
- [Use Only Part of the Inventory](https://rigbak.com/docs/universal-player-combat/inventory-pick-what-you-need): A belt alone, a list without a grid: leave the rest out.
- [Inventory Rules and Combines in Blueprint](https://rigbak.com/docs/universal-player-combat/inventory-blueprint): The demo's Blueprint rules and combines, node by node.

---

## Feel and motion

- [Combat Styles](https://rigbak.com/docs/universal-player-combat/combat-styles): One asset for rotation, targeting, reach, movement and camera.
- [Targeting](https://rigbak.com/docs/universal-player-combat/targeting): Pick the enemy in front, lock on, switch with a flick.
- [Attack Steering](https://rigbak.com/docs/universal-player-combat/attack-steering): Attacks turn to the target, close the gap and stop short.
- [Camera](https://rigbak.com/docs/universal-player-combat/camera): A third-person camera framed by the style or the weapon.
- [Sprint and Speed](https://rigbak.com/docs/universal-player-combat/sprint-and-speed): Sprint on a held button, and slow a character by tag.

---

## Landing a hit

- [Melee Trace](https://rigbak.com/docs/universal-player-combat/melee-trace): Hit volumes on the weapon, swept while the attack plays.
- [Damage and Hit Effects](https://rigbak.com/docs/universal-player-combat/damage-and-hit-effects): What a hit is worth, impact effects and hit stop.
- [Defense](https://rigbak.com/docs/universal-player-combat/defense): Parries, blocks and invulnerability, lent by the item in hand.
- [Hit Reactions](https://rigbak.com/docs/universal-player-combat/hit-reactions): Flinches when poise breaks, and hyper armor.
- [Physical Reactions](https://rigbak.com/docs/universal-player-combat/physical-reactions): Bones that move under a blow, and a ragdoll on death.
- [Vitals](https://rigbak.com/docs/universal-player-combat/vitals): Health, stamina and any pool you name.
- [Telegraphs](https://rigbak.com/docs/universal-player-combat/telegraphs): A flare over a swing to parry, a cross over one to dodge.

---

## World

- [Interaction](https://rigbak.com/docs/universal-player-combat/interaction): Make any actor usable, with a prompt for the key.
- [Interaction Payloads](https://rigbak.com/docs/universal-player-combat/interaction-payloads): What an option plays: a montage, a wait or an ability.
- [Paired Actions](https://rigbak.com/docs/universal-player-combat/paired-actions): Finishers, counters and grabs: two characters in one move.
- [Pairing Editor](https://rigbak.com/docs/universal-player-combat/pairing-editor): Line up roles, time montages and key a camera shot.

---

## Presentation

- [Animation Integration](https://rigbak.com/docs/universal-player-combat/animation-integration): Mesh tags, item animation layers, footsteps and trails.
- [HUD and Input Prompts](https://rigbak.com/docs/universal-player-combat/hud-and-input-prompts): Bars that follow the character, and key prompts.

---

## Reference

- [Multiplayer](https://rigbak.com/docs/universal-player-combat/multiplayer): What the server decides, and how to test with lag.
- [Patterns](https://rigbak.com/docs/universal-player-combat/patterns): Recipes from the demo: styles, a parry, a dodge, an execution.

---

## Credits

The demo's locomotion includes animations and Blueprints adapted from Epic Games' Lyra Starter Game and Game Animation Sample. Its footstep, scenery hit, swing, dodge, gear, guard and interface sounds come from Lyra Starter Game, and its landing, jump and body fall sounds from the Game Animation Sample, all used under the Unreal Engine EULA. The demo UI uses the Inter and Cinzel typefaces under the SIL Open Font License 1.1.

---

## Support

- [Sample Project](https://drive.google.com/file/d/12tAW_Sl6PG_aKyULF0AQHO9mBdXroGjj/view?usp=sharing)
- [Roadmap](https://trello.com/b/1uqmHQTX/universal-player-combat-10)
- [Discord Support](https://discord.com/invite/CbRcTsYQcz)

---

## Pairs well with

Universal Player Combat gives the player their fight: combos, equipment, targeting and finishers. Need enemy logic? Soulslike Enemy Combat gives your enemies theirs.

- [Soulslike Enemy Combat on Fab](https://www.fab.com/listings/7087cec0-6975-4de5-82e0-0de0b9b3e9a7)
- [Open a ticket on Discord](https://discord.com/invite/CbRcTsYQcz)
