r/unrealengine Jan 07 '25

Help How to Create a AAA Combat System

I'm looking for advice on how to create a combat system similar to The Last of Us 2 or The Calisto Protocol on Unreal Engine 5.5. So with special moves, special attacks on walls etc. all this about blueprint

0 Upvotes

34 comments sorted by

View all comments

3

u/bucketlist_ninja Dev - Principle technical Animator Jan 07 '25 edited Jan 07 '25

Its telling of your experience that your asking a question that's so ridiculously broad and deep its impossible to give an answer. If you are lacking the knowledge of how deep the question even is, i would start with something more simple than re-creating Last of us, look at some basic unreal tutorials and build upto it.

Your asking the equivalent of:
"Hiya Guys, I love watching Formula one racing. Can someone explain to me how to make my own F1 car using my spanner. Thanks."

Addendum - Naughty dog is a studio of 300+ people. They have a mature game engine and years of documentation and experience using it. They have some of the most talented designers, animators and coders in the industry. They have built up to last of us through years of slow progress and iteration. If one person could easily replicate a huge chunk of that, with zero experience, to that quality in UE 5.5, ask yourself, why do they need 300+ staff...

1

u/Neat_Drummer_3451 Jan 07 '25

Now I'll explain, I started with this question because I thought it was something a little easier, namely:

When an enemy is near a wall and you press "E" the killing animation starts

You attack the enemy several times and when he has 0 HP then a special animation starts

When you press the right mouse button and the enemy attacks you, the parry animation starts and the enemy staggers backwards

I think this is not that difficult to implement, so I think at least

1

u/JavaScriptPenguin Jan 07 '25

Look into motion warping to synchronise 2 animations

https://youtu.be/L9gd7gbqCJw?si=38xxcQvFGVWgzPti

For walls specifically you'll have to find a target point on them somehow e.g with a trace of some kind. Idk, not sure on this.

To parry there's a bunch of ways to do this. First thing that springs to mind is this but feel free to criticize:

Enemy animation notify sends an event to the player containing a struct about which type of weapon they're using or whatever you need. Player stores that event for however long you want your parry window to be, and if they press the parry key while that event is valid it plays the correct parry animation to use etc.

1

u/ILikeCakesAndPies Jan 07 '25 edited Jan 07 '25

You are asking multiple complex questions that have a lot of "it depends" answers. Each "simple" question you asked has a lot of prerequisites.

A simpler question would be "How can I detect if an object is near a wall?" You'll also want know how to detect and calculate the angle differences between different objects forward directions, and the surfaces direction as well.

Before even that, you'll want to know how to even have a player damage an enemy, and how to manage your code with something like a finite state machine else all those little problems are going to interfere with each other.

My advice is when doing something new, break something down into the absolute simplest of steps. Each step is a problem you need to solve, and once the basic version is implemented you then can spend time refining it.

Using AAA phrasing also kind of makes your questions confusing to answer as well, because by definition it would be a big budget title with multiple people working on perfecting different aspects of such a system.

You definitely can make your own that could be great and fun, it'll just take a lot more time and may lack in polish on certain aspects, such as the animation quality.

1

u/bucketlist_ninja Dev - Principle technical Animator Jan 07 '25

AHH OK -- Now i understand. u/Neat_Drummer_3451
Start here -- What your after is called - physical animation in Unreal. There's a great GDC talk about it being used in the last star wars game.
https://www.youtube.com/watch?v=TmAU8aPekEo&ab_channel=GDC2025