Unreal Engine 5 Main Menu 3D
2:05
Unreal Engine 5 Casting Spells #3
1:04
Unreal Engine 5 Casting Spells #2
1:42
Unreal Engine 5 Casting Spells #1
1:15
Пікірлер
@krayvin
@krayvin Сағат бұрын
your optimization videos are genuinely great! I'd love to actually see a full project that has its logic done "the wrong way" compared to a build done with this approach and just compare the performance between the two on low end hardware good stuff!
@chankulovski
@chankulovski 20 минут бұрын
@@krayvin Thank you very much! I should've keep my old Project years ago with the old and bad Blueprints, but I never thought I will actually teach these stuff. Many students have contacted me to tell me that they've changed their code and their game has changed A LOT, it's performing better and it's not crashing like before. Thanks once again! :) ✌️
@doriantek
@doriantek 2 күн бұрын
Hi everyone, So, in my current project, I replaced all the "event tick/delay" setups with "custom events," potentially using a timer. Before coming across your tutorial, I had read that using "ticks + delay" was a way to ease the CPU load. I had around 40 of them on my main blueprint and 30 on one of my vehicle blueprints. Before switching to your method, my performance stats were: World Tick Time: 7.64ms Tick Time: 7.23ms Blueprint Time: 4.54ms After changing everything to your method: World Tick Time: 4.22ms Tick Time: 3.78ms Blueprint Time: 3.46ms That’s a 40% improvement! I’ve got the screenshots if needed! Thanks :D
@chankulovski
@chankulovski 2 күн бұрын
That's a big improvement, especially if you have a complex logic! Thank you for sharing this important feedback. Even with the screenshots as a proof, people who don't want to optimize their code they will try to tell you otherwise, that you are wrong, that's not true etc :))) Keep optimizing your Blueprint and don't listen to the lazy people who are saying otherwise :)) cheers!
@doriantek
@doriantek 2 күн бұрын
@@chankulovski ;) yes, I'm happy with this. And my game stat, the logic all included is at : 11:30ms before with the ticks was at 15:80ms. So yes, big improvement for me, I debbuged some part in the same time ;) yes, I think it's complex for the moment, I have a full survival system, inventory, grab, quest, vehicle, guns, door logic, real time system and more, I coded everything, but as a beginner, I started 8 months ago, but, look well better now ;) I think I can improved again, but it's on the good way ;)
@chankulovski
@chankulovski 2 күн бұрын
@doriantek We can always do better ! :) I did the same thing when I've learned the Optimization part. I had to remove all Casting, Delay, Tick nodes, and when I shipped the game again, I could straight notice the difference. Keep up the good work! :)
@madmer
@madmer 3 күн бұрын
Потраченного времени жаль. Пятикратно переваренный кал
@billy-bg9rx
@billy-bg9rx 6 күн бұрын
I'm trying to get my character to cross over food to heal themselves and have the food disappear, but the food will still disappear even if the player's health is already at 100%. Any ideas how to stop this from happening?
@chankulovski
@chankulovski 6 күн бұрын
At the end of the code at the "Begin Overlap" event, right-click and type "Destroy Actor". This way, you will destroy the Actor when Overlap.
@doriantek
@doriantek 7 күн бұрын
Hi, thanks, very usefull and well explained ;)
@chankulovski
@chankulovski 7 күн бұрын
@@doriantek Thank you! :) This mechanics is one of my favourites, spawning Actors and enemies in an area :)
@YTAliasJoeCool
@YTAliasJoeCool 7 күн бұрын
what nonsense, just use a delay and a sequence if you want to continue something else while the timer is waiting. 2 nodes and done, no need for that whole timer setup and terminating
@chankulovski
@chankulovski 7 күн бұрын
@@YTAliasJoeCool Yeah, 2 nodes and you are done. Congratulations you are a Developer 😅😅😅
@YTAliasJoeCool
@YTAliasJoeCool 7 күн бұрын
@@chankulovski your unbased sarcasm got you a downvote and block. read up on the other comments, to learn that you are not a developer and your claims what is right or wrong are simply bullshit and arrogance.
@chankulovski
@chankulovski 7 күн бұрын
@@YTAliasJoeCool For a toxic and jealous people like you, sarcasm is the least I can do. Best regards from a non-developer who shipped over 10 full games ;)
@sephtv2759
@sephtv2759 8 күн бұрын
This tip is a bit heavy handed but generally okay advice. If you're doing a single player, there's nothing wrong with Delay, use it as you wish, especially helpful using it with a duration of 0 since it waits 1 frame, helps with spreading stuff over multiple frames, like in big for loops where you want to avoid hitching by doing too much in a single frame. But in multiplayer games you should avoid Delays yes, use them only for debug purposes to check if your code executes in a bad order but for actual implementations you should avoid it. If your multiplayer code requires delay to work then it's written poorly.
@chankulovski
@chankulovski 8 күн бұрын
Delay causes issues even in a Singleplayer game. The problem is not just in framerate for Multiplayer.
@gstreetgames2530
@gstreetgames2530 10 күн бұрын
Very good work! The course referenced on Udemy is third person though, is this included? It's obvious you know your stuff well from watching a few of your videos. I'm sure that even I could learn some things from you. I'll be getting both your courses soon as a sale pops up on Udemy. Any plans to make more courses? Keep up the great work!
@chankulovski
@chankulovski 10 күн бұрын
Hey there, thanks for your kind words! The First Person Shooter video is just for a showcase of gameplay mechanics in general, it's not included in the Courses I've made. And yes, I'm preparing the next Course for KZbin and Udemy so keep an eye on the Channel :) You don't have to wait for Udemy's promotions, I have already made Coupons at the lowest prices: Creating Main Menus 40% OFF www.udemy.com/course/unreal-engine-widget-blueprint/?couponCode=UE5COUPON-END-DEC13 Blueprints Optimization 49% OFF www.udemy.com/course/unreal-engine-game-optimization/?couponCode=UE5COUPON-END-DEC13 Coupons end on 13th December
@gstreetgames2530
@gstreetgames2530 10 күн бұрын
@@chankulovski Thanks, got both!
@chankulovski
@chankulovski 10 күн бұрын
@@gstreetgames2530 Thank you, you will learn a lot in these Courses! If you need any support or help, reach out to me anytime on any platform, I always reply when I see the messages. Have fun learning! Vlad.
@Shinbusan
@Shinbusan 11 күн бұрын
Good advice, although you repeat yourself to much. Thank you for help!
@chankulovski
@chankulovski 11 күн бұрын
Thanks! I have to repeat, that's one of the best ways to remember what's happening. I don't like Tutorials like : Click here, click there, do this, do that... :) but thanks for the suggestion, I appreciate it.
@tadeuszreczek2349
@tadeuszreczek2349 12 күн бұрын
Is there a video with optimized player health functionality somewhere? I can already see the videos from the series from #6 and #7, but I don't see the ending of the topic from video #5
@chankulovski
@chankulovski 12 күн бұрын
Yep, this is the video: kzbin.info/www/bejne/ep7Tg5WNrK92sLs&ab_channel=Chankulovski
@velha2999
@velha2999 13 күн бұрын
Hey i have question why not 5.5?
@chankulovski
@chankulovski 13 күн бұрын
@@velha2999 Hey. 5.5 still new version, tend to be buggy and occasionally crashing for no reason. Plus, with 5.0.3 the programming is applicable to UE4 and can easily switch to UE 5.5 or latest. It's kind of like perfect bridge between versions. Last but not least, not everyone can afford PC that can handle 5.5 :( , so I want to give back and accommodate to everyone in the community.
@velha2999
@velha2999 13 күн бұрын
​@@chankulovski alright thanks for explanation looking forward for next videos!
@ChrixB
@ChrixB 13 күн бұрын
I noticed that you use a macro instead of a function for the WASD controls. When is it better to use a macro versus a function? Perhaps this could be a topic for a new tutorial. 😉
@chankulovski
@chankulovski 13 күн бұрын
I will make a Tutorial for something like that for sure. Overall, Functions are always returning True, whereas Macro can use True or False output. Also, Macro can have multiple Execution pins for Input/Output, Function have only one Execution pin for Input and one for Output.
@halo1of1the1sun
@halo1of1the1sun 13 күн бұрын
Can you help figuring out this? How would I trigger a few actors at a distance? Lets say I cant use overlap or line trace. I just want to hit a switch and turn on a buch of lights (or open a bunch of doors) Is there a way to do this without "get all actors of class"? One idea that comes to mind is to put the interaction code in the lights. Maybe they can use "player character" to trigger an interface event that checks if the player interacted with the right switch? Or I was thinking that I could still use "GetAllActorsOfClass", but instead of a specific actor class I could use the base actor class. Then use tags. I dont know if that would make it better, but Im not sure how to sample a bunch of actors that are afar. Thank you!
@halo1of1the1sun
@halo1of1the1sun 13 күн бұрын
Another silly idea that came to mind is to create an array of vectors on the switch. I can manually sample the location of each actor with some offset or make a function to do it. Then I can line trace them all and get the actors that way. Thats so funny tho and it has limits. Like if the actors move away i wont be able to find them during gameplay again. Unless I program that offset in too
@chankulovski
@chankulovski 13 күн бұрын
I will try to make a Tutorial for this kind of thing. It can be done, but make sure you DON'T use "Get Actor Of Class", and especially DON'T use "Get All Actors Of Class". This is a performance killer, so NEVER use these nodes. I will do my best to make a Tutorial for this, it's not that complex.
@halo1of1the1sun
@halo1of1the1sun 13 күн бұрын
@@chankulovski Thank you a lot : )
@chankulovski
@chankulovski 13 күн бұрын
@halo1of1the1sun You are welcome! :)
@ChrixB
@ChrixB 14 күн бұрын
I always feel that using Delay is the wrong workflow. Thank you for highlighting this so clearly and providing a good example of how to handle a timing case like that!
@chankulovski
@chankulovski 14 күн бұрын
@@ChrixB I mean, it's logical right? If you can do all that functionality with just 1 node, there has to be a catch :) I'm super happy your understood and accepted the right way of programming! Thanks
@chankulovski
@chankulovski 13 күн бұрын
@a123b123c123d123c123 Ok
@ChrixB
@ChrixB 13 күн бұрын
​@@a123b123c123d123c123 The video showed that delays pause the flow of code, whereas timers make your code asynchronous, allowing multiple events to occur simultaneously. In my experience, Sleep and Delay in most languages are typically used for debugging.
@ChrixB
@ChrixB 13 күн бұрын
@a123b123c123d123c123 for me, when I have to introduce a delay or sleep in my code, I take that as a sign that something in my design is not right.
@ChrixB
@ChrixB 12 күн бұрын
@a123b123c123d123c123 idk, maybe you find a better way to handle delay, let us know and share it ?
@ChrixB
@ChrixB 14 күн бұрын
I dig your youtube channel trying to find the solution for this case, is it a external course ? if not, can you put the solution as a link in the description pls. Thanks!
@chankulovski
@chankulovski 14 күн бұрын
@@ChrixB That video is from external and full Course, yes. I have a different video explained how to do this properly: kzbin.info/www/bejne/ep7Tg5WNrK92sLssi=dkIyeAL1WnSbPps1 Let me know if this is what you're looking for.
@عليالقصير-ه1غ
@عليالقصير-ه1غ 15 күн бұрын
What do you mean by binding ? what is it that's wrong? I'm not advanced in BP so sorry if I asked a beginner question
@chankulovski
@chankulovski 15 күн бұрын
Don't say sorry when asking for help, especially if you are a beginner :) What's wrong with binding? When you use Binding (like I'm showing in the video), this Function is working like Event Tick, which means it will constantly ticking each frame - FOREVER. When Player wants to update their Health (when heal or damage your Player), you should use different approach. I have a full tutorial for that as well.
@عليالقصير-ه1غ
@عليالقصير-ه1غ 15 күн бұрын
@@chankulovski Thanks
@wolfpawz321
@wolfpawz321 16 күн бұрын
What about making an ammo counter? Is ok to bind this?
@chankulovski
@chankulovski 16 күн бұрын
No. Binding will tick each frame throughout the whole game. NEVER use Binding, nor Event Tick.
@wobowobocat
@wobowobocat 14 күн бұрын
@@chankulovski Naah, Tick is fine if you know how and where to use it. Binding is fine too, if your widget is not present persistently on the viewport.
@chankulovski
@chankulovski 14 күн бұрын
@@wobowobocat Sorry but this is too funny :))) reading this, I literally cannot argue anymore. Feel free to use these things, it's your game after all
@oAZTECKx1
@oAZTECKx1 11 күн бұрын
​​@@wobowobocatim surprised he didn't delete your comment. Somehow KZbin recommended me this garbage. This guy has literally no idea what he's talking about in any of his videos, and I feel sorry for the beginners watching.
@TheChapen
@TheChapen 18 күн бұрын
Hello, Do you have any course or tutorial about how to do those?
@chankulovski
@chankulovski 18 күн бұрын
@@TheChapen Hey there. I thought I put the link in the description, but I will update the video description later. Here's the Discount Coupon of the Course: www.udemy.com/course/unreal-engine-widget-blueprint/?couponCode=UE5COUPON-END-DEC13
@alexeinuville2555
@alexeinuville2555 21 күн бұрын
Thank god! This is the VERY FIRST TIME someone explains why casting is expensive, no other tutorial I've seen (even from official Epic Games instructors) explains this and how to bypass it!!! Instant subscribe
@chankulovski
@chankulovski 21 күн бұрын
@@alexeinuville2555 Thanks man! You would be surprised how many people are refusing to believe that Casting is bad for our games, just because they don't want to spend more time to optimize their code, they want it quick and easy with the Casting. Watch my Tutorial for Casting specifically, more in depth explanation there. Thanks for the sub!
@Fikarblackproject
@Fikarblackproject 21 күн бұрын
can we put different interact widget pop up each BP? like press E, F, G
@chankulovski
@chankulovski 21 күн бұрын
Absolutely. But it needs a bit more work for that. You can use different approach to make it easier. For example, instead of creating a Widget Component in the Blueprint, you can simply Create Widget when overlap with the Collision Box (so you can decide which Widget to show, press E,F,G etc). But the problem with this is, the Text from the Widget will not follow the Player's camera, so you need to do more programming to achieve this. It's just, there are so many ways to do this :)
@Fikarblackproject
@Fikarblackproject 21 күн бұрын
​@@chankulovski Yapp i have been done with that, now im looking for how to pop up widget when i see the object , and im stuck, i only can pop up 1 type of widget hehe
@chankulovski
@chankulovski 21 күн бұрын
@Fikarblackproject That's a good idea to make another Tutorial about this, to display any Widget. Will see my availability and hopefully to make one in the near future. Thanks for the idea and comments :)
@cybercatgamers1689
@cybercatgamers1689 21 күн бұрын
much needed course
@natbloch_official
@natbloch_official 24 күн бұрын
Umm can i use it for something that I'm sure that alway load in all level and i cant use BPI like my AI Controller? i have to casting it? I dont know much about event dispatcher if you do tutorial about this and show how it qork and example to avoid consuming Performance it will be great
@chankulovski
@chankulovski 23 күн бұрын
I will try to make a Tutorial in the future. It's the best way to avoid Casting, but if you build something small, you can try and use Casting, hopefully it won't break anything. I never use it personally.
@user-vv6uq3tu2l
@user-vv6uq3tu2l 24 күн бұрын
I am sorry but your video has wrong information as someone who has worked within the engine since udk3 and works mainly within the core of the engine, I feel I have to put a correct statement on this... The delay node and custom event with timer serve different purposes and each has its own strengths. If we dive into the technical details. The custom event with timer can be less performant than the delay node in certain scenarios. This is because the timer uses UE's FTimerManager which maintains a global list (or queue) of active timers... every frame the FTimerManager iterates through its timers to check if they have expired and if so calls the associated callback this system adds flexibility but introduces overhead especially when managing a large number of timers on the other hand the delay node is lightweight it does not rely on FTimerManager instead it uses a latent action within the blueprint system that resumes execution after the specified delay this makes it more efficient for simple localized delays both systems have valid use cases: use delay for straightforward one off pauses and custom event with timer when you need more control e.g looping, dynamic start/stop however it is incorrect to assume that delay nodes are inherently less performant than timers they are actually more efficient for basic delays due to their simpler implementation
@goldmarineanimal6940
@goldmarineanimal6940 26 күн бұрын
omg i love you man, absolutely saved my life today
@chankulovski
@chankulovski 26 күн бұрын
Happy to help! :) This was my favourite Tutorial to make though :) Have fun and expect more great Tutorials!
@warsarebeautiful3504
@warsarebeautiful3504 26 күн бұрын
Trash clickbait …delay is good do not misguide
@chankulovski
@chankulovski 26 күн бұрын
You are just one of those toxic trolls that knows no better than this... use your Delays as much as you want :) make sure to have 100 of them :D
@RobertBojor
@RobertBojor 29 күн бұрын
How about using HasInterface? Does it cost more than HasTag?
@chankulovski
@chankulovski 29 күн бұрын
I believe it cost more, because you have to create the Blueprint Interface. This is just a Text tag.
@bilalrasheed9725
@bilalrasheed9725 Ай бұрын
Thanks for the video.....
@chankulovski
@chankulovski Ай бұрын
@@bilalrasheed9725 You are welcome! I hope this Tutorial helped you.
@SellusionStar
@SellusionStar Ай бұрын
Just to add when to use casting: Casting is for working with classes and inheritance. So if a child class has a function you want to call, you have to cast to that child class, before being able to call that function.
@chankulovski
@chankulovski Ай бұрын
Nope. Casting is for lazy people who are trying to find a reason to keep using it. Casting ruins the game performance, it's as simple as that.
@SellusionStar
@SellusionStar Ай бұрын
@chankulovski but how would you do that task then?
@chankulovski
@chankulovski Ай бұрын
@@SellusionStar Blueprint Interface, Event Dispatchers for example. With Casting is quick and easy, you've never thought WHY is that easy this type of Blueprint code? It's easy and quick, for the price of your game's performance. And that's ONE Casting, imagine having hundreds of them ... no no no...
@SellusionStar
@SellusionStar Ай бұрын
@@chankulovski interesting idea. Also I like your tagging approach. But at the same time using interfaces or dispatchers for managing inheriting classes and using their specific functions feels really cumbersome. It's interesting though. By any chance, do you have a video about the measured performance impact of casting vs. interface/dispatchers?
@chankulovski
@chankulovski Ай бұрын
@SellusionStar Thank you :) The thing is, to use Interface and Dispatchers is a bit more work, slightly more advanced, but the game will run better and chances to crash during gameplay are minimum, whereas when using Casting, chances are high your game to crash. People ignore this on purpose, because using Interface and Duspatchers requires more work (hence optimization). Watch this video and you will see how Casting is increasing the load of the game. As a side note, when I was shipping games with Casting, 4/10 times they crashed. Here's the Casting video: kzbin.info/www/bejne/n4fLdn9jqLyUeZosi=WaXsbZ4v1XBvSJqx
@swrcPATCH
@swrcPATCH Ай бұрын
Your example is absolutely terrible. It is only something beginners would do, so even if you are right, you will NOT convince anyone with this example. But what I'd rather like to know is, how about the Do-Once-Node ? Should that be avoided too? Or is it just fine to be used?
@chankulovski
@chankulovski Ай бұрын
@@swrcPATCH That's your opinion, there are others who wants to learn the proper way, and they will. However, Do Once is a great node, it's fine and safe to be used.
@swrcPATCH
@swrcPATCH Ай бұрын
@@chankulovski I am not saying you are wrong. I just said the example so people can understand why the delay-node is bad, is a terrible example and not proving your point. The "proper" way would have a more understandable example in my opinion. All your example does is showing "why to use timers instead" but not avoiding "delay", you know what I am trying to say? Your video could be "use timers" but this example doesn't show why to avoid delay, it just shows why to use timers, do you get what I am trying to explain? Oh and good to know that do once is fine. I have not checked its implementation so I just wondered if it has some issues too.
@Jueceovo
@Jueceovo Ай бұрын
Thanks for the tutorial, it helped me so much!
@chankulovski
@chankulovski Ай бұрын
@@Jueceovo Hey thanks a lot! I'm really happy the Tutorial helped you 😊
@ankitsharma-ud7tq
@ankitsharma-ud7tq Ай бұрын
U got a subscriber Sir, nice viedos, keep it up
@chankulovski
@chankulovski Ай бұрын
Thank you very much, I appreciate it! You will learn a lot from these Tutorials :)
@d.alvareznieto
@d.alvareznieto Ай бұрын
Great content, just bought it. The UI part is not covered in depth by other courses. This course will make a big difference on my widgets
@chankulovski
@chankulovski Ай бұрын
Thanks Dan! I've also covered why we should never use Canvas Panel and what we should use instead. Hope you enjoy the Course, let me know if you need anything (the DMs are not coming through on Discord, I've tried to reply to your message).
@jasongutierrez9882
@jasongutierrez9882 Ай бұрын
After having finished the first one a couple days ago, I literally had it in my in basket and bought it before I even looked at it.
@chankulovski
@chankulovski Ай бұрын
Thank you very much!
@eligijuspranskunas3509
@eligijuspranskunas3509 Ай бұрын
yea thats really tutorial that no one done before, defo will buy it.
@chankulovski
@chankulovski Ай бұрын
I've researched what's missing the most from this topic, and I've made the Course for Beginners and Advanced users, it's definitely worth having it! Let me know if you need anything regarding this, I will be more than happy to assist you! Thanks again. Vlad
@fabioalmeida6660
@fabioalmeida6660 Ай бұрын
Excelente vídeo, from Brasil.
@chankulovski
@chankulovski Ай бұрын
Obrigado Brasil! ❤
@TheSuperGameHD
@TheSuperGameHD Ай бұрын
My brother i think i understand everything right ? the video is super great, now if i understand correct in deeper if i want to get a variable from the current bp to another bp i just implement the interface in the current bp and make the event like set health with has a output from the interface and when called from other bp i just put the number trough input in the message and that will call that custom event for setting hp with the hp i wanted in the message input so no CASTING brother is that right ?
@chankulovski
@chankulovski Ай бұрын
That's EXACTLY THAT ! You can have Input/Output and it will serve you as a normal Function, but with this method you can use that Function anywhere you want. But be careful, if you have the Character as an Input/Output, this will be the same as Casting, because that Character will load into the memory, so don't add Character in as an Input/Output. Also try to avoid Actor as an Input/Output.
@TheSuperGameHD
@TheSuperGameHD Ай бұрын
@@chankulovski bro apreciate your time, i was watching your udemy and just discover that get all actors of class is bad i think im losed again i mean what if you placed like 100 turrets on the map? you need to get all of them right i mean what else can be done ? it is possible that the answer is if want to set something for all just make the main actor turrret a interface that has an event for setting something and then when called this event will be called also on all actor turrets placed ? and also if i want to modify only 1 of them i can use even dispatcher but the get all actors of class i dont understand if my answer its not the answer itself
@chankulovski
@chankulovski Ай бұрын
@@TheSuperGameHD Hey man, you are welcome! Get All Actors Of Class is used if you want to manipulate multiple Actors of the same type. This is extremely bad for your game, because this node will search through ALL ACTORS IN YOUR GAME, and that can be very very expensive for your game performance. You can use Interface and Event Dispatchers yes, but definitely DON'T use Get All Actors Of Class.
@rishikeshjaiswal3979
@rishikeshjaiswal3979 Ай бұрын
Great Video Vlatko! I find Interfaces unusually difficult to understand. It is just me though I guess.
@chankulovski
@chankulovski Ай бұрын
@@rishikeshjaiswal3979 Hey thanks! It's not you, definitely! It took me long time to master them as well, luckily I had amazing teachers in Sweden (Futuregames Gamedev school), and they've explained to me properly. I will make more in depth series only for Interfaces, because they are perfect for Optimization. I can assure you, with creating simple things and learning them slowly, you will gradually increase the complexity and you will get better and better.
@rishikeshjaiswal3979
@rishikeshjaiswal3979 Ай бұрын
@@chankulovski Yes Vlatko! Having access to good teaching is crucial. Even I am a Teaching Assistant for game development course at Purdue University.
@DailyPaily
@DailyPaily Ай бұрын
Interesting, where is the lesson 2 of this ?
@chankulovski
@chankulovski Ай бұрын
@@DailyPaily I'm publishing new Tutorials often, and I will speed up the process even more, so expect a lot of valuable and rare Tutorials soon! :)
@DailyPaily
@DailyPaily Ай бұрын
My 2 cents: Join Branch with 'clear and Invalidate' and skip one step. Its necessary 'Clear' after one single loop ?
@chankulovski
@chankulovski Ай бұрын
@@DailyPaily My apologies, but I didn't understand this?
@DailyPaily
@DailyPaily Ай бұрын
@@chankulovski 12:53 Branch ---> Clear and Invalidate, you will save the 'is valid' node.
@chankulovski
@chankulovski Ай бұрын
@@DailyPaily The Timer was there just to demonstrate how "IsValid" node works. There's another approach for this, but I have to make a whole new Tutorial because it's not that simple :) Thanks for your input, that was a nice catch!
@DailyPaily
@DailyPaily Ай бұрын
@@chankulovski Cool !
@digitalwf852
@digitalwf852 Ай бұрын
Can I use this logic to create harvestable tree?
@chankulovski
@chankulovski Ай бұрын
Yes, definitely !
@pixelatedsmoke
@pixelatedsmoke Ай бұрын
Excellent tutorial!
@chankulovski
@chankulovski Ай бұрын
Thank you!
@tuwumuch
@tuwumuch Ай бұрын
I heard if the casting is directed to something that will always loaded in the game such as your character, its fine to just keep casting that particular thing. But if its temporary things like normal enemies, once you cast it will still stay in the system and eat up the memory.
@chankulovski
@chankulovski Ай бұрын
@@tuwumuch I explain in great detail why Casting is bad and you should never use it, check that Tutorial on my Channel. Casting is made for prototyping and quick test an idea. Only lazy people are using Casting because they don't want to optimize their code and spend few more extra minutes to do so.
@tuwumuch
@tuwumuch Ай бұрын
@@chankulovski thanks for the reply but theoretically, if something will always be loaded in isnt it just simple to just cast? Currently I always cast if its directed towards the character or the gamestate/etc, but interface or tags for everything else.
@chankulovski
@chankulovski Ай бұрын
@tuwumuch Those theories are invented by people who wants to use Casting, due to lazyness. To prove this, simply hover over the Casting node and read what it says.
@tuwumuch
@tuwumuch Ай бұрын
@@chankulovski yes i saw your video it'll always be loaded. Character is always loaded though no?
@chankulovski
@chankulovski Ай бұрын
@tuwumuch Yes
@digitalwf852
@digitalwf852 Ай бұрын
what is best optimized way to spawn NPC AI that roam around?
@chankulovski
@chankulovski Ай бұрын
What do you mean exactly? You can spawn either with Timers from the Event Begin Play node (not with TICK!), or you can spawn them when you overlap a Trigger Box. If you spawn them with Timers, make sure to Clear And Invalidate Timer when you don't need to spawn them anymore.
@PalThing
@PalThing Ай бұрын
There's nothing wrong with delays, they are simply callbacks to execute async code. Timers do not accept parameters, which is a big problem with UE imho. Timers can introduce race conditions and create really hard to find bugs. Delays are great for things in 50-250ms region to delay gui updates.
@chankulovski
@chankulovski Ай бұрын
Ok if you believe that
@sutadoralive
@sutadoralive Ай бұрын
I like your videos. Thank you very much.
@chankulovski
@chankulovski Ай бұрын
@@sutadoralive I'm really glad to read this, THANK YOU!
@digitalwf852
@digitalwf852 Ай бұрын
Can you make full tutorial how to make optimized 3rd person shooter game? I want to Learn what is the most optimized way especially with the gun,shooting,and bullet system. I will buy the course if it’s on udemy
@chankulovski
@chankulovski Ай бұрын
Third Person is my favourite to work on :) So definitely I will make Tutorials for this in the future. Probably for free on KZbin. Thanks for your interest, keep an eye on the Channel, more Tutorials are coming soon.
@digitalwf852
@digitalwf852 Ай бұрын
@@chankulovski Nice, looking forward to it! Your spellcasting and magic system look amazing as well,if you have the time pls make tutorial for them too
@chankulovski
@chankulovski Ай бұрын
@digitalwf852 Thank you :) ! That's the plan, to make Tutorial series for these Spellcasting in the near future!
@newwonderer
@newwonderer Ай бұрын
it is usefull for destroying actor but actors contain code you cant perform without casting
@chankulovski
@chankulovski Ай бұрын
@@newwonderer You can perform without Casting, there is a way around it.
@MikeReed-r8r
@MikeReed-r8r Ай бұрын
Actor can perform with interfaces you just have set up you want interface to do you can set and get run event add remove pretty much anything with interface
@chankulovski
@chankulovski Ай бұрын
@@MikeReed-r8r That's right!
@cmulder007
@cmulder007 Ай бұрын
Great video - thanks! - However lets say we are interacting with an actor that implements an interface - I have to cast it to a type of that interface to be able to call the methods defined on that interface! - how would I do this without casting? - seems the implementation of casts in blueprints is badly implemented!
@chankulovski
@chankulovski Ай бұрын
Hey there, thanks for your comment! Try watching this Tutorial, hopefully it's what you are looking for: kzbin.info/www/bejne/ep7Tg5WNrK92sLs&ab_channel=Chankulovski If not, try to check my other Tutorials. Casting node is bad for your final game, and it's made for quick prototype and testing, there is almost always a way around it! :)
@cmulder007
@cmulder007 Ай бұрын
@@chankulovski Awesome I will do that... thanks a million for your quick reply!
@chankulovski
@chankulovski Ай бұрын
@@cmulder007 Always! :) Let me know if this was what you were looking for, if not, I will try to explain in a comment, or make a Tutorial for it. Thanks again
@cmulder007
@cmulder007 Ай бұрын
That is also a great video... however in that example you are able to avoid casting because you know the object that you are going to be calling the function on is the player character (you check this with ==) and then you call GetPlayerCharacter ...... however in a more generic system where you want to check against ANY object that implements the interface, like for instance I_CanBeClicked.... and if the object does implement it you want to then call the ClickMe function defined on that interface, you still need a reference to the object as that interface.... hope that makes sense... I know there is a node to check if an object implements an interface but that just returns a boolean, I cannot find a way of calling the function on an abstracted object reference without a cast... however I guess a cast to will only increase the size of the blueprint by the size of the interface though so maybe not so much of an issue?
@chankulovski
@chankulovski Ай бұрын
@@cmulder007 The node is called "Does Implement Interface" with a Boolean Return, but you have a Target to assign in that node, so you can still do things with it. You can always Call an Interface and avoid the Casting :)
@MichaelBullo
@MichaelBullo Ай бұрын
Fantastic video. Thank you.
@chankulovski
@chankulovski Ай бұрын
@@MichaelBullo Thank you very much, I really appreciate it.
@MichaelBullo
@MichaelBullo Ай бұрын
@@chankulovski Best of luck with the channel
@chankulovski
@chankulovski Ай бұрын
@@MichaelBullo Thank you! Doing my best to push as much knowledge as possible, especially for beginners.
@MichaelBullo
@MichaelBullo Ай бұрын
@@chankulovski Excellent. You are getting close to 1000 subscribers.
@contrafactstudio
@contrafactstudio Ай бұрын
Блин, извини ты угораешь что-ли? Прежде чем учить возможно нужно мать-часть поучить. Извини не удержался. Не вводи людей в заблуждение!
@chankulovski
@chankulovski Ай бұрын
If you don't like it, DON'T WATCH IT! It's that simple. There are people who want to learn proper programming, so, relax...