Smart Enemy AI | (Part 4: EQS) | Tutorial in Unreal Engine 5 (UE5)

  Рет қаралды 75,783

Ali Elzoheiry

Ali Elzoheiry

Күн бұрын

Пікірлер
@andrews8110
@andrews8110 9 ай бұрын
Awesome tutorial as always. One thing I got stuck on for awhile that is not mentioned but done very quickly is at 31:37 he sets ideal range and attack target variables to instance editable which allows you to change the blackboard key values in the behavior tree. Took me a while to figure out why I was unable to change those values so I figured I'd mention it in case anyone else has the same problem.
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Hey there, glad you found it helpful! and thanks for sharing your experience, hopefully it helps someone
@professoroake6107
@professoroake6107 7 ай бұрын
thanks
@blacksage81
@blacksage81 6 ай бұрын
This just caught me, thanks for the save.
@KaozIcy
@KaozIcy 4 ай бұрын
I had this exact problem, spent way too long fixing it myself and somehow ignoring the top comment.. hopefully others catch it :D
@FolkvangStudios
@FolkvangStudios 3 ай бұрын
ha yeah this was a huge Gotcha. I even went into his project to compare. Clicking that "eye open" thing is a huge gotcha. Granted later on he did make a strong mention of it. I was also snagged up in the "Focus on Target" stuff, there was a clicky I missed.
@mebessusn
@mebessusn 9 ай бұрын
This is the most informative and thorough series on AI on youtube without question. It's well edited, you don't waste time, it's well-thought out and doesn't involve a bunch of rework in subsequent videos like some people end up doing. You cover best practices, you give tips when needed...you are just so helpful. Thank you for this. I plan to do all of this series and can't wait to see what you put out next.
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Thank you so much for your kind words! I'm happy to hear that you found the series so helpful. I appreciate your support and look forward to bringing you more valuable content in the future!
@Shizuma450
@Shizuma450 Жыл бұрын
Incredible tutorial quality. I'm truly amazed by the quality of the explanations. Maybe I'm not good at finding good tutorials on AI in unreal engine, because so far I haven't had any conclusive lessons. But now I feel really lucky to have come across your KZbin channel. (Sorry to repeat myself, I know I have a similar comment in the part #3 before, but I'm so bluffed by the quality that I feel the need to express it haha) Thank you for taking the time to share your knowledge with us, in a pedagogical way and with a really excellent quality.
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you again Eurg for the support and kind words, It really makes me happy to hear that it is helping you, and feel free to repeat that anytime you like, it really motivates me
@twelvegrain1111
@twelvegrain1111 6 ай бұрын
This, truly, is a fantastic series. You're explanation is so well thought out and easy to follow, especially for someone like me who is just getting started. Between blackboards, AnimBPs, AI states, EQS, there are so many ways to get lost and overwhelmed when trying to follow along with the logic. You are making this possible to understand. I'd be totally lost without this series. Thank you, many time over!
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
Thank you so much for your kind words! I'm thrilled to hear that you're finding the series helpful and that it's making the learning process more approachable. Your support means a lot, and I'm glad I can help you navigate through these complex concepts. Keep up the great work!
@KensynPortha
@KensynPortha Жыл бұрын
Just wanna say thank you man, this EQS part was exactly what I was wanting to learn. Thank you for the good content.
@AliElZoheiry
@AliElZoheiry Жыл бұрын
My pleasure, happy to hear you found it helpful
@YS-tw2ce
@YS-tw2ce 10 ай бұрын
I am a beginner. You have led the lectures well with the learners in mind so that even beginners can easily follow lectures 1 to 3. While listening to your lectures, I thought you made really good tutorial lectures. However, I was a little disappointed that the animation settings part of this lecture was missing. I understand that it is missing because it is an AI lecture. But I liked learning by following the directions you taught. I watched a lot of completed projects and other paid lectures, but even if I received a completed project, it was often of no use because I didn't know how it was created. I wanted to understand the learning process one by one and assemble it, but this lecture left something to be desired. You can sponsor me and receive the completed project, but I am so sorry that I have to move on from the project that I am very attached to and move on to the completed project, which I have been following through your lectures and taking notes to help me understand. I think even beginners like me will learn a lot if you proceed without any omitted parts from next time. I am writing this from the perspective of a beginner who is learning. Thank you for creating a great lecture. You've done a great job up to this point :) Moving on to the next video :D Thank you for the tutorial!
@AliElZoheiry
@AliElZoheiry 10 ай бұрын
Hey there! I really appreciate your feedback and I'm glad to hear that you've found the lectures helpful. I understand your disappointment about the omitted parts, and I will definitely take your feedback into account for future tutorials. I strive to make the learning process as comprehensive as possible, and your input is valuable in helping me achieve that goal. Thank you for your support and I hope the next videos prove to be as helpful as the previous ones. Keep learning and enjoying the process! 😊
@YS-tw2ce
@YS-tw2ce 10 ай бұрын
@@AliElZoheiry Thank you for understanding my opinion :) Currently, I found another tutorial and solved the missing part, and then I'm studying by copying all your tutorials. You proceed by explaining the tutorial really well so that the learners understand it well. Best tutorial I've ever seen! I look forward to more tutorials in the future :D
@DoomerStudiosTV
@DoomerStudiosTV 3 ай бұрын
@@YS-tw2ce can you please direct me to the tutorial that helped you figure this out?
@GrumpyGillsFishing
@GrumpyGillsFishing 2 ай бұрын
@@AliElZoheiryI’m also about to take on the task of trying to figure out how to set up the abp to work with the abs lol. Wish me luck, I’ve been working with ue for 2 weeks now and so far I’m really proud of the project I’m working on. This isn’t really something that’s especially critical to the project, just one of those extra touches so I can learn more about it. Since that’s what my current project really started as. Just a way to learn about developing games.
@g0dk1ller123
@g0dk1ller123 Жыл бұрын
I don't know if I missed something in the video or if this is later adressed but I was constantly getting a runtime error: "Blueprint Runtime Error: "Accessed None trying to read property CallFunc_GetBlackboardValueAsActor_ReturnValue". Node: Return Node Graph: PerformConditionCheckAI Function: Perform Condition Check AI Blueprint: BTD_IsWithinIdealRange" in the decorator function. I found out this was happening because the enemy at the beggining wasn't seeing me so the value of Attack Target would be null when the node was being called thus printing out the above error constantly. I fixed it by simply adding an Is Valid node to determine if the value of the Attack Target variable is a valid one or not and that pretty much fixed the issue. Amazing series by the way! I've been learning a lot regarding AI in Unreal Engine and this has been especially helpful for me since I'm changing engines from Unity (you you probably know why 😅) .
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hey, glad you’re finding this series useful so far, and indeed I have an idea why you’re switching from Unity :D I’m not sure why you’re facing the null pointer, since the AttackTarget should always be valid if the enemy is in an attacking state, but nonetheless it’s always good to add validation checks anyway
@TheVorlecGame
@TheVorlecGame Жыл бұрын
Hey man, where did you place the IS VALID NODE? im having the same issue
@g0dk1ller123
@g0dk1ller123 Жыл бұрын
@@TheVorlecGame Sorry for the late answer. I basically went into "Perform Condition Check AI" decorator function and placed a "Is Valid" node connected to the "Get Blackboard Value as Actor" node and then to the return node.
@brianworden7022
@brianworden7022 11 ай бұрын
​@@g0dk1ller123Thanks, I also was having that issue.
@misfire8771
@misfire8771 11 ай бұрын
thankyou, this error has been killing me
@CronicGaming94
@CronicGaming94 7 ай бұрын
for anyone who may run into this problem in the future. I found some issues that could occur with the find cover EQS. I had my enemy ai set to blocking visibility in its collision which was making the EQS grid consider it's current location as the single best location. Changed the visibility collision to overlap and it fixed the issue. Spent hours trying to figure this one out cause my enemy wasn't running away xD
@AliElZoheiry
@AliElZoheiry 7 ай бұрын
Hey, thanks for sharing this! I'm sure it'll be helpful to others who might encounter a similar issue in the future 😄
@jasonheilig5312
@jasonheilig5312 Ай бұрын
omg thanks had this problem for months and was just using best 25%
@BlenderYouko
@BlenderYouko 9 ай бұрын
New week, new part of the series. Thank you for all this qualitative content. Won't forget to donate you once I got my first pay. Cheers
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Hey, thanks for the kind words and support! I'm glad you're enjoying the series and finding it helpful. Looking forward to your continued support and good luck with your first paycheck! Cheers!
@scienceandtorah7668
@scienceandtorah7668 6 ай бұрын
I've been really enjoying the tutorials. The thing I like about them is that you explain everything very well, unlike some other tutorials that don't really explain what they're doing in their code. Keep up the good work!
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
I'm so glad to hear you've been enjoying the tutorials! That's exactly what I aim for - to explain everything clearly. Thanks for the support and encouragement! 🙏
@hendra_winata13
@hendra_winata13 Жыл бұрын
It's a great tutorial to understanding EQS and Behavior Tree together. Hardly understand other EQS tutorial until i found this one. Hope you can create more tutorial about Unreal Engine. Thanks for the content!
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you Hendra, Really happy that you found it useful and I will definitely continue with creating new tutorials
@Зритель-ш6у
@Зритель-ш6у 10 ай бұрын
These are the greatest AI tutorials on youtube. Thank you.
@AliElZoheiry
@AliElZoheiry 10 ай бұрын
Thank you for your kind words! I'm glad you found the tutorials helpful. Happy to help!
@Pierraow
@Pierraow 7 күн бұрын
For those who had their AI character not moving from its spot to hide, make sure to have visibility set to ignore in the collision settings of the BP_Enemy_Base. Thank you for this great tutorial Ali!
@AliElZoheiry
@AliElZoheiry 6 күн бұрын
Thank you for the tip! That’s really helpful for others who might encounter the same issue. Glad you enjoyed the tutorial! 🙏
@JoelLandberg
@JoelLandberg 6 күн бұрын
Thank you! You made my day:)
@ericwoot2
@ericwoot2 Жыл бұрын
These are the greatest AI tutorials on youtube
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Wow, thank you for saying that. I appreciate you 😊🙏
@kellowattentertainment
@kellowattentertainment Жыл бұрын
Alright, so I ended up fixing the issue. In the video, you mentioned that the context offset should be zero because it doesn't do anything. However, when I ran the debugger with the Apostrophe key and Numpad 3 on the keyboard, I realized that with the context offset at zero, for some reason the engine was showing the AI that the best place to be is where he was standing already which was right before the player, so I added 200 to the context offset, and now the engine was showing the player that the best place to be is behind the wall so the AI now goes behind the wall when he sees the player. Issue resolved. Still, I wouldn't have learned any of this without your tutorials, so you are awesome. Thank you.
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Great to hear that it's fixed! For reference, the context height adds to the z axis of the context of your query, and item height adds to the z axis of the point which the trace is being drawn towards
@dustanschutte8724
@dustanschutte8724 Жыл бұрын
Your a Legend, was stuck with the same issue. Thanks
@mathieuvandenbremt2724
@mathieuvandenbremt2724 10 ай бұрын
5 month later and you're still saving people, i was stuck until i saw your comment
@kellowattentertainment
@kellowattentertainment 10 ай бұрын
​@@mathieuvandenbremt2724 You're welcome. It's a good thing you read the comments lol.
@AmeenGhazizadeh
@AmeenGhazizadeh 7 ай бұрын
I think I'm having the same issue -- what context offset is this referring to?
@Arctan95
@Arctan95 6 ай бұрын
@41:30 interestingly, the behaviour I'm seeing is the enemy runs up, attacks and THEN begins strafing. As far as I can tell our networks are the same and logically I can see why mine is doing that, I don't understand why your unit would start strafing before the end of the attack player sequence? There's no abort that would affect it and the move to ideal range eventually returns success, the only reason it eventually moves onto the strafe is because of the cooldown right? Which returns false, dropping us out of the AttackPlayer Sequence. Why is yours failing right after the custom move to node we wrote?
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
The only thing I can think of is the cooldown node working differently for different versions of Unreal. So if you're not on 5.2, that may be a reason
@CharlesHarper-q7q
@CharlesHarper-q7q 4 ай бұрын
I'm having the same issue with 5.4 currently haha everything has worked great but this exact point! One thing I tired while messing around. I added a Time Limit Decorator on top of the Cooldown node in the attack state and set it to one second. It fixes the Immediate attacking issue but when the chain resets and the enemy goes to attack again. It's like they're sliding on ice to go back to strafing as they're mid attack haha I guess it's nice if you want enemies sliding around? 😂 but yeah, 5.4 just seems to work different with the cooldown node like Ali said haha even went back about 3 times to see what was different until I found this comment haha
@Arctan95
@Arctan95 4 ай бұрын
@@CharlesHarper-q7q I genuinely tried to debug this to the point that, as Ali suggested, there must have been a tweak to one of the nodes, I combed the network and it was node for node the same. Very happy to hear it isn't just my setup, you have restored some degree of my sanity over this one, hah.
@CharlesHarper-q7q
@CharlesHarper-q7q 4 ай бұрын
​@@Arctan95 Despite that weird hiccup with the attack. Everything else works great! One decorator i tried with the attack state was a At Set Location and it does stop the enemy for about a second or 2 before going in for the attack. It's the CLOSEST I've come to fixing it but otherwise yeah, I just blame it on 5.4 version Cooldown node for making us sound crazy hahaha
@NokenBeats
@NokenBeats 3 ай бұрын
@@CharlesHarper-q7q did you manage to find a fix for this or is it unfixable due to different engine versions?
@Moridagnir.G.P
@Moridagnir.G.P 7 ай бұрын
yet again great video! Something that people can do is add in a Tester Actor, which I added in a bool to allow easy testing, just toggle the instance editable. Then GetActorOfClass TesterActor, grab the bool value for Testing, then use that in a branch to either print and display the EQS markers, or to real AIC to player. Very simple but stops you having to reopen the file and reconfig it every time. **EDIT** This is for inside the EQS_Context_AttackTarget class :)
@AliElZoheiry
@AliElZoheiry 7 ай бұрын
Hey, thanks for sharing your tip! It's always great to find ways to streamline the testing process. Keep up the good work! 🙌
@HusmanGames
@HusmanGames 10 ай бұрын
Another one, damn feels good to get these long videos done, appreciate the great content!
@AliElZoheiry
@AliElZoheiry 10 ай бұрын
And I appreciate you for watching and commenting. Really happy that you're finding this helpful 🙏
@Cjoudan
@Cjoudan 11 ай бұрын
6:48 My grid is not showing up and my Pawn doesn't have the Pawn icon on it? What did I do wrong?
@Cjoudan
@Cjoudan 11 ай бұрын
after going further in the video it only shows up randomly? not sure what is going on.
@AliElZoheiry
@AliElZoheiry 11 ай бұрын
Well I'm glad it fixed itself :D
@Cjoudan
@Cjoudan 11 ай бұрын
@@AliElZoheiry well I wouldn't say fixed. My debug doesn't show the nodes for the EQS. Not sure what is going on.
@AliElZoheiry
@AliElZoheiry 11 ай бұрын
@@Cjoudan make sure you're not accidentally pressing "G" that's the shortcut that toggles all debug UI elements
@kaiser6594
@kaiser6594 11 ай бұрын
Do you remember the "print" bug when debugging the AI? Yeah... same thing. Restart the editor (at least it works for me). 5.3.2 has given me a lot of problems, I'm going to try 5.2.1 Edit: nvm, i can't change the number of points in the query. Edit2: ahh... that was... my fault..
@MrMeat570
@MrMeat570 8 ай бұрын
Hey, i have a problem and am hoping u can respond but when ever my enemy goes into strafing instead of playing the left and right strafe animations it plays the walk backward instead but if i remove the walk backward animation from the blendspace then it plays the strafing correctly, how can i use the backward animation and play the correct anims. btw ur tutorials r amazing
@AliElZoheiry
@AliElZoheiry 8 ай бұрын
Hey there MrMeat. Make sure you setup your strafe blendspace correct, where the walk back animation is set when the direction -180 and 180. In my latest tutorial I go over how to create a blendspace from scratch kzbin.info/www/bejne/qZabmJ6viLqZn5Y Check it out and make sure you're blendspace and direction variable are setup correctly
@MrMeat570
@MrMeat570 8 ай бұрын
@@AliElZoheiry alright, thanks, will check it out
@TrustMeNothing
@TrustMeNothing 3 ай бұрын
Awesome tutorial. This is gotta be the best tutorial about behavior trees and AI stuff I had ever seen.
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Thank you for your kind words! I'm really glad you found it helpful 🙏
@erksipa
@erksipa 5 ай бұрын
Remember to make the BTD_IsWithinIdealRange blackboard variable "IdealRange" instance editable. Great tutorial as always!
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
I'm glad you enjoyed the tutorial and found it helpful. 🙏 Thanks for sharing the tips ;)
@erksipa
@erksipa 5 ай бұрын
@@AliElZoheiry It helps the AI;))
@MrBontA-cs1ue
@MrBontA-cs1ue 9 ай бұрын
I love how you explained this, awesome tutorial!
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Thank you for your positive feedback! I'm glad you found the tutorial helpful :)
@unrealdevop
@unrealdevop 9 ай бұрын
Bro, your content is hands down the best Ai content available. Very well explained, and very well executed. Thanks for the videos Note: You can also setup a 'Blueprint Interface' to pass that 'actor variable' and have that variable be 'instance editable' so that you can simple select the targets you want from that instance of the Test Pawn and at least for me it works. (Seems to be an update bug where you have to change it back to Querier and then back to your custom one for it to update in the viewport and show those points)
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Hey there! Really glad you found it useful, and thanks for your support. That’s a great idea with the testing pawn, I’ll definitely do that in the future
@unrealdevop
@unrealdevop 9 ай бұрын
@@AliElZoheiry yeah I did that but later realized that my Ai controller was going to be the one with the target reference so really you would still need two branches so it really just prevents you from needing to cast to it.
@crs11becausecrs10wastaken
@crs11becausecrs10wastaken 6 ай бұрын
Great series man, delving into areas of the engine I had yet touched upon. One thing that did break for me, is when I deleted the move to actor node in the attack sequence and replaced it with move to ideal range node, the sequence breaks. It quickly skips over the move to ideal range node as if the enemy AI is already in the attack radious of 150 and does the attack montage, no matter what distance it is from my character. I've gone over this video five times now, step by step, and this problem continues to persist.
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
If it skips over the node instead of failing on it, that means the node is succeeding, so if it isn't doing the expected behavior, you might want to see why it reaches the success function without moving
@crs11becausecrs10wastaken
@crs11becausecrs10wastaken 6 ай бұрын
@@AliElZoheiry After two days of exhaustingly going over my node structure, I just found the issue. On the decorator, the execution line was coming out of the execution out pin of the node instead of the success out pin of the node. >.< Sometimes blueprint muscle memory works against you. Thank you so much for taking the time to reply.
@BoristheBlade
@BoristheBlade Ай бұрын
@25:08 how did you change your own skeletal mesh like that?? :D
@AliElZoheiry
@AliElZoheiry Ай бұрын
Hahaha that made me literally laugh out loud 😂
@DaviesMurphy
@DaviesMurphy 6 ай бұрын
ı fixed it. if your character teleporting and bugging strafe blendspace on playing. probably your charaters anımations is not playing in place. if you download animations in mixamo tick "in place" box your character animations played has to be like runned on the treadmill. and have to be your 2 animations first one -> strafe x axis. secondly strafe y axis. and dublicate these and change playRate as -1in this way you will have four animations forward backward left and right. place these animations in correct points. its so eays.
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
Thank you for sharing your solution! I'm sure it will help others who might encounter the same issue.
@_gooseduck
@_gooseduck 5 ай бұрын
Your solution also helped me a lot in resolving my character's teleportation issue. Thank you so much for sharing your solution. :)
@muntasirdawlut
@muntasirdawlut Жыл бұрын
For Those whose Enemy is not going to hide at the 50:00 I've found out that the issue is the line trace channel in the EQS_FIndCover, Click on the Trace and you will see channel, normally by default it's selecting VISIBILITY by default. Now click on you enemy and ignore the visibility channel Under collision and everything should work, normally if you have an enemy the visibility channel is not much of a use because you will create custom trace channel to make your enemy more receptive to various trace that may occur in the game such as getting Hits etc. hope this helps Someone facing this issue
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Very good addition, thank you 🙏
@Cjoudan
@Cjoudan 11 ай бұрын
didn't work for me, all values for the find cover EQS are 0.00.
@muntasirdawlut
@muntasirdawlut 11 ай бұрын
make sure you have set those value in the EQS correctly like Ali did@@Cjoudan
@Cjoudan
@Cjoudan 11 ай бұрын
@@muntasirdawlut I meant nodes on the preview area. I have the same EQS values in editor.
@elhasaman
@elhasaman 7 ай бұрын
Youre the goat! Worked for me
@itsroachtime5243
@itsroachtime5243 Жыл бұрын
I'll recommed you to all my UE friends! Thank you and happy coming Christmas!))))
@AliElZoheiry
@AliElZoheiry Жыл бұрын
I really appreciate that. Thank you and happy Christmas 🙏
@occy999
@occy999 Жыл бұрын
So great tutorial even if i did spend twice as long trying to work out why it wasnt working, getting super annoyed, restarting and eventually realising that i needed to check the box to inverse condition on BTD_isWithinIdealRange... sometimes i hate computers lol
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you, glad you liked it. Hahah these small issues can be the most annoying indeed, but the more you make these mistakes, the less likely you are to make them in the future, so that's progress ;)
@beppolaut605
@beppolaut605 Жыл бұрын
Hey Ali, good Video. And if you play around with the context height offset and your testing EQS is higher as the player, you'll see the enemy is running to a place with higher Cover.
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you, glad you liked it 🙏☺️
@andreww4751
@andreww4751 22 күн бұрын
Amazing tutorial, one thing that was tricky is that the behavior of what he does when he stop seeing you was not handled in the tutorials so it was a bit tricky to set that up and make it work with everything but overall amazing, maybe its handled in the future.
@AliElZoheiry
@AliElZoheiry 20 күн бұрын
Hey there, glad you enjoyed it. Indeed it is handled in part #9
@HandsOnKnowledge
@HandsOnKnowledge Жыл бұрын
I have run into an issue and can't seem to solve it maybe you can help? I added the AttackRadius and DefendRadius in blackboard and the value was being set by the interface just like you showed but what ends up happening is that my enemy character never seems to leave the "isWithinIdealRange" Sequence and gets stuck there and then switches between Attack and isWithinIdealRange sequence and never seems to get to Strafing? Could you help me with that?
@HandsOnKnowledge
@HandsOnKnowledge Жыл бұрын
Wow as soon as I posted this comment I went back to look at the code while the game is paused and on the bottom right hand side you can see the values of the blackboard variables and I saw AttackRadius and DefendRadius were both 0 then I went to AIC_Enemy_Base and saw that I forgot to connect the SetValueAsFloat functions after GetIdealRange function, silly me :)
@HandsOnKnowledge
@HandsOnKnowledge Жыл бұрын
One question I would like to ask that I couldn't figure out is that when I run EQS it displays an error in debug that says "Failed test: Distance: to Querier (between 150 and 500, prefer greater 1x). "Value 633.770996 is out of range". Why am I getting this error?
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hmm.. not really sure why you're seeing this. Where are you seeing it exactly?
@ivomollov3073
@ivomollov3073 4 ай бұрын
Awesome video as always :) Everything worked fine for me even with several additions of my own but the cooldown decorator. Did I miss it or you set it to be on cooldown? My enemy is able to get off one attack before triggering the cooldown and the strafe sequence
@AliElZoheiry
@AliElZoheiry 4 ай бұрын
Thanks for your comment! I'm glad to hear that everything worked well for you! I believe the cooldown decorator works slightly different from one engine version to another. At least that's what I observed, but I didn't see anything in the documentation about that 🤷
@ivomollov3073
@ivomollov3073 4 ай бұрын
@@AliElZoheiry If I'm honest, on my end it works as the name and in-engime documentation suggests- it puts a branch on cooldown after successful execution. I found it weird that on your side it was initially on cooldown. It would be helpful if we had a switch for this since both behaviors have their uses. Either way I found a work around to get the desired behavior and I have a (somewhat) Soulslike boss enemy and I'm super excited to polish. Thank you for the reply and Godspeed to you Cheers
@ivomollov3073
@ivomollov3073 3 ай бұрын
@@AliElZoheiry Hi there. I found out why the cooldown decorator was not working for me. It was working as intended but the custom move to task failed and the movement output of it is "Aborted". For some reason, at times this task fails and the AI cannot move to location which is visible and reachable and then succeeds the next this branch is off cooldown. I tried debugging it but to no avail. Do you have any idea why this happens?
@tomerhertz8502
@tomerhertz8502 Жыл бұрын
another AMazing tutorial from Ali, great content & information...and you deliver it with in such a way, that everything is explained in great detail !!!
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thanks a million Tom! I really appreciate you 🙏
@edodemerzel7032
@edodemerzel7032 8 ай бұрын
On 45:49 You set "AttackTarget" as a Context parameter for Trace test in EQS_FindCover. Sounds logical and works well in this video. I didn't have any problems with it but later, when Part 8 had already been passed, I got back to EQS_FindCover trying to modify my Ranged Enemy and found out that I use "Querier" as a Context parameter in EQS_FindCover, not "AttackTarget", and... it works well anyway. My Ranged Enemy goes behind cover and heals the way it's meant by your tutorial despite my mistake. Moreover, if I change Context parameter to "AttackTarget" as it should be, Enemy stops looking for cover. Do You have any ideas how it is possible? I got back to Part 4 watching this section one more time and now I'm a bit confused. The only reason for this could be that You changed Trace test context somewhere in other Parts, I followed that fix and then just forgot about it))
@AliElZoheiry
@AliElZoheiry 8 ай бұрын
No idea to be honest. Because if the context is "Querier" that means that you are doing a trace from yourself to yourself, which shouldn't work.
@MrPlugPod
@MrPlugPod 7 ай бұрын
@@AliElZoheiry interesting because when i select 'AttackTarget' context all the dots turn green.. Only have blue (visibility) ones showing when context is set to Querier
@deltacake3809
@deltacake3809 7 ай бұрын
Another great tutorial, cant wait to implement the knowledge to my game
@AliElZoheiry
@AliElZoheiry 7 ай бұрын
And thank you for watching and for all the comments. I really appreciate it
@oerealrap
@oerealrap Жыл бұрын
bro ur a genious the way you teach things and make it so easy to understand ur approuch to game Ai is insane bro so good man have u released any games i would be real keen to play one
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you so much 😀 I really appreciate your kind words. I am currently working on a game but I haven't released anything yet, I will definitely let you know when I do
@oerealrap
@oerealrap Жыл бұрын
Yesssss definitely bro keen as aha I'll help spread the word hear in aus bro
@JonWith1n
@JonWith1n 7 ай бұрын
Thank you, I can't believe this is free, best UE tutorials on youtube I think (or at least easy top 3 ... maybe there is some great stuff out here I don't know about yet ^^)
@AliElZoheiry
@AliElZoheiry 7 ай бұрын
Thank you so much for your kind words! I'm really glad you find the tutorials helpful. Your support means a lot to me!
@RhyzzG
@RhyzzG 6 ай бұрын
Loving this so far!
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
Glad to hear you're enjoying it! Thanks for the feedback 🙏
@songwonseok2137
@songwonseok2137 Жыл бұрын
Hello Ali I have a question regarding the Behavior Tree. For the BTD_ISwithinIDeal Range, on details there is no Default button popping up my screen for some reason. Do you know any reason why that is so? As Always Thank you for your tutorials your awesome!
@songwonseok2137
@songwonseok2137 Жыл бұрын
Hi now I see that it isn't in detail but the default option is on the property matrix option on the upper right button in the detail tab, if I implement the changes in the property matrix will it still work?
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hey, I'm not sure what "Default" button you are referring to. But feel free to join the Discord server and ask your question there (Link in the description)
@songwonseok2137
@songwonseok2137 Жыл бұрын
@@AliElZoheiry Thank you Very much! Fortunately I solved the problem that I was having I just forgot to make it visible xD btw is there any way to remove the health bar of the enemy after they die? Thank you as always!
@nicbleu
@nicbleu Жыл бұрын
don't forget to click on the eye for the variable
@blablabla9495
@blablabla9495 4 ай бұрын
if you notice your btd have some weird text under like "log index become relevant -1", you created it with the wrong decorator (been stucked on this for hours)
@AliElZoheiry
@AliElZoheiry 4 ай бұрын
Thanks for the tip! That can definitely cause confusion. Glad you figured it out! 🙏
@pshycogamer7469
@pshycogamer7469 27 күн бұрын
Hey brother ...can i dublicate this all the work from base enemy to a different enemy ...will it work the same as base enemy or i have to do some changes to make my second enemy work same as base enemy?
@AliElZoheiry
@AliElZoheiry 22 күн бұрын
Hey! Yes, you can create multiple enemies, which is what I do later on in this series, just make sure to set all their variables
@blueslothvfx7174
@blueslothvfx7174 Жыл бұрын
Thank you so much for the tutorials, I’ve learnt so much from you in the past few days! I was wondering if you have any plans on covering some sort of water AI or water navigation, it’s something I’m really struggling with right now and I couldn’t find a good tutorial that covers this aspect at all. Cheers!
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hey, im glad you found this content useful 😊🙏 I didn't plan on making any water AI, but I imagine it's quite similar to flying AI, I might be covering something like that in the future, but I'll add your suggestion to my list 👍
@hype._.
@hype._. 6 ай бұрын
Thank you for the video! I have a question at 29:26, is it okay if I don't connect anything to the 'target' in the 'Get Ideal Range' function?
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
Hey there! You need to connect the correct actor to the Target of the "GetIdealRange" function, because if you don't connect anything it will use "Self" which is a reference to the class you are currently in (Which is the AIC_EnemyBase) so you will be calling "GetIdealRange" on the AI controlller that doesn't implement the interface, thus will always return 'null'
@Zoykzmc
@Zoykzmc 11 ай бұрын
Wow, this tutorial is great! One question, how would I go about having the strafe always be in one direction? Since both points would be at equal distance is there a way to prefer one side?
@AliElZoheiry
@AliElZoheiry 11 ай бұрын
Glad you enjoyed it! I haven't tested strafing in a single direction, but theoretically, you can add a dot product test from the enemy to the player to filter out all points facing a certain direction
@SalvatoreFiengo-s2n
@SalvatoreFiengo-s2n 6 ай бұрын
Awesome tutorial and series. Just FYI I spent hours on this EQS find cover on UE 5.4.. while the testing pawn was fine with the query my IA didn't like it, just stayed there on starting point. all fixed after i set item and context offset to 0. in the end i resolved with '60' which i think is a good compromise for now.
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
Glad to hear you were able to resolve the issue! Setting the item and context offset can make a big difference in how the AI interprets the query. Sounds like you found a good compromise for now. Keep up the great work!
@stvarnov8754
@stvarnov8754 3 ай бұрын
Enemy get frozen for a few seconds If I escape his perception radius while he is strafing. Is this intended ? Behavior tree starts quickly switching from focus target to run EQS query and back
@AliElZoheiry
@AliElZoheiry 3 ай бұрын
Hey there, this sounds like your EQS is failing to find a valid location and then failing the entire sequence which then starts over again and repeats. To prevent this, you should put the EQS under a selector, and have the right side do something in the case of failure, like default to a certain location or run a different EQS, that way you ensure that there is always a valid location to MoveTo and that the sequence doesn't fail if the EQS fails
@renisrrenis9225
@renisrrenis9225 9 ай бұрын
how to make AI filter self in EQS? Since it detects that it can "hide" behind himself
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
You should have the enemy pawn ignore the visibility channel (unless you need it to block that channel for another reason, in that case you should create a custom trace channel)
@renisrrenis9225
@renisrrenis9225 9 ай бұрын
@@AliElZoheiry yeah figured out already, by increasing item height offset, so that enemy would not think that it can hide behind himself, and had to choose "All Matching" for EQS mode instead of "Single Best" so that EQS would work how it should.
@DaddyDonskie
@DaddyDonskie 11 ай бұрын
Hi Ali, I'm a total noob so this might be a silly question: at 2:49 mark, in the Set Direction part, where did you get the "velocity" variable plugged in the Calculate Direction, is it the same as "Get Velocity" from Get Owning Actor? THANKS A LOT
@AliElZoheiry
@AliElZoheiry 10 ай бұрын
Hey there, not a silly question at all, it's not very clear in this video because I'm using the default Manny ABP, and this "Velocity" variable is indeed set based on a "Get Velocity" from the owning actor.
@DaddyDonskie
@DaddyDonskie 10 ай бұрын
@@AliElZoheiry Ah, I see, was scratching my head for a minute, thought I missed something in the previous videos 😆 Thanks a lot man! these tutorials are the best!
@Wisco-Titan
@Wisco-Titan 6 ай бұрын
Well thanks for the tutorials so far, they've been great! Not sure doing this one would be worth it until I learn animations so I shall be back at some point.
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
You're very welcome! I'm glad you found the tutorials helpful. Take your time with learning animations, and feel free to return whenever you're ready to dive into this topic!
@indexofpixels
@indexofpixels 11 ай бұрын
I have set up the strafe, but my character is still facing the direction they are walking to, ive messed with the settings but i cant figure it out.
@AliElZoheiry
@AliElZoheiry 11 ай бұрын
Hey, sorry to hear your facing issues. Feel free to join the Discord server and ask your question there so you can share screenshots or a video
@kaiser6594
@kaiser6594 11 ай бұрын
check Focus target on behavior tree. Attack Target Key should be set on "AttackTarget"
@adrenalingames4208
@adrenalingames4208 16 күн бұрын
EQS system does not work on 5.5 GASP. I stopped at 17:09, in addition to everything, an error began to appear "Acessed none Blackboard" in every place of the AIController where it is connected to the logic. When checking the validity, the AI ​​stands rooted to the spot p.s. In addition to Event on Procces, I also connected Begin Play. The error is gone Fix: I missed Desiret Rotation On
@AliElZoheiry
@AliElZoheiry 14 күн бұрын
Hey! Thanks for sharing your experience. It sounds like you've made some great progress by identifying the issue with the Desire Rotation. Glad you found a fix! If you have any more questions, feel free to ask 🙏
@Storypaintings
@Storypaintings 5 ай бұрын
This has helped me a lot! Thank you so much for your effort ❤ This is all really well explained.
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
I'm thrilled to hear that this video has been helpful for you. Thank you for your kind words and glad you found it well explained! 😊
@treetime6766
@treetime6766 Жыл бұрын
i just LOVE youre content please continue this series !
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you treetime, glad you found it helpful. I'll surely continue the series
@treetime6766
@treetime6766 Жыл бұрын
@@AliElZoheiry THX SO MUCH FOR CONTINUING I LOVE THE SERIES
@supa76
@supa76 Жыл бұрын
hello, thanks again Ali. Got a problem here: I'm stuck at about 40:30 - my enemy dose the initial strafe and attack into the attack radius, but when it moves back to the defend radius from the attack radius, it doesn't strafe anymore but gets stuck. the behavior tree seems to be stuck in a loop between the cooldown for attack and the strafe/run EQS query, however it does flip back into the attack sequence and moves back to the attack radius. It just doesn't strafe around anymore. thanks for any help, you are my UE god haha
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hey Supa, I’m not really sure I understand what’s going wrong. I suggest joining the discord server and asking your question there so you can provide screenshots/videos that will help with debugging
@supa76
@supa76 Жыл бұрын
@@AliElZoheiry ok thanks I think I will!
@mk2gamer
@mk2gamer 11 ай бұрын
@@supa76 I'm having the exact same problem, did you find a fix?
@stvarnov8754
@stvarnov8754 3 ай бұрын
Same problem :(
@kalyanchakravarthi2005
@kalyanchakravarthi2005 2 ай бұрын
I don't Understand Why ? But From Start My AI Move to Doesn't Work to ATTACK TARGET while it works on investigating and patroling States. I also created switch Between States but Enemy Dosen't Ready to Attack or Chase me. Any Solution for This ?
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey there, sorry I can't be helpful here. it could be anything really, without seeing the problem I can't tell
@stealthgamesaremyjam145
@stealthgamesaremyjam145 2 ай бұрын
I'm having an issue when my enemy is within ideal range. In the behavior tree once my enemy is within ideal range the sequence with the decorator "BTD_IsWithinIdealRange loops for around 8 second before the enemy decides to attack. In the video I'm currently at 41:35
@stealthgamesaremyjam145
@stealthgamesaremyjam145 2 ай бұрын
At 33:05 in the video I completely missed that the error margin was set to 50. I've now set mine the same and the issue is gone.
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey! Glad you solved the issue at the end 💪
@kranthivennu
@kranthivennu 6 күн бұрын
Awesome tutorial Ali ,No Words its tooo good. Thank you very much for Tutorial😊
@AliElZoheiry
@AliElZoheiry 6 күн бұрын
You're very welcome! I'm glad you found it helpful. Thank you for the kind words and for watching! 😊🙏
@rezaj.mousavi7310
@rezaj.mousavi7310 Жыл бұрын
hi I have a question , do you know how can I grab enemy and then use that enemy ? for example I grab a drone and use that enemy's gun for firing to other enemy? If you know, would you like to make a video tutorial for understanding subject?
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Very interesting idea, I know how to implement that indeed, it's not simple to get it to look good because it requires aligned animations from both the player and the enemy, but the functionality itself is not very difficult to implement, I'll consider it for sure ;)
@samo4209
@samo4209 5 ай бұрын
how do i make the blend space
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
I have a tutorial on Beldnspaces as part of my Bow and Arrow series
@AdamWoolnough1981
@AdamWoolnough1981 8 ай бұрын
i found context height offset was good for me, it could see over half height walls but not directly behind the wall where a player might be crouching
@AliElZoheiry
@AliElZoheiry 8 ай бұрын
I'm glad to hear that the context height offset worked well for you! It's great for providing visibility over walls while still allowing for strategic gameplay.
@Jubair_Khan772
@Jubair_Khan772 9 ай бұрын
I just finished 3 tutorials of Smart AI & 20 more to go. Is it performance costly for mobile platforms?
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Hey there! Glad to hear you've been diving into the AI tutorials. In terms of performance on mobile platforms, the key lies in optimizing the AI behaviors and minimizing the computational load, so less amount of points on the EQS, less calls, and most importantly, less navigation calls, those are pretty expensive. It's definitely doable to make efficient AI for mobile, just keep an eye on performance as you develop. Good luck with the rest of the tutorials!
@Jubair_Khan772
@Jubair_Khan772 9 ай бұрын
@@AliElZoheiry thanks.. your tutorials are very helpful. 🙂
@atovfx
@atovfx Жыл бұрын
i have issue with cooldown when i'm try to change obsorver it's only none there lower priority doesn't exist can you help me with this?
@AliElZoheiry
@AliElZoheiry Жыл бұрын
There should be "lower priority" as long as there is a branch to the right of cooldown, otherwise there isn't anything that's of lower priority
@atovfx
@atovfx Жыл бұрын
@@AliElZoheiry okay i figure out the problem that was my mistake i connect with sequence not selector when i connect with selector as combat state it’s fixed thank you
@DerWiNG33
@DerWiNG33 2 ай бұрын
what is the solution of Enemy not focusing to the Target during the strafe state, its alway facing to the EQS point.
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey, make sure your AI's focus target is set correctly in the behavior tree. and that you are not using the testing EQS context, and that the TestingPawn is not in the level
@jeff858
@jeff858 3 ай бұрын
For some reason my cooldown decorator does not have any other observer abort option besides "None". Does this have to do with the version of UE I am using or is it another issue?
@AliElZoheiry
@AliElZoheiry 3 ай бұрын
Hey! It could be an engine version issue, but I've never encountered it to be honest. Unless the tree itself doesn't have any lower priority branches (meaning branches on the right)
@kylehitch1421
@kylehitch1421 Жыл бұрын
I've had no trouble up until the running and hiding.. I've done it over multiple times. My AI Wont find Cover... pulls out sword and stands there (Changed the the grid to around attacktarget Fixed it) but now he only hides once before attacking... he starts to hide (taking one step) then stops. then continues to attack..
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hey Kyle, there could be a lot of things happening here. The best way to find out, is to debug your tree, by openning it side by side with the game window, and watching the flow of execution, and try to pinpoint where it's going wrong
@garyeponge
@garyeponge 7 ай бұрын
Awsome tutorial as usual!!
@AliElZoheiry
@AliElZoheiry 7 ай бұрын
Thank you so much! I'm glad you found it helpful 🙏
@haymi2788
@haymi2788 3 ай бұрын
I have a question, When I open my Unreal Engine my BTT_SetMovementSpeed Enum State reset to "Idle". Do you know how to fix it?
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey there, unfortunately this is a bug with some versions of the engine, I haven't found a permanent fix for it, other than just making sure that all values are correct in the tree when opening it, especially after crashes
@osworil3914
@osworil3914 8 ай бұрын
Hello i have a problem on the animation and blend by bool. my problem is that it does not detect the focus path and does not set the boolean variable which changes the animation to strafe can you know how to fix that ? Thank
@AliElZoheiry
@AliElZoheiry 8 ай бұрын
Make sure you correctly created the "IsFocusing" variable I showed at 03:25
@theindiegamedude
@theindiegamedude Жыл бұрын
I didn't catch the additional "OR Boolean" for the "Get Curve Value > 0.0" OR "IsFocusingTarget"(new variable), in ABP_Manny's AnimGraph during the first view. For several minutes, I was wondering why Manny's feet were stuck to the floor, and he was wiggling around at his hips when moving into the EQS Query XD. Then started this video over from the beginning and paid close attention, and caught that addition to the graph.
@AliElZoheiry
@AliElZoheiry Жыл бұрын
I just realized now indeed that I didn't explain that I added that part, very good catch. I'll mention it in the next video ;)
@theindiegamedude
@theindiegamedude Жыл бұрын
@@AliElZoheiry Haha. The Manny looked like it was trying to hypnotize the player with some sort of hula dance hip gyrations XD
@AliElZoheiry
@AliElZoheiry Жыл бұрын
@@theindiegamedude hahahaha very well put 😂
@theindiegamedude
@theindiegamedude Жыл бұрын
🤣
@blindphoenix
@blindphoenix Жыл бұрын
at 3:46 for anyone that wants to see it
@ChrisWaitt-uq3xi
@ChrisWaitt-uq3xi 2 ай бұрын
Great tutorial! The only issue I couldn't figure out is why it goes straight to Strafe instead of Attacking first since Attack happens before strafe in the parent selector. In my project when the enemy detects me it attacks first then goes into strafe, any idea why? UE5.4.4
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey! Glad you liked the tutorial! 🙏 It sounds like a difference in how the cooldown node behaves, I believe it might behave differently in each engine version, but i can't be sure ad I haven't tried it in 5.4
@ChrisWaitt-uq3xi
@ChrisWaitt-uq3xi 2 ай бұрын
@@AliElZoheiry Thanks. Sharing for anyone else who encounters this - I deleted the sequence and sub nodes for wielding the sword and added them again fresh, working now :)
@drinfinity4
@drinfinity4 4 ай бұрын
I am having a bit of trouble with the EQS still choosing a point across the circle. I have all my values the same as yours and when i test it with the pawn it shows that only the two closest are lit to be scored. The problem is when the AI attacks its in the center so it then makes all points available. im trying to make the AI run back to the point it came from then strafe.
@AliElZoheiry
@AliElZoheiry 4 ай бұрын
If you want the AI to run back to the point it came from, then you need to implement that functionality outside the EQS, but simply saving the location of that point right before the attack, and once the attack is over, have the enemy return to that saved point and then run the EQS again
@youngjojo3052
@youngjojo3052 9 ай бұрын
Should I used something like this for a multiplayer game?
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Hey there! It really depends on the specific needs of your multiplayer game, but generally, you can run any of these AI tools on the server only, and then the AI moves, and the movement will be replicated, so it will work just fine
@maxharris6926
@maxharris6926 3 ай бұрын
Superb! Loving this tutorial series. I actually have a decent theoretical background with AI and behavior trees, but im still getting a lot out of seeing someone approach it in a practical way. Nice job making these relevant for people at different skill levels. I do have a question, though. In the previous video, you created a function for getting the state that internally retrieved it from the blackboard. In this video, you created a variable to store attack target in additional to having an attack target stored in the blackboard. Why would you do it that way? It seems like you are creating a vulnerability by having two authorities on what the attack target is. Right now, it's fine since i think it's only set in one place, but wouldn't it be better to use only the blackboard value or am i missing something?
@AliElZoheiry
@AliElZoheiry 3 ай бұрын
Hey! I'm glad you're enjoying the series 🙏 You're correct in observing the two authorities, but it's not really 2 authorities here, let me clarify. The flow of data is as follows: Perception -> AI Controller -> Blackboard -> Behavior tree. 1. The perception system perceives the target (Being the source of truth here) 2. The AI controller then updates the blackboard, and also stores a copy (this is always done at the same time, meaning that these 2 variables will never be out of sync, to prevent accidental override of that variable I should have indeed marked it as private) 3. Then the blackboard feeds the behavior tree Hope this helps clarify a bit
@randallmiller3162
@randallmiller3162 5 ай бұрын
Another great Tutorial. Thank you so much for sharing your time and knowledge with us!
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
You're very welcome! Your kind words mean a lot. Thank you for watching and taking the time to comment 🙏
@morphe1467
@morphe1467 Жыл бұрын
Thank you for your great video. I have one question, if the AI has its own base, how give more EQS scores to the direction toward base in case AI need to retreat, and give a lower score to the opposite side of the enemy base. In summary, I would like to know how to measure scores based on something outside the radius of EQS. How is that possible?
@AliElZoheiry
@AliElZoheiry Жыл бұрын
You're welcome, glad you liked it. If you just want to have an EQS that moves in the direction closer to another actor then instead of generating a grid of points, you can generate points around specific actor types, you'll find that as an option in the EQS called ActorsOfClass. But that just gives you the location of these specific actors, what you want is to move closer to the base and not further away Unfortunately you can't combine the information from 2 EQS queries without some manual work in the middle, but what you can do is simply have the actor face the direction you want them to go, and then generate points Infront of them only
@morphe1467
@morphe1467 Жыл бұрын
Then, How about if I spawn an actor that is invisible and has no collision, and measure the score for that actor by always keeping the actor's position as far away from the character as the EQS range and pointing towards the base? Do you think there's something wrong with this approach?
@AliElZoheiry
@AliElZoheiry Жыл бұрын
When doing an EQS on actors you can specify "No range" meaning wherever the actor is in the world, the EQS will find it@@morphe1467
@matka5130
@matka5130 Жыл бұрын
Great stuff as always...Just confirming everything works...Thanks
@AliElZoheiry
@AliElZoheiry Жыл бұрын
You're welcome Matka 🙏 thank you for watching ☺️
@Da-Bolt
@Da-Bolt 7 ай бұрын
sir why the player always chase me even im aout of eye sight range ??? i dont know if i miss any where can you reply me about that
@AliElZoheiry
@AliElZoheiry 7 ай бұрын
Hey there, what you are referring to is additional functionality that is added in part 9, allowing the enemy to forget the player when they are out of range or line of sight
@subzerosaba
@subzerosaba Ай бұрын
hey ! thanks for this super amazing tutorial! can you pleas etell me where is the ideal range set up ? I mean what reference is it using ? I understand almost everything besides that.
@AliElZoheiry
@AliElZoheiry Ай бұрын
Hey! Thanks for your kind words and for watching! The ideal range value is based on what the interface function "GetIdealRange" returns. This function returns default values in the BP_Enemy_Base class, and can be overridden in the child classes (e.g melee and ranged enemies) Then we call that function in the AI controller when it first possess the pawn, to set the blackboard values of the attack radius and the defend radius. Now we have those blackboard variables getting their values from whatever the enemy pawn returned in that interface function. Then we use those blackboard values in your behavior tree tasks, decorators, EQS, etc..
@subzerosaba
@subzerosaba Ай бұрын
@@AliElZoheiry Oh my gosh, thank you for such a specific and detailed answer! Thanks again for the amazing tutorials you're creating! This kind of knowledge and detailed explanation is usually hard to find. You did an amazing job!
@Automatia211
@Automatia211 23 күн бұрын
Very nice tutorial! But I'm confused about one thing: I've set up the animations>locomotion>walk/run like the tutorial did: when "Is Focusing Target" is true, it will play the strafe blendspace. If not, then it will play MM_WalkRun blendspace. I've also set up the movement speed in the behavior tree: the movement speed for "attack" is sprinting and the movement speed for "strafe" is walking. The problem is, when the enemy is switching from strafing to attacking, it's using the sprinting speed but with a walking animation. Do you know how I can fix this?
@AliElZoheiry
@AliElZoheiry 20 күн бұрын
Hey! If the speed is correct, but the animation is wrong, then the problem is likely with your blendspace, because the blendspace decides which animation to use based on the speed. So either the blendspace itself isn't configured correctly, or you are not passing a "speed" parameter to the blendspace when using it in your anim BP
@Automatia211
@Automatia211 19 күн бұрын
@@AliElZoheiry Thank you! Before I set the strafe blendspace speed maximum as 100, but the sprint speed in behavior tree is 500. Now I add jog animations to the strafe blendspace as well, and set the blendspace speed maximum as 500, then it works!
@DevilPork92ITA
@DevilPork92ITA 2 ай бұрын
simply the number 1. true engineer
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Thank you for your kind words! I really appreciate it 🙏
@kmtsvetanov
@kmtsvetanov 5 ай бұрын
Is there an option to do something on EQS fail (when there are no acceptable points) ?
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
Yup, when the EQS fails, the behavior tree node that runs the EQS will fail. Which means that if you put that node under a selector, and the EQS fails, then the selector will pick the node on it's right. So just add your Run EQS node under a selector in the behavior tree, and anything you want to run when the EQS fails, make it a task on the right of that run EQS node (below the selector)
@kmtsvetanov
@kmtsvetanov 5 ай бұрын
@@AliElZoheiry Thank you!
@AoGuang
@AoGuang 3 ай бұрын
EQS was giving me trouble at the end. i needed to have the enemy capsule collision set to ignore the eqs trace. Otherwise he kept using himself as a block for the trace and hiding in the same spot in the open
@AliElZoheiry
@AliElZoheiry 3 ай бұрын
Thanks for sharing that tip! That’s a common issue, and I’m glad you figured it out 🙏
@mittxns922
@mittxns922 Ай бұрын
The enemy sword collision has to be set to ignore visibility too or it will also cause this problem.
@hidezen387
@hidezen387 6 ай бұрын
Hey, thank you for your AI series! I don't really know why but I have issue with IsWithinIdealRange, I did every step from your video but I don't have Ideal Range option in details panel. What can be the problem?
@hidezen387
@hidezen387 6 ай бұрын
Nevermind, I forgot to set blackboard key selector variables as public :D
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
Hey, glad you figured it out 🙏
@Procedural_Minds
@Procedural_Minds 9 ай бұрын
EQS is great, thanks for teaching this! Quick question - When my IsWithinRange is not inverted, the AI strafes but doesn't run to me. But when it is inverted like you have it, they'll chase me, but never start strafing. I have the IsWithinRange to be
@Procedural_Minds
@Procedural_Minds 9 ай бұрын
I found the problem, I was plugging the distance check into the controller, instead of the pawn. It's the small details that always get ya.
@AliElZoheiry
@AliElZoheiry 8 ай бұрын
Glad you're finding the EQS tutorial helpful! Great that you found the problem! Well done. Indeed it's always the small details, but they will become easier and easier to find as you encounter them more often
@sajjadmirshabi
@sajjadmirshabi Жыл бұрын
It was amazing, Nice tutorial thanks Ali
@AliElZoheiry
@AliElZoheiry Жыл бұрын
You're welcome Sajjad, and thank you for the support 🙏
@sajjadmirshabi
@sajjadmirshabi Жыл бұрын
@@AliElZoheiry I'm really happy you are growing so fast, I'm awaiting for the next tutorials, can you please add navigation linkers to the project as well? Which makes an AI be able to climb up a wall or climb down etc. It would be awesome
@Kykyhaaa
@Kykyhaaa 6 ай бұрын
Thanks for your video. But I have some spoblem. I don't know why, but my enemy don't whant to hide if I choose test trase as contex_AttackTarget. It's what you chose in the video, but for me working only Contex_Querier.
@AliElZoheiry
@AliElZoheiry 6 ай бұрын
We choose the attack Target because we are doing a trace from the querier (the enemy) to the attack target (the player) and checking if we hit anything in between. If we do, that means there is something between the enemy and the player and we can hide there. If you do from the querier to the querier, then you are doing a trace from yourself to yourself, which as you can tell, doesn't do much. if setting AttackTarget is not working, then I suggest looking at the "Collision settings" for both the player and enemy "Mesh", they should both "Ignore" the "Visibility" channel. Otherwise the line trace will think that hitting a player is a hiding spot
@InnerspaceX
@InnerspaceX Жыл бұрын
Another great part. Thank you!
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Thank you for the continued support Imr! Really happy you enjoyed it
@jhonsommer9330
@jhonsommer9330 5 ай бұрын
Thanks for the tutorial. I had the Problem that my AI still moved to the acceptable Radius before strafing even though the Branch it self was aborted because the distance was to big. What worked for me was on the Event Receive Abort AI use the Stop Movement Node. Then the AI really stops how i wanted. I have a different Behavior tree so that's maybe why it didn't work like in the tutorial
@AliElZoheiry
@AliElZoheiry 5 ай бұрын
Thank you for sharing your solution! It's great to hear how you adapted the tutorial to fit your specific behavior tree. Keep up the good work! 🙏
@someone_who_looks_like_me
@someone_who_looks_like_me Ай бұрын
This is an interesting tutorial, I even modified it a bit. by removing unnecessary “cast to” nodes but tasks such as attack. and making some of my own edits. On version 5.4 the blueprint node “ai move to” doesn't work well. because there can be a problem when a small area is formed around the player without “navmesh”. therefore, I had to abandon the move to ideal distance.
@AliElZoheiry
@AliElZoheiry Ай бұрын
Hey! Great to hear that you’re modifying and experimenting with the tutorial. Just to clarify one thing though, casting is not an issue at all, when casting from classes that depend on each other, like the behavior tree casting to an enemy BP. I have a separate video explaining what people get wrong about casting if you want to check that out. kzbin.info/www/bejne/e4LJnp9oeZ6brac Thanks for sharing your experience! Keep at it! 🙏
@someone_who_looks_like_me
@someone_who_looks_like_me Ай бұрын
@@AliElZoheiry and thank you for the great tutorial! i recommend it to all unreal developers i meet.
@someone_who_looks_like_me
@someone_who_looks_like_me Ай бұрын
@@AliElZoheiry I realize that cast is probably not as serious a problem as they say it is, and I tried the first option of creating an ii with it, but unfortunately, even following the tutorial relentlessly that time, I didn't succeed, everything simply stopped working on the new npc. That's why I decided to use your work to create something of my own. and yes, this time it's working so far. In parallel, I seem to have found a way to fix the actor's feelings on his head so that they rotate with it without having to go into the C++ code. A separate actor is created for the feelings, which is attached to the character's head, and then transmits everything it sees to the necessary actor via trace, while the actor transmits it further to the controller connected to it. it turned out to be very versatile, in my opinion, although it seems not so elegant.
@cliffianson4146
@cliffianson4146 Жыл бұрын
Brilliant, been looking forward to this.😊
@AliElZoheiry
@AliElZoheiry Жыл бұрын
Hope you enjoyed it!
@freyaniczdigitalartist2303
@freyaniczdigitalartist2303 Жыл бұрын
These tutorials are great Ali! Hope you do lots more. Quick issue with the hiding enemy I am hoping you can help - I think as soon as they turn to hide, the state aborts and they don't finish the action. Any ideas why this is different from what you've done? I followed it exactly as best I could.
@AliElZoheiry
@AliElZoheiry Жыл бұрын
It sounds like the value of your decorator changes before the enemy is actually hidden, so try debugging the decorator and see when it returns false and true
@POPCORNGameMovia
@POPCORNGameMovia Жыл бұрын
@@AliElZoheiry ​ Been doing this for 16h stright :)) Same issues here, and the debugging states that the "The item selected #14 is invalid and returns false and was expecting true". I think is because of the line trace and the collisions we set on the actors in the level, just a guess. At least for me the valid points sometimes goes just in front of my character, not good :)) I am more of a visual learner than listener, I also changed the Generate Around Context on the "PontsGrid" from Query to AttackTarget. I will go with the flow for now and see if it will be better later (altho' is not the way to go but I need to feel some progression :)) )
@POPCORNGameMovia
@POPCORNGameMovia Жыл бұрын
@AliElzoheiry @freyaniczdigitalartist2303 So just after I wrote the comment below, I was messing with the last few options I had :)) So The setting are like this for me: - Points: Grid - Context is AttackTarget - Trace - Context is Querier but I unchecked the box "Trace From Context". This is the only way I managed to make it work. - All others (Pathfinder, Distance) Context is Querier All other setting are like in the video. Hope this helps someone who will see the video. Unreal Version used: 5.2
@Atl3m
@Atl3m Жыл бұрын
@@POPCORNGameMovia Works Better. must be a ue5.2 Thing . still not Perfect but Better it Works . no i can continue the sesion :) thanks alot
@freyaniczdigitalartist2303
@freyaniczdigitalartist2303 Жыл бұрын
@@AliElZoheiry Sorry I never got a notification for this reply - I actually went through this course again and got up to this point with the same issue. After a little debugging (not sure if this was the issue the first time) I found that the trace was being blocked where the enemy stood meaning the best/closest place to hide from the player was where he already was.
@senpaiinferno0
@senpaiinferno0 2 ай бұрын
Hi Ali, awesome tutorial! I have a character that can fly and my enemy AIs freeze while I'm in flight. I'm using the AI move to node, is there anything you'd suggest that might help with this issue? Thank you!
@AliElZoheiry
@AliElZoheiry Ай бұрын
Hey! Thank you for your kind words! For the AI freeze issue when you're flying. You should know that the AI move to function only works for ground enemies, if the AI is flying, that means it's not on the navmesh, so AI move to won't work. You'd have to build your own navigation algorithms, or have the capsule touch the floor and only the mesh looks like it's flying by hovering over the ground. That's a way to fake flying
@pawemizura761
@pawemizura761 2 ай бұрын
Amazing tutorial! One thing I don't quite understand is I'm taking BS_SwordStrafe from your package and it throws errors in my UE5 and the blend of the animations is not working at all (the actor just stands still). So the next step I do is I take those additional animations like sword-walk-back/front/left/right and sword-idle and try to create a blend of the animations the triangular form like you do but I have no idea how to, it's not working for me... Can you throw some hints on how to set up those animations please
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey! Thanks for your comment. Not sure what errors you are facing. If you are using animations for the manny skeleton, then they will work, but if the skeleton is different, then you have to retarget them
@pawemizura761
@pawemizura761 2 ай бұрын
@@AliElZoheiry Thanks for the reply!! I messed up with the Speed - I had 430 instead of 100. Still though, I had to manually create blendspace out of single animations, but maybe it's because of difference in versions (I'm on 5.4 and you're on 5.2 I guess). If not then I have no idea why is it happening, because I for sure correctly copy the BS into my folder
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
​@@pawemizura761unfortunately you can't just copy a file from one project to another, you have to right click on it and choose migrate, which will copy that file and all the files it depends on to the chosen content folder of any other project
@pawemizura761
@pawemizura761 2 ай бұрын
@@AliElZoheiry Ohhhh it makes a lot of sense now... Thank you SO much!!
@petersad64
@petersad64 9 ай бұрын
Ali, I´m trying to make an enemy who sneak behind player, but I can´t figure out how to use EQS to make enemy walk to the back of the player.
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
If you're trying to have the enemy walk a certain path to go behind the player (obviously by not walking in front of the player), that you can't do with EQS, because EQS can only give you the location where you need to go (and you can get a location behind the player easily using the "dot test" in the EQS), but then to get the enemy to take a specific path to get there, then you need to play around with custom navigation, or dynamic nav mesh modifiers
@twitchtutkunu576
@twitchtutkunu576 3 ай бұрын
There are problems that I cannot solve. My ranged character does not go to the patrol area and patrols, and also continues to shoot at me even if I go behind the wall. There is an error somewhere but I couldn't find it.???
@AliElZoheiry
@AliElZoheiry 3 ай бұрын
Hey there. There is nothing implemented at this part that would cause the enemy to go back to passive state when you go out of view. That is implemented in part 9
@djtc2093
@djtc2093 2 ай бұрын
Hey man, great stuff as always. For the end part with find cover , my AI will initiate correctly - go find cover , then wait and come out and attack me and then when he runs back to find cover, he stops half way, and stands there for a couple seconds and then comes and attacks me, he does not go to find cover again after the initial one? Please help.
@AliElZoheiry
@AliElZoheiry 2 ай бұрын
Hey! Thanks for your comment. It sounds like your enemy thinks they are already behind cover. Meaning that the EQS line trace is hitting something. Try to figure out what it's hitting
@mittxns922
@mittxns922 Ай бұрын
Check that your enemy capsule collision AND the enemy sword collision are both set to ignore visibility! The trace is probably hitting one or both and the AI thinks it's out of sight.
@오후의지니
@오후의지니 10 ай бұрын
I Reeeeeeeaaaaaallly love this tutorial. LITERALLLY THE BEST
@AliElZoheiry
@AliElZoheiry 10 ай бұрын
Thank you so much for your kind words! I'm really glad you enjoyed the tutorial and found it helpful!
@osmanbaba1485
@osmanbaba1485 9 ай бұрын
Hi, Great stuff btw you rock. Quick Question do I need to create the Blend Space manually because when I download the stuff from Patreon and open the Blend Space it has no animations set
@RecklessEnvoy
@RecklessEnvoy 9 ай бұрын
Hey, you have to download the animations that go along with the bland space. I downloaded all the animations just to save time in the future and it fixed that problem for me
@osmanbaba1485
@osmanbaba1485 9 ай бұрын
I've downloaded the animations but still get same issue, is it possible this is because of the Engine versions differing? I'm currently using 5.3.2@@RecklessEnvoy
@AliElZoheiry
@AliElZoheiry 9 ай бұрын
Hey there! Everything should be working out of the box from Patreon, you don't need to recreate anything. Just make sure you are running the same engine version the project was made using (which is v5.2)
$1 vs $500,000 Plane Ticket!
12:20
MrBeast
Рет қаралды 122 МЛН
GIANT Gummy Worm #shorts
0:42
Mr DegrEE
Рет қаралды 152 МЛН
БАБУШКА ШАРИТ #shorts
0:16
Паша Осадчий
Рет қаралды 4,1 МЛН
24 Часа в БОУЛИНГЕ !
27:03
A4
Рет қаралды 7 МЛН
The Most Common Mistake Beginners Make in Unreal Engine | UE5
12:17
Ali Elzoheiry
Рет қаралды 130 М.
The Art of Game Optimization
10:18
Worlds In Motion
Рет қаралды 279 М.
How Not To Make An Environment
24:43
caponeart
Рет қаралды 27 М.
Урок 12 Unreal Engine 4 / 5 Искусственный интеллект - EQS Основы
25:10
Cyberstars - Как создать игру
Рет қаралды 14 М.
3D AI Model Generation is Getting GOOD - UE5.4 Unreal Engine
12:25
Unreal Engine 5 AI Tutorial - Understanding EQS
26:39
Artofficial Entertainment
Рет қаралды 10 М.
Unreal Engine AI with Behavior Trees | Unreal Engine
26:38
Unreal Engine
Рет қаралды 366 М.
Motion Matching - My Thoughts [UE5]
14:28
PrismaticaDev
Рет қаралды 19 М.
The 5 Stages of Learning Blender
3:14
Artin Azarnejad
Рет қаралды 288 М.
How to create Modular and Scalable UI systems in Unreal Engine
19:15
AmrMakesGames
Рет қаралды 100 М.
$1 vs $500,000 Plane Ticket!
12:20
MrBeast
Рет қаралды 122 МЛН