I am looking forward to this series. You are an inspiration to all of us. I tried to make the sifu combat system on my own, but I failed. This course is a blessing for me, thank you very much.
I wanted to create a fight club style game, this video will help me a lot. I hope for more videos about fighting, as there is little fighting content in Unreal Engine 5. Excellent video, gained a new subscriber
Thanks for the support! Yeah I agree there’s not many good fight tutorials and that’s half the reason I decided to make this series! And don’t worry there will be loads more on fighting!
At 10:15, Casting is not what causes a performance issue. Casting is fast. What's slow is when you load a Blueprint, and it needs to load every other Blueprint it depends on to function. The problem with Casting to other BP types is the Cast node creates a dependency to that other Blueprint, so they have to load together. But that happens when first loading any object of the BP that depends on other BPs, not at the time of Casting. Casting on its own is a fast operation. Now, having an Interface with a function that returns BP_Enemy and using that interface, also creates a dependency to BP_Enemy. Creating a local variable of it also means your BP depends on BP_Enemy. In conclusion, with or without Cast, your BP depends on BP_Enemy. The Interface workaround was a scenic route to have the same problem you'd have using only Cast. A solution (without C++) is to have BP_Enemy inherit from (be a child BP of) an empty enemy BP, let's say BP_EnemyBase, that has most Enemy functionality, but no SkeletalMesh assigned. Then other BPs can Cast to BP_EnemyBase, depending on it without having to load heavy assets with that dependency. As a proof of concept, check the Size Map (right click on the asset) of BP_ThirdPersonCharacter and you'll see a big chunk from BP_Enemy there. Then try my no-SkeletalMesh base class, replace the references to BP_Enemey with BP_EnemeyBase and check BP_ThirdPersonCharacter's Size Map again.
@@MrKnowBodyUE5 no worries. That's the process and I applaud you for making these tuts. I hope my comment didn't come across as any personal attack. I just try to minimize spreading bad habits as much as possible.
very nice tutorial , some small tips though , even if you didnt casted to enemyBP , if you make a varible in it you are still using dependices of its type , right click on this class and check memory stats you will see how they got linked , instead of this use interfaces to return Primitive values or execute primitive kinds of stuff or if you want a scalable way , make a component just for enemies like AI_Comp and use "Get Comp by class" this way you will create less depencies Also use "Sphere Overlap Actors" instead of sphere trace by channel in case you want to detect nearest enemies in future
At 14:35, DoOnce inside a function doesn't work as expected. It has a local variable to store whether it's already been accessed once or reset, and local variables are reset whenever a function is called again. So, the DoOnce will always be opened when the function is called, no matter how many times that happens. To test it, create a function with DoOnce->PrintString. Then call that function from BeginPlay twice in a row. You'll see your string printed twice. A DoOnce in a function would only serve any purpose if the function itself tries to go through it a few times in a row. It also wouldn't work on recursive calls of the function (calling itself inside itself), because each call of the function has its own copy of local variables. To see the local variables I'm talking about, double-click the DoOnce node and you'll see a `Local Bool`. That's a macro's way of having a persistent local variable. But inside functions, they only exist for as long a call to the function is executing (i.e., only when they're in scope).
hey, congrats for your dedication! There is a bug with this system: when the enemy is behind a wall, the system recognizes it and activates motion warping, I am trying to find a solution, but perhaps you can provide how to do it or someone can explain a solution. Ty!
Good tutorial i am learning quite a bit from this series so far, however i find the music in the background quite distracting. its high pitched and repetitive. thank you for your content.
Im having a weird problem: the sphere trace isnt showing and the player just doesnt warp to it. Did anyone else have this problem or know how to fix it?
When i attack the player doesnt warp to the enemy. the sphere trace is showing but the player just doesnt warp to it. it appears as if i have done everything correctly so any idea why it wont warp?
Hey mate thanks for the great Tutorial so im making a multiplayer game and im trying to follow your tutorial and a replication to it but can't seem to get it to work as you have like i get some movement correction and like some anims are being skipped
Hey, congrats for your dedication! There is a bugwith this system: when the enemy is behind a wall, the system recognizes it and activates motion warping, I am trying to find a solution, but perhaps you can provide how to do it or someone can explain a solution. TY!
Hmm I’m not too sure why that is happening as the targeting we do in the update motion warping shouldn’t be able to detect an enemy through the wall. Join the discord so you can provide pictures!
Yeah of course you can! All you’ll have to do is look up a tutorial how to attach items to hand then attack your axe to the hand and then the rest is the same
OMG this is great, you explain it so well I am finally going to make a great combat thanks to you! th-cam.com/video/uuFWqFExlW4/w-d-xo.html I also found this guy online that makes it so your character attacks a target using a control rig, right now i cant really know how to piece them together, animations are new to me but Maybe it gives you a idea
Next video we will be going over how to line up the attacks better with the enemy to make it look much cleaner.
bro created an anonymous channel just to teach us unreal engine, what a absolutely legend.
Glad you think so!
Hands down the best series of unreal tutorials I've ever watched. So incredibly helpful. Keep it up!
Thanks, will do!
I am looking forward to this series. You are an inspiration to all of us. I tried to make the sifu combat system on my own, but I failed. This course is a blessing for me, thank you very much.
Thank you, Means a lot. Keep it up
Can't wait for more of this series!
Thanks next episode will be Monday and I’ll try go every other day from there
@@MrKnowBodyUE5 Appreciate it bro, easy to follow you!
@@jones7831 Thank you!
Literally just started working on UE5 and your videos are tremendous. Keep up the great content!
Glad you like them!
Awesome, loving this serie of videos
Glad you enjoy it!
The most comprehensive and up-to-date combo tutorial, thank you very much~
Glad it was helpful!
I wanted to create a fight club style game, this video will help me a lot. I hope for more videos about fighting, as there is little fighting content in Unreal Engine 5. Excellent video, gained a new subscriber
Thanks for the support! Yeah I agree there’s not many good fight tutorials and that’s half the reason I decided to make this series! And don’t worry there will be loads more on fighting!
At 10:15, Casting is not what causes a performance issue. Casting is fast. What's slow is when you load a Blueprint, and it needs to load every other Blueprint it depends on to function. The problem with Casting to other BP types is the Cast node creates a dependency to that other Blueprint, so they have to load together. But that happens when first loading any object of the BP that depends on other BPs, not at the time of Casting. Casting on its own is a fast operation.
Now, having an Interface with a function that returns BP_Enemy and using that interface, also creates a dependency to BP_Enemy. Creating a local variable of it also means your BP depends on BP_Enemy. In conclusion, with or without Cast, your BP depends on BP_Enemy. The Interface workaround was a scenic route to have the same problem you'd have using only Cast.
A solution (without C++) is to have BP_Enemy inherit from (be a child BP of) an empty enemy BP, let's say BP_EnemyBase, that has most Enemy functionality, but no SkeletalMesh assigned. Then other BPs can Cast to BP_EnemyBase, depending on it without having to load heavy assets with that dependency.
As a proof of concept, check the Size Map (right click on the asset) of BP_ThirdPersonCharacter and you'll see a big chunk from BP_Enemy there. Then try my no-SkeletalMesh base class, replace the references to BP_Enemey with BP_EnemeyBase and check BP_ThirdPersonCharacter's Size Map again.
Yeah I realised that, the videos old and my knowledge here was definitely wonky to say the least lmfao.
@@MrKnowBodyUE5 no worries. That's the process and I applaud you for making these tuts. I hope my comment didn't come across as any personal attack. I just try to minimize spreading bad habits as much as possible.
very nice tutorial , some small tips though , even if you didnt casted to enemyBP , if you make a varible in it you are still using dependices of its type , right click on this class and check memory stats you will see how they got linked , instead of this use interfaces to return Primitive values or execute primitive kinds of stuff or if you want a scalable way , make a component just for enemies like AI_Comp and use "Get Comp by class" this way you will create less depencies
Also use "Sphere Overlap Actors" instead of sphere trace by channel in case you want to detect nearest enemies in future
At 14:35, DoOnce inside a function doesn't work as expected. It has a local variable to store whether it's already been accessed once or reset, and local variables are reset whenever a function is called again. So, the DoOnce will always be opened when the function is called, no matter how many times that happens.
To test it, create a function with DoOnce->PrintString. Then call that function from BeginPlay twice in a row. You'll see your string printed twice.
A DoOnce in a function would only serve any purpose if the function itself tries to go through it a few times in a row. It also wouldn't work on recursive calls of the function (calling itself inside itself), because each call of the function has its own copy of local variables.
To see the local variables I'm talking about, double-click the DoOnce node and you'll see a `Local Bool`. That's a macro's way of having a persistent local variable. But inside functions, they only exist for as long a call to the function is executing (i.e., only when they're in scope).
This is legend
Thank you!
hey, congrats for your dedication! There is a bug with this system: when the enemy is behind a wall, the system recognizes it and activates motion warping, I am trying to find a solution, but perhaps you can provide how to do it or someone can explain a solution. Ty!
waiting for nxt part
Monday
Thanks loved the video
Glad you enjoyed it
Keep going, this is rad
Thank you!
Good tutorial i am learning quite a bit from this series so far,
however i find the music in the background quite distracting.
its high pitched and repetitive.
thank you for your content.
Thanks for the feedback I’ll get that changed for the future!
Im having a weird problem: the sphere trace isnt showing and the player just doesnt warp to it. Did anyone else have this problem or know how to fix it?
Make sure you’ve set the sphere trace visibility to visible and that you’ve followed everything correctly
@@MrKnowBodyUE5 i Have similar issue except i can see the trace but not motion warping
how do i set up the same targeting system and motion warping for the BP_Enemy?
i have 2 motion warpings for my main character and is causing my character to go to the centre of the map, what should i do
When i attack the player doesnt warp to the enemy. the sphere trace is showing but the player just doesnt warp to it. it appears as if i have done everything correctly so any idea why it wont warp?
Does it have anything to do with the fact that my animations dont have root motion
Probably, motion warping usually needs root motion to work if you join my discord there’s a solution you can do which doesn’t use motion warping.
@@MrKnowBodyUE5 Mine have Root Motion enabled and still motion warping
Hey mate thanks for the great Tutorial
so im making a multiplayer game and im trying to follow your tutorial and a replication to it
but can't seem to get it to work as you have like i get some movement correction and like some anims are being skipped
Hmmm honestly I’m not too familiar with replication. I have done it in the path but quite simple. So I’m not too sure how to help you here sorry!
Hey, congrats for your dedication! There is a bugwith this system: when the enemy is behind a wall, the system recognizes it and activates motion warping, I am trying to find a solution, but perhaps you can provide how to do it or someone can explain a solution. TY!
Hmm I’m not too sure why that is happening as the targeting we do in the update motion warping shouldn’t be able to detect an enemy through the wall. Join the discord so you can provide pictures!
How many parts are you planing for this series
Not sure I’ll just see how it goes. But to give you an idea of want I want to do:
Enemy + player hit reactions
Blocking
Parrying
Enemy attacks
@@MrKnowBodyUE5 nice 👍
Can you please make a weapon system like days gone
when attacking my character always warps to the front of the enemy regardless of what arrow is the closest. any ideas why?
Most likely you have done something wrong with the closest arrow function. If you can’t figure it out join the discord and I’ll help out there!
Do you think I can do this but with the player haveing a axe? Sorry newer to ue5
Yeah of course you can! All you’ll have to do is look up a tutorial how to attach items to hand then attack your axe to the hand and then the rest is the same
how many episdoes it is total?
I’m not really too sure however we will definitely be adding things like enemy attacks, blocking, parrying, health, hit reactions
OMG this is great, you explain it so well I am finally going to make a great combat thanks to you!
th-cam.com/video/uuFWqFExlW4/w-d-xo.html
I also found this guy online that makes it so your character attacks a target using a control rig, right now i cant really know how to piece them together, animations are new to me but Maybe it gives you a idea
Thanks for the support! The video you sent looks really interesting might try somethings out a bit later
Awesome Channel! Will definitely subscribe. Do you have a Discord?
Yes we do
Keep up the work G it’s amazing if possible can we get your discord?
Cheers! You just reminded me to make one lol.
😁😜🤪🤔🤔🤓🤓
😜🤪😎😎
This stuff is PATHEDIC 👎
Want known what is real fight system/anims go see (the warriors PS2)game
Ummmm… ok 👍