This is exactly what I was looking for! I spent days finding the logic to do this kind of thing, with several projectiles, some with AOE on impact etc and I created something more or less similar but much less logical and less well designed! Thank you, thank you and thank you! (This is the 2nd time your videos point exactly to what I'm looking for haha)
Hi Ali, Another great video! I learned a lot. :) One little thing that I found a bit confusing was the part where you showed us how the enemy shoots homing projectiles at intervals, similar to what the Wall does. I started following along with the DMG system tutorial, then moved on to Projectiles and then AOE damage. The last thing that we did to the enemy was to set a timed event and trigger a custom event called "Attack". Next thing we know, you're showing us a custom event on the enemy that is again called "Attack," but in this case, it's a standalone custom event. You called "IsDead" from BP player, which was called "Dead" before (or at least I'm guessing that). But this "IsDead" event call has an output variable called "dead" and asks for a target. It's clear that the target would be the player, so I simply promoted the variable to get the target (to be fair I'm confused). But I didn't get how you defined the existing variable "Dead," which was then used for the branch condition. Also, the double "is dead" and "Dead" boolean condition check was confusing. I don't really get why we need to check "IsDead" and "Dead" since the DMG system is already telling us if the target is dead. Since we won't use this attack later on anyway, it's not that big of a deal, but it was the first time you skipped a part and this felt a bit frustrating, especially because I couldn't figure out what you were doing to make it work without an error. What I did was skip having the "Dead" output on "IsDead," and on the branch condition check, I only checked for the "BPC Damage System" is not dead. With the timer connected to the sequence from "on begin play," I then simply triggered the "attack" with the trigger event of the "set Timer By Event" node. This is working, but I'm getting the following error related to the Blueprint Runtime Error: "Accessed None trying to read property Target." Node: Is Dead Graph: EventGraph Function: Execute Ubergraph BP Enemy Blueprint: BP_Enemy As mentioned, the IsDead event is the "Dead" event that we built back in the DamageSystem tutorial. I simply renamed it, but I start to think that you must have done something additional since "IsDead" has this "dead" output that I don't understand. If you have time to clarify that or lead me to the solution, I would highly appreciate it since I really want to understand what I did wrong. :) Thanks for your time and effort! Cheers, Marko
Hey Marko, Thank you for your feedback on the video. I appreciate your patience and diligence in following along with the tutorial. It seems like there was some confusion with the variable naming. I'll review that section of the video and update the information to make it clearer for everyone. I'll also add some additional clarification to the description for that part of the tutorial. I'm glad to hear that you found a way to make it work for now. Thank you for your support and for providing feedback to improve the content.
Man the content you have put up is fantastic! Really enjoying your videos and you are sure to gain a lot of subs if you keep this up! Is there any chance you might consider making some tutorials for a roguelike system? There's a real lack of UE5 tutorials out there for roguelikes, a lot of content is for RPG or survival games instead. Keep up the good work! =)
Thank you Squidz! I really appreciate it. I personally don't play a lot of rouge likes so it wouldn't be my top priority, but of course if there's a lot of demand, I'll do what the people want ;)
Thanks for sharing the knowledge. Also your style of teaching is helping me a lot to learn more unreal. I actually gave up learning unreal a couple of times since I hitting many compilation erros trying to use cpp classes. But now I'm focusing in learning blueprints first and getting good at them and just later on, when my knowledge and understanding of unreal is somewhat more advanced and complete i will risk myself in adventuring using more cpp stuff.
Thank you for your feedback! I'm glad to hear that my teaching style and content are helping you on your Unreal Engine learning journey. Focusing on mastering blueprints first before delving into C++ is a great approach, and I'm confident that with time and practice, you'll feel more comfortable using both. Keep up the great work! 🙏
Yo, this was amazingly useful. I am working on my game and this is an element that I wanted to implement but I knew it was going to kick my ass. Your Boss AI tut brought me here and Im glad it did. You are seriously helpful with these tuts. Keep em coming and keep up the good work. Thank you.
I think the next video for this series could be how to make possible to spawn spells at location of our mouse after seeing the preview. The whole system is awesome itself for now. I learned a lot.
Hey, thanks for the suggestion! I'm really glad to hear that you found the series helpful so far. I'll definitely consider making a video about spawning spells at the location of the mouse as you suggested. Stay tuned for more content like that in the future! 🙏
this is what interfaces are for, your version requires all logic for things such as immunities, modifiers etc to be applied in the spawned system, making it more expensive to create. Coupled with the fact that you're destroying AOE actors rather than pooling them makes this a heavier system than it needs to be. Keep up the learning.
Thank you for the advice. I agree that object pooling would be better for performance, but definitely outside the scope of this tutorial, maybe I'll include it as an addition to my Projectiles tutorial where object pooling is more important. Regarding your first point about "This is what interfaces are for" can you clarify what you mean because I don't understand what you're trying to say
Hi! Great video as always, im learning alot from you. just startet learning unreal. and as someone else also mentioned at 51 minutes in to the video you mention its just a function for checking if the player is dead to get the enemy to stop attacking after the player dies. And i must be stupid cause i have gone back and forth and cant for the life of me figure out how or where you made that function or how you implemented it in the enemy event graph :/ Please help someone. ALSO!.. I Hope you never stop making these tutorials man!
Hey there! Thanks for your kind words and enthusiasm. To address your question, the function for checking if the player is dead came from the damage system tutorial, because I migrated all the AOE attacks into the damage system at the end of the video, I hope that answers your question. Keep learning and happy coding! 😊
There must be a change in UE5 newer versions because you can't have custom events with the same name, so errors occur if you name the event different from the binding event "System Finshed" being the duplicated event name.
@@AliElZoheiryI think it was when you made a custom event 14:53 , It's OK I assumed you copied it but obviously not, thanks for confirming. When you say you copy things you don't actually copy them you cut and paste them, I noticed you do this a few times in other tutorials instead of saying cut and paste.
Um ein Bild von Paint, in Unreal Engine zu transferieren muss erst der Hintergrund mit einem Programm entfernt werden (auch vom internet möglich) .Dann importiert man dies in Blender per Add-on "import-export:import Image as Planes". Danach kann man auf der Oberfläche shift a drücken und unter Image "Image as planes" auswählen. Die Kamera sollte auf das Bild ausgerichtet werden, sodass genügend(!!!) Backround vorhanden ist. Unter der Kamera Option Render aktiviert man dann Transparent. Danach muss man es nur noch Rendern Bearbeite nun das abgespeicherte Bild, sodass das Bild ein square ist, da es sonst langezogen erscheint. Habe 4h gebraucht bis ich das hinbekommen habe, da es unter create oder erstellen eines Decal nichts gab und die meisten(alle) Decals nicht mit Rotation sind. Ich hoffe es hilft ein wenig den Leuten die das noch nicht wussten. ;) --------- Nachtrag dazu noch: Blender kann weggelassen und es muss kein überschüssiger Hintergrund erstellt werden. Hauptsache der Hintergrund wird entfernt. und in Unreal im Texturen Fenster im Detail "Texture" Advanced aufklappen und Wrap in "X-axis Tiling Mehtod" und "y-axis Tiling Mehtod" auswählen, da sonst "BP_AOE_LightningStrike" "Decal Size" nicht genohmen wird.
Thank you for sharing your process! I'm sure this detailed explanation will be helpful to those looking to transfer an image from Paint to Unreal Engine. Appreciate the insight!
Forgive me if I missed it, but does this account for scaling the damage based on proximity to the character? More damage for the center of an explosion than being close by, for example. Your tutorials are *perfect,* by the way. I’ve seen very many, and none so excellent as yours!
Hey Great Sol! Thank you so much for the support 🙏 The system itself is scalable and can accommodate adjustable damage amounts, but in the tutorial I only showed how to do a static damage amount. You can do that though by getting the distance from the actor location to the AOE center and multiply that ratio by the damage amount
Amazing work. Its a bit more complicated from what I have seen elsewhere but that is because Ali is thinking 2 to 3 steps ahead which I find to be the most common mistake that amateur dev's (such as myself) make ! So thank you for making this incredible tutorial! How would you make the fire catch onto the actor for a few seconds thus prolonging the AoE damage ? :)
Hey there! Thank you so much for your kind words! I totally appreciate your comment. To extend the AoE fire damage, you could have the fire create a temporary area effect where the actor is located, applying the damage continuously for the specified duration. Good luck with your project, and feel free to reach out for more help!
Hi! Great stuff as usual, although i have been having trouble with the Over Time ones, i tried for days to make it work with no luck. As i understood, the part that gets called repeatedly is the spawn AOE (the base one), which only spawns the debug sphere and "grabs" who is standing there. BUT, since that is the base one, neither the damage nor the Heals should not go there. I end up having this: AOE_Base called repeatedly (print occurs according to values set in the AOE_OverTime) - > Child : AOE_OverTime who sets up the repeated pattern with the spawn event node and selects "SpawnAOE" Event on AOE_Base - > Child Child : AOE_HealOverTime: who does the actual heals but only gets called once, when i press whatever button i assigned to it on my Player- Summary: I heal once at button pressed, but AOE_Base gets effectively called repeatedly and then dies correctly. Im not sure what i am doing wrong :/ If anyone happens to have time to assist, i would greatly appreciate it! Best
Hey there! Thank you for your comment and for reaching out for assistance. It sounds like you've put in a lot of effort, but unfortunately I don't really understand what the issue is from just the description, it's hard to tell without actually seeing your code. But I'm confident that if you keep debugging using different techniques (breakpoints, print statements, etc..) you'll find the issue
@@AliElZoheiryThanks for the reply, luckily I was able to solve it. Apparently I had forgotten to bind to the event called in the aoe_base. (Event dispatchers and the correct time/place to bind them still eludes me quite often). Thanks again for taking the time to read! Best from Argentina!
This is really cool. Thank you. Do you have tutorials on how to do chain lightning style Aoe attacks? Like the ones in Diablo or League of legends's statikk shiv or voliber's passive?
Hey there, thank you for the comment. I currently don't have tutorials on chain lightning style Aoe attacks, but it's a great suggestion and I'll definitely consider making a tutorial on that in the future. Thanks for watching!
Hi Ali your videos are very good, thank you very much for being there. I was wondering if you could explain an auto aiming system that works for more than one enemy instead of just one target.
"Thank you for your kind words! I'm glad you're finding the videos helpful. That's a great suggestion, and I'll definitely consider creating a tutorial for an auto-aiming system that targets multiple enemies. Stay tuned for future content! 😊"
Thx for your tutorials, rly helpin me out! subscribed ofc :) atm im tryin to get this "knockback" workin for a melee attack (without debugsphere ofc) and to attatch it to the projectiles of your projectiles tutorial... doesnt work. xD how can i tell that god damn machine that i want the sphere to be triggered if i hit sth and after my projectile gets destroyed?! he doesnt accept anything else than myself as a target. I'm a 3d-guys with 0 experience in c++ to be honest.
You're very welcome man 🙏 I'm not really sure what you mean 😅 if you are trying to get a knock back effect after the projectile hits someone, then instead of the part where we play the hit animation just do an impulse or a launch character function in the direction you want them to get knocked in
You can look into the Force Feedback class to do that. Here's a link to the documentation docs.unrealengine.com/5.0/en-US/force-feedback-in-unreal-engine/
Hey there, glad to hear you found the video helpful! For the decal, you can indeed just uncheck receives decal on the mesh, or make sure that the decal doesn't spawn higher than the surface of the ground
ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-zmrLwZ3ViT0.html 4min into that video and I had a working decal using random textures from the free assets(FX Variety pack T_KY_mask circle and T_KY_smoke1) not quite like what Ali is using but workable for getting through the tut atleast :) Thanks Ali for another great video!!! :D
Nice work man, in 20:10, I try to connect the return value to the target of the bind event on AOE Overlap actor but it doesn't allow me. It says they are not compatible. What could be the issue of that?
This content is great. Could you explain why you start a new project with new functionality? Is it so you don't clutter your main project with useless stuff and only migrate the content you create + its dependencies?
Glad to hear you were able to solve the issue with the BP_AOE_Fire! It can be tricky sometimes, but I'm glad it worked out for you in the end. Keep up the great work!
hi, at 43.21 i did same Heal FX working perfectly, the only problem is its spawn fire fx too which is the paretnt class of this heal BP. how can i fix it ?
A heal BP shouldn't be a child of the fire BP since they are not the same. Instead they should both be separate children inhering from a single parent like I did in this tutorial
great video as usual xD, Ahem so i got a new request to u to make a small video on how to make free flow combat similar to that of batman Arkham series there isnt much on yt for unreal, xD iil appreciate if u could help me out if possible
Thank you again Sara. That sounds like a great idea indeed, I am currently in the process of making an enemy AI tutorial series, for which I just released part 1 ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE--t3PbGRazKg.html In the future I can build on this and create multiple combat systems, like the free flow combat system you are mentioning, but it's not currently on my radar.
Thank you for your great video. I have a question, you used event dispatchers for overlap actors, but I'm not sure whether I should use the blueprint interface or event dispatchers when implementing communication between blueprints like this. Can you tell me about the pros and cons or differences between each?
Hey Lee, so event dispatchers and interfaces serve very different purposes, interfaces are just a contract between different blueprints/classes in your project, this contract says that if you implement a certain interface, then you should implement the functions inside it. Having this contract allows actors to call functions from other actors without knowing their class, but just knowing that they implement a certain interface is enough. Now event dispatchers are used to communicate that a certain event happened to some actor in the world. This design pattern is sometimes referred to as a pub/sub or publisher subscriber pattern. Where one actor (the publisher) dispatches an event when something happens to them. Then another actor (the subscriber) listens/binds to this event to be able to react on it. So this method is a good way to communicate between classes that something has occurred. This is especially useful when you have multiple subscribers on a single publisher.
You can always use the Get distance node to check the distance between 2 actors and if the distance is greater than a specific value then don't allow casting
Lovely tutorial, one question tho. How do you make the lightning strike targetable? in other words, instead of auto selecting an actor? How of you make it move to an area to where you want to lightning strike to actually appear? And trigger when you the lightning strike when you found the area you want, instead of making it auto appear?
Thank you 🙏 Then you need to set up an aiming state when you press a certain button, and in that State, continuously do traces towards the direction you are aiming (which is usually the forward vector of the camera) and then once the trace hits the ground, that's your spawn locations for the AOE, you can choose to show an indicator of where it will spawn, then another key press to actually spawn it
How would you go about combining the Projectiles from the Projectiles Tutorial with these AOEs and get them to fire off both damage outputs at the same time when the projectile hits? Also, can the Apply Radial Damage with Falloff be implemented into these AOEs and how would we go about doing this?
Not sure what you mean by having them both fire at the same time, but if you want to spawn a projectile and an AOE at the same time, then that will work fine as they are 2 separate actors and can be spawned in the world independent from each other. Now regarding Apply Radial damage with Falloff. I don't recommend using that to calculate the damage of the AOE, because it only hits components that block the visibility channel, and I don't recommend having collision preset affecting damage output, they should be 2 separate things, but calculating variable damage based on how far the actor is from the center of the AOE is quite simple. Just have a max and min damage, and get the distance from the center of the AOE to the target, and normalize that to a value between 0 and 1 (where 1 is exactly at the center, and 0 is exactly at the outer edge) then lerp between the max and min damage, with the normalized distance being the alpha
Great video, but man it's frustrating to follow along when you get to a section where you have clearly done a lot of work off camera. If you follow your videos in order once you get to 52:00 it's a whole bunch of enemy NPC projectile code that was not done on camera so there's no way to follow along. Love the content but highly recommend not doing things off camera because your audience can't follow the tutorial when you do
Hey, I'm glad to hear you're enjoying the content and finding it helpful. I understand the confusion, but nothing was done off camera really, I just migrated the entire projectile project into my other damage system project which I have a full tutorial on as well, so you can follow along with everything if you want to implement the damage system part as well (That's where the enemy blueprint came from) Check it out here ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-o3uFXnNxwKE.html
@@AliElZoheiry actually I was able to find a cool decal in the quixel bridge that has a lightning bolt shape and yellow color. But I'm having trouble to making it rotate like the one you are using
No matter what I do, I cant seem to get a particle emmiter to be spawned in the Debug Sphere (during the AOE Fire section). In the AOE Fire blueprint, nothing seems to be called after Trigger (Print string gives me nothing). Any idea why this might not work correctly? Ive watched the same section repeatedly and its seemingly stuck. (Everything else works great)
I show how to add an animation for the heal AOE in this tutorial ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-QkI8EKyUs9Q.html at minute 22:22 The best way to do this is using animation montages
For multiplayer, this has to be replicated on the server, which was outside the scope of this tutorial. But it can be easily extended to be replicated, but in its current state, it's not multiplayer ready
Grazie mille! Sono contento che tu abbia apprezzato il contenuto. I learned mainly from RU-vid videos, Udemy courses, and a lot of trial and error. Just trying to do things myself was the best way to remember all these steps.
grazie , è quello che sto facendo anche io , ma tu mi piaci perchè fai le cose in modo comprensibile e semplice senza tante cose complicate ,ci vorrà del tempo ma spero di riuscire come hai fatto tu @@AliElZoheiry
I felt the same way you do now when I started, I was overwhelmed by how much I have to learn, and I would be amazed by those RU-vidrs who knew so much! but I kept learning, and now a couple of years later, I'm one of those RU-vidrs :D So I am confident that you will make it as well. Just keep learning and stay motivated@@gamedevunity3dliviopanizzi170
@@AliElZoheiry Oh of course, no homo, you're a handsome person XD, so that's why i suggested the top left because we rarely use that side unless it's in the view port. Depends on what you're coding i suppose xD
Hey! I appreciate your request. I spend a lot of time creating these videos, and these assets, and I need to make money some how, even if it's just a small amount of money, it still helps. So if I give it for free, I can't keep making these videos