Slash & Jump
Context & Ambitions
Project Slash & Jump is an ongoing project where I aim to learn and practice my combat design skills. This includes creating smooth, flowing movement alongside weighty combat mechanics, multiple attack types and more. Right now, I'm at the stage of piecing together character locomotion and blending it with the attack types.
The goal was to build a combat system from the ground up without relying on plugins, to develop a deep understanding of how these systems interact, because it will help me understand how to utilize Unreals tools for combat and gameplay design on a deeper level. Everything shown is built layer by layer in Blueprints as part of my learning journey in Unreal Engine 5.
/// Latest Combat Configurations
Project Design Goals
Fluid & Weighty Combat
To create a combat system where the character feels agile and maintains momentum but strikes carry weight and feedback, making the player feel the impact.
Movement & Combat Blending
Creating a combat system with multiple mechanics such as double jumping, wall jumping, wall flipping, rolling, land rolling etc., and aspiring to make the transition between these mechanics and the combat have a consistent and smooth flow.
UE5 Skill Development
Building all the systems from scratch using blueprints will develop my visual scripting skills further, as well as my combat design and gameplay prototyping skills. It will help introduce me to several components of combat design such as motion warping and combo buffering, and it will deepen my understanding of how to create impactful and intriguing combat.
Combat Design & Iterations
1. The First Combo
The Goal: Designing a first combo using retargeted animations.
Problem: I had to find free animations from different creators, and I wanted to try to mix and match differnt animations based on the purpose of the attack.
Solution: Established a basic attack separation between heavy and light attacks, with heavya attacks using root motion for a more impactful feel, and light attacks being used differently, also usable while running, as the animations did not work with root motion properly.
2. Running Attacks
The Idea: Allowing the player to strike without needing to come to a full stop and without using root motion.
Problem: The root motion attacks were good, but using them meant the player would stop moving. I wanted to add in another attack type with less risk but also less reward, that allows for more freedom of movement while attacking.
Implementation: Utilized attack animations that didnt look good with root motion, using an upward body blending system that doesnt change the leg animation when attacking.
3. Heavy Attack Combo & Dash
The Idea: I wanted to create a transition between running and heavy attacking that didn't feel like the character suddenly froze in place.
Problem: When pressing the heavy attack button while moving, the character came to an instant stop and then performed the attack which felt janky and un-responsive.
Solution: Implemented a short dash attack animation when the player presses heavy attack while running. This creates a feeling of momentum carry-out, before the player starts the heavy attack combo.
4. Stamina System & Hit Detection
Outcome: A data-driven stamina system where every attack type has its own stamina cost, consumed through a single reusable function, with delayed regen and real-time UI feedback — all connected through event dispatchers.
Intention: Combat needed resource consequences. A flat stamina bar where everything costs the same wouldn't create any real decision-making. Different attacks needed different costs so the player has to think about what they use and when.
Process: Built an Attack Profile struct that carries damage amount, socket names, hit sphere radius, and object types for each attack. Stamina costs live in a data map with 9 attack types — light attacks scale from 10 to 15, heavy attacks from 25 to 30, crossbow and dagger throw sit at 5, kickflip at 20. The ConsumeStamina function checks current stamina, deducts the cost, fires the UI update event, and starts a 1-second delay before regen kicks in. Hit detection is handled through animation notifies — a sphere trace fires between sword socket locations on active frames only, passing the Attack Profile data through to determine damage and hit object types.
5. Crossbow Attack
The Concept: Adding a ranged attack option to diversify the combat loop and provide tools for distance management.
Problem: Ensuring the transition into aiming and firing matches the fluidity of the fast-paced melee combat without breaking locomotion.
Solution: Implemented a rapid-fire crossbow sequence that allows players to seamlessly weave ranged attacks between melee strikes while still moving.
Movement Mechanics
Traversal Engine
The Goal: Establishing a solid, responsive foundation for movement. Since the combat heavily relies on positioning, traversing cleanly is important.
The Challenge: Connecting states like wall flips and roll checks, and blending outsourced animations from different creators together.
The Process: Breaking down locomotion tests into manageable blueprints and relying on custom traces for interactions to keep the main state machine light.
Development Realities
When I started planning the project, I was thinking of incorporating a more parkour-heavy and complex movement system, however, later on I realized that some of my ideas wouldn't add enough to the game to be worth the development time.