Why Dependencies are Bad and How To Avoid Them In Unreal Engine | UE5

2024 ж. 28 Сәу.
16 868 Рет қаралды

The Mediator Pattern:
Software Design Patterns are like a guide on how to write good code, whether you're using Blueprints or C++, knowing good software practices is a MUST!
This video goes over the mediator pattern to build a "Combat manager" to coordinate actions between multiple enemies and the player.
We will also be combining the mediator pattern with the observer pattern from the previous video to create an "Event Manager"
Download the project files and support my channel on Patreon
/ alizoh
Join my Discord server to chat and mingle with the community
/ discord
Additional Resources:
refactoring.guru/design-patte...
www.gdquest.com/tutorial/godo...
Chapters:
00:00 The Problem
00:33 What We'll Be Learning
01:21 What Mistake To Avoid?
02:20 What Is The Mediator Pattern?
03:20 Creating The Combat Manager Class
04:39 How To Communicate With The Mediator?
12:44 Testing The Combat Manager
14:37 The Problem With The Observer Pattern
15:31 The Event Manager
21:51 How To Use An EventManager Interface
24:16 Summary
25:19 Why Use Software Design Patterns?
26:09 What's Next?
About me:
I've been learning game development for a few years now, I have a background in software engineering, and I also have a background in education, so being able to combine my love of gaming, software engineering and education is the best way to spend my time.
I am currently working on a few unreal engine games as a hobby, but I am also trying to build a community, thus I am creating KZhead tutorials to find others who are interested in game development and design.
#unrealengine5 #MediatorPattern #tutorial #unrealengine #ue5 #gamedev #softwaredesign #software #designpatterns #cleancode

Пікірлер
  • I love these tutorials about "best practice". You speak clearly and actually explain things, I hope you will make more content like this :)!

    @francoisclement416@francoisclement416Ай бұрын
    • I'm really glad to hear that you find the best practice tutorials helpful! Thank you for the kind words and feedback. I'll definitely keep creating content like this, so stay tuned for more!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Teaching is a skill itself! Please keep going, don't change anything. You doing this very good! BRAVO!

    @HumpaLumpaBiriBam@HumpaLumpaBiriBam27 күн бұрын
    • Thank you so much for your kind words and encouragement! I'm glad you find my teaching helpful, and I'll definitely keep working hard to create valuable content. Appreciate your support! 🙏

      @AliElZoheiry@AliElZoheiry27 күн бұрын
  • Clean architecture is either a knows about b, b knows about a, or c knows about a and b. The mediator pattern you describe is almost the 3rd case, but not quite. The actors reference the combat manager and this creates a circular reference. The way you did this is the way that many devs implement such a thing, and it is ok. A cleaner, purer way, though, would be for the actors (player and enemies) to fire an event saying they want to attack. The combat manager would be required to bind to these events of each actor and instruct the proper actor what to do. What I just described may seem like extra and unnecessary work. The advantage, though, is that the actors remain completely unaware of the combat manager, completely modular and decoupled from it. This would allow you to more easily swap it out for a completely new and improved system later. While you may be committed to the current combat manager and may not consider this a benefit, this would also mean that you could implement different combat managers for different scenarios and swap them at runtime. Imagine having a level in your game where the game’s story switches to complete chaos, zombie outbreak, maybe. You could create a combat manager in this level where all of the enemies attack and disengage at random. Then, in the next level, go back to normal. Your actors would be none the wiser.

    @JesseHelton@JesseHeltonАй бұрын
    • sounds better. Hopefully he makes a tut

      @carlosrivadulla8903@carlosrivadulla8903Ай бұрын
    • Yes, you are absolutely right. the mediator knows about the actors, but the actors should not know about the mediator.

      @kirillnotof4861@kirillnotof4861Ай бұрын
    • Great comment

      @zeez7777@zeez7777Ай бұрын
    • Hey there, thank you for your insightful feedback and suggestions. It's always good to explore different architectural approaches, and your points about decoupling and modularity are definitely valid. The only problem with your comment is that Unreal Engine doesn't expose the "Delegate" variable type to blueprint interfaces, which is needed to add "Fired events" (e.g event disptachers) in C++ I would definitely prefer your implementation, but it's just not possible in blueprints alone

      @AliElZoheiry@AliElZoheiryАй бұрын
    • Your comment is true if you are adhering to the purity of this pattern from other languages. BPIs have their limitations, for sure. As an example, you cannot hold a reference to a BPI; you have to instead hold a reference to an Actor and cast to your BPI when you want to make a call - minor thing, but annoying. Similarly, it is annoying that there is no delegate type, as you say. However, also similar to the issue with BPIs, there is an Unreal-flavored workaround. Your Actors should not know about your Mediator, but your Mediator knows about your Actors. On your Actors, expose an EventDispatcher. In your Mediator, BindEvent to this event. Your Player and Enemies will each need to do this, and your Mediator will need to know the existence of each (versus the anonymity of a delegate), but this is not a large issue in your example. If this pattern were being applied broadly and you want the Mediator to be more generic, then in UE, you can still achieve this by creating a common base class on your Actors that defines the EventDispatcher. I agree that you want a delegate instead. I haven’t yet found a case where this level of sophistication from BPs is required, though. It’s just annoying that it doesn’t have all the modern language conveniences.

      @JesseHelton@JesseHeltonАй бұрын
  • Really love when you lay out concepts visually like with the airplanes.

    @shrew654@shrew654Ай бұрын
    • Thank you! I'm glad you enjoyed the visual explanations. I was learning video animations to make this, and it took about 12 hours of works just to get a few seconds of animations 😂 So I'm really glad to hear it was useful 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • You easily have some of the best unreal engine tutorials here on KZhead. Keep up the excellent work!

    @ARY824@ARY824Ай бұрын
    • Thank you so much for your kind words! I'm really glad to hear that you're finding the tutorials helpful. I'll definitely keep the content coming!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Simply the best Unreal Engine educational series I've ever seen, congratulations on your work!

    @fuilson918@fuilson918Ай бұрын
    • Thank you for your kind words and support! I'm really glad to hear that you found the series so helpful. I appreciate your encouragement!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • in addition to the praise on the calrity and depth, i want to add that its great that you seperate the actual configuration from the talk , making the video much more to the point. this is amazing. thanks so much for your hard work .

    @z90u6r200@z90u6r200Ай бұрын
    • I'm very glad you picked up on that! I try to keep things concise and focused, so it's great to hear that it's working well for you. Thank you for your kind words, they mean a lot!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • This is really great quality stuff! Also I think you've improved a LOT since you started doing this - your tutorials are succinct and to the point and a pleasure to watch. Thank you so much Ali!

    @svetsvett@svetsvett26 күн бұрын
    • You're very welcome! I'm truly glad to hear that you find the tutorials helpful. Thanks for your kind words and continued support 🙏

      @AliElZoheiry@AliElZoheiry21 күн бұрын
  • Your Software Design pattern tutorials are incredible. I'm new to Unreal, and I can sometimes feel how clunky my solutions are, but I don't know how to fix them, because I don't know how to think about programming yet. You're clearing up so much, and you make it so easy to understand. Thank you!

    @Alex-ui8mk@Alex-ui8mk18 күн бұрын
    • Thank you so much for your kind words! I'm thrilled to hear that my tutorials are helping you clear up any confusion and providing clarity on software design patterns. Keep learning and experimenting, and you'll soon find yourself creating more elegant solutions in no time. If you have any specific questions, feel free to ask!

      @AliElZoheiry@AliElZoheiry15 күн бұрын
  • What an amazing video series! Design patterns visualised in unreal is exactly what I was looking for. Also the structure of your video, graphical representation, audio quality is top notch! Instant sub :) Thank you very much for all the effort 🙏 I'm excited to see more

    @Cutting2Night@Cutting2NightАй бұрын
    • Thank you so much for your kind words! I'm thrilled that you found the series helpful and I appreciate your support. I was learning how to make these graphical animations for this video, so it took about 10 hours to get just a few minutes of animations 😅 Glad to see it didn't go unnoticed. I'll continue to ensure quality and informative videos.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • These design pattern videos are helping me a lot to actually grasp why these methods are best practices. Thanks so much and I can't wait for more videos from you!

    @mebessusn@mebessusnАй бұрын
    • Thank you for your kind words! I'm glad to hear that the design pattern videos are proving helpful. More content is on the way, stay tuned!

      @AliElZoheiry@AliElZoheiry27 күн бұрын
  • I very much enjoy that your lessons are comprehension focused and well explained. This feels like free tid bits from a class, less of a tutorial. And I very much prefer it. There’s a million tutorials on anything but hardly on lessons of comprehension or “best practices” as some other people have been commenting. Love your hard work 🫡

    @RoadkillLaharl@RoadkillLaharlАй бұрын
    • Thank you so much for your insightful comment! I really appreciate your feedback and I'm glad you find the approach helpful. Your support means a lot!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I love these new format videos, its helpful for me learning UE but also I do programming for my job but never went to school for it so you're teaching me things I can apply there too! Great video.

    @TheRopiak@TheRopiakАй бұрын
    • I'm happy to hear that the videos are not only helping you with Unreal Engine, but also with your programming work. Thank you for your kind words and I'm glad to know that the content is beneficial to you!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Once again, exactly what we need! It's all very well to have 2 billion tutorials on KZhead on how to make foliage, how to put a light etc., but what you really need to know when you start out is to understand and know how to architect your code, to understand a whole paradigm before you can start coding your project. It's been 7 or 8 times now that I've reworked the base of a game I want to make, not because of the code itself, but because of its overall structure/logic so that it's modular and can evolve over time. This is exactly what is described in this tutorial (in part, of course, as the world of code is very vast). You warned me on discord about the concept of "separation of concern", and I think that's the most important thing to know when you're starting out (before the other problem-s- that will come later, but it's an excellent start). Thank you very much!

    @sheeloocreations@sheeloocreationsАй бұрын
    • Thank you for your kind feedback! Understanding the overall architecture and the concept of "separation of concern" is indeed crucial when starting out in coding. I'm glad you found the tutorial helpful!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Funny you uploaded this now, I was literally just thinking how developers go about implementing this type of logic today lol. Your tutorials are absolutely stellar, man. Very informative, and I appreciate you also teaching good practices and showing how the more "common" approaches can be detrimental. I feel like i learn a lot every video you make. Keep it up!

    @CGWorks1993@CGWorks1993Ай бұрын
    • Hey, thanks for the kind words! I'm really happy to hear that you find the tutorials informative and valuable. I'll definitely keep putting out more content for you to learn from. Appreciate your support!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • This is THE tutorial for Unreal Engine that I knew I needed, but never found, until now. I can't wait to put this valuable information to good use☺️

    @vladioanalexandru4222@vladioanalexandru4222Ай бұрын
    • Thank you for your kind words! I'm so glad to hear that you found this tutorial valuable. Best of luck putting this knowledge into practice!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • The comparison to air traffic control was amazing man. It helped visualize the whole system from a different view and really brought the whole image into focus. Absolutely Amazing tutorial man sooo much thanks !

    @ryanjdevlin87@ryanjdevlin87Ай бұрын
    • Hey, thank you for your comment! I'm really glad the air traffic control comparison helped you understand the concept better. Thanks for watching and happy to hear it was helpful!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I'm pretty sure i found a gold mine of information. Thanks for this man, I have been struggling with making my projects scalable and manageable, but after finding this channel i think I am about to overcome just that.

    @raghidalsayek7019@raghidalsayek70194 күн бұрын
    • That's fantastic to hear! I'm glad you found helpful information here. Keep pushing forward, and I'm confident you'll be able to make significant strides in managing and scaling your projects. Good luck!

      @AliElZoheiry@AliElZoheiry2 күн бұрын
  • Great videos to level up from a beginner to more advanced. Very well done. Thank you.

    @OverlandBound@OverlandBound19 күн бұрын
    • Very nice to hear from you again 🙏 I really appreciate the feedback, glad you found it helpful ☺️

      @AliElZoheiry@AliElZoheiry19 күн бұрын
  • The cleanest tutorials I've seen so far :) really nice job!

    @trvkv@trvkvАй бұрын
    • Thank you so much for your kind words! I'm really glad you enjoyed the tutorials and found them helpful.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • these tutorials is really awesome for where i am now in ue4 blueprints, thank you, subbed.

    @nosaokhuelegbe@nosaokhuelegbeАй бұрын
    • Thank you for your kind words! I'm glad to hear that you're finding the tutorials helpful. Welcome to the community, and thank you for subscribing!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Perfect timing. I have a "brawl" going on in level and this mediator pattern is the perfect fit.

    @grit-mike@grit-mikeАй бұрын
    • That's great! Happy that the timing works out for you! Good luck on your game

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Amazing as always. Keep it up!!

    @zrmdevelopment7260@zrmdevelopment7260Ай бұрын
    • Thank you so much for your kind words! I really appreciate your support and encouragement. Stay tuned for more content! 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • AWESOME. Love the explanations and the Simple Human Logic behind it

    @KonradTamas@KonradTamas20 күн бұрын
    • Thank you! I'm glad you found the explanations helpful. I believe in simplifying complex concepts with a human touch.

      @AliElZoheiry@AliElZoheiry20 күн бұрын
  • This is high quality stuff! I love the animations and everything. It would be awesome if you kept explaining more design patterns; learning them through UE5 makes them more exciting.

    @sade1212@sade1212Ай бұрын
    • Thank you so much for your kind words and the suggestion! Glad you liked it. I'll definitely consider exploring more design patterns in the context of UE5 in future videos.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Love this series. Keep it going!

    @SirParsy@SirParsyАй бұрын
    • Thank you so much! Your support means a lot to me. I'll make sure to keep the content coming for you!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • This is my new favorite channel. Thank you so much.

    @lorenfulghum2393@lorenfulghum239323 күн бұрын
    • Thank you so much for your kind words! I'm happy to hear that you're enjoying the content. Your support means a lot. 🙏

      @AliElZoheiry@AliElZoheiry21 күн бұрын
  • Using an actor to set visibility of array of objects in blueprint. But confused on how to get components linked to number of objects given. Thanks for teaching new devs right. I spent two years learning bad habits from other creators. Weeks fixing it.. but your video's are great.. learned behavior trees through you. It's fairly easy to expand with your explanations. Your One of the Best so far. Keep it up.

    @billysatkowski6938@billysatkowski6938Ай бұрын
    • Hey there, thanks for your kind words and support. I'm happy to hear that my videos have been helpful to you, and I'm glad to have contributed to your learning experience! Keep up the great work!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Great video! You explain things so well!

    @shrew654@shrew654Ай бұрын
    • Thank you! I'm glad you found the video helpful. If you have any questions or suggestions for future content, feel free to let me know!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • what is this, a youtube channel teaching actual design patterns and not just basic blueprint stuff?? subscribed. more of this please!

    @ABentPaperclip@ABentPaperclipАй бұрын
    • Thank you for subscribing! I'm glad you found the content useful. I'll definitely keep creating videos on design patterns and more advanced topics in the future.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Awesome video, thanks for your effort in creating all these

    @zeez7777@zeez7777Ай бұрын
    • You're very welcome! I'm happy to hear that you found the video helpful. Thank you for watching and commenting 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Absolutely loving this series

    @reede140@reede14011 күн бұрын
    • Thank you so much for your kind words! I'm thrilled to hear that you're enjoying the series and finding it helpful. Keep watching and learning!

      @AliElZoheiry@AliElZoheiry9 күн бұрын
  • Dude... please dont stop making this videos! i was havin problems with buttons on widgets and this was the perfect awnser... trully thank you

    @ikkkki@ikkkkiАй бұрын
    • Thank you so much for your kind words! I'm thrilled to hear you found the solution in the video for your widget button issues. I'll definitely keep the videos coming!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Love these videos, great work!

    @Michael-zh7br@Michael-zh7brАй бұрын
    • Thank you for your kind words! I'm so glad you're finding the videos helpful. Keep a lookout for more content coming soon!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I didn't even start with unreal engine and youtube is full of courses , but you know the special ones after few seconds of watching your videos . I hope you get the best in live and from this youtube channel

    @esmail88@esmail88Ай бұрын
    • Thank you so much for your kind words! I truly appreciate your support and hope my videos continue to be helpful as you embark on your Unreal Engine journey.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Very interesting video. Never thought about using the gamestate like that. I've tried to decouple things as much as I can, but this will make it even easier to manage. Nice work.

    @nocommentgamez2571@nocommentgamez2571Ай бұрын
    • Thank you! I'm glad you found the concept useful. Game state can be a powerful tool for managing game data and decoupling systems. Appreciate your comment!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Another fantastic tutorial Ali. Your tutorial content is some of the best I've stumbled into on KZhead. Any plans to create a target switching/priortizing tutorial? You mention you might make one in Part 12 of your AI series, which would complement a video such as this one perfectly.

    @allen897@allen8973 күн бұрын
    • Hey, thanks for the kind words! I'm really glad you're enjoying the content. Creating a target switching/prioritizing tutorial is definitely on my list of video ideas, so stay tuned for that in the future. Thanks for the suggestion!

      @AliElZoheiry@AliElZoheiry2 күн бұрын
  • Well, this is exactly what I asked about last time so I feel like this was made for me. I'll stay tuned in hopes of learning more. If you need inspiration, perhaps touch on the subject of when to add something as a component - I could see that being an interesting talk. Regardless, thanks you, Ali!

    @symig@symigАй бұрын
    • Hey there! I take comments seriously ;) and feedback from viewers definitely guides me decisions on what videos to make, so please keep the feedback coming!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • great stuff, learning so much thanks bro

    @christopherfrancique9912@christopherfrancique9912Ай бұрын
    • Thank you for the kind words! I'm thrilled that you're finding the content helpful. Keep learning and enjoy the journey!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Great topic with a great example!

    @mahkhardy8588@mahkhardy8588Ай бұрын
    • You're very welcome! Thank you for the positive feedback and glad you found the topic and example helpful!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I'd like to see those blocks move like the Obi-Wan episode were his identity is changed and they have to prove himself a bounty hunter. This assimilation reminds me of that episode on Clone wars

    @nicholasmcmillan7536@nicholasmcmillan7536Ай бұрын
    • Hey there, that would be a good tutorial series as well. "How to use the force in unreal engine" 😂

      @AliElZoheiry@AliElZoheiryАй бұрын
  • The absolute best UE tuts.

    @charzulu@charzuluАй бұрын
    • Thank you so much for your kind words! I'm happy to hear that you find the tutorials helpful. Your support means a lot to me!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I'm definitely implementing this into my game. This is lit. This would make the the attack tokens functionality in the Enemies AI tutorials even better. One control how many enemies can attack at the same time and the other controls how many will be attack ready... awesome.

    @kellowattentertainment@kellowattentertainmentАй бұрын
    • That's great to hear! I'm glad you found it useful. Looking forward to seeing how you implement it in your game! 🔥

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Take a Bow man ! I love you I dont miss your tutorials

    @achuthanarayan7383@achuthanarayan7383Ай бұрын
    • Thank you so much for your kind words and continued support! I'm thrilled to hear that you are finding the tutorials helpful. Keep an eye out for more content in the future!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Nice! I like the use of proper framework classes(game state bc of how it replicates). I like the air traffic rip from refactor guru. You 10x it with the animations, brother! I like the structure of "Tell them what you are going to tell them, tell them, then tell them what you told them."! Most importantly, you picked a solid use case for this pattern, and It didn't feel like you had a solution while looking for a problem. I literally googled/YT a similar problem a month ago and didn't find a concise solution. I would love to see more about how to Architecture a game. What Helton said, "Clean architecture is either a knows about b, b knows about a, or c knows about a and b." is a great sentence. A subsystem seems like a good use of the manager, and it seems worth mentioning. I would love to see Strategy Pattern. That and Builder was my go to in SpringBoot. Not sure how useful they are in UE.

    @codymccarty9327@codymccarty9327Ай бұрын
    • Hey, thank you for the detailed feedback and the suggestions! I'm glad you found the video helpful. I'll definitely take your suggestions into account for future content. Keep an eye out for upcoming videos on game architecture, Clean architecture, Strategy Pattern, and more!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Waiting for more about this series. This 2 vedios about coding desigh patterns are very meaningful about us all. Your teaching chanel is the best in YTB.

    @lxyuan14517@lxyuan14517Ай бұрын
    • Hey, thanks for your comment! I'm really glad to hear that you found the coding design patterns videos meaningful. I'll definitely continue with the series. Your support means a lot 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • What the f , Ali?! Im 36 yo IT pro and have seen many many tutorials, but this one is of the highest quality! This one contains more cool ue tips than generic youtube video "ue cool tips"! Better design pattern description than any video or book including GoF. Superior pace. Superior pronunciation. Superior material structure.

    @ilitvinov@ilitvinov13 күн бұрын
    • Wow, thank you for such high praise! I'm thrilled to hear that you found my tutorial so valuable. Your feedback means a lot to me!

      @AliElZoheiry@AliElZoheiry9 күн бұрын
  • This is good stuff. I need to go revise some stuff in my current project.

    @talespinnergames700@talespinnergames700Ай бұрын
    • Thank you! I'm glad you found it helpful. Good luck with your project revisions!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • another good one Ali :)

    @kryogenicgames@kryogenicgamesАй бұрын
    • Thank you! I'm glad you enjoyed it 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Thank you soooooooooo much bro . Respect

    @rifat.ahammed@rifat.ahammedАй бұрын
    • You're very welcome! I'm glad you found the content helpful. Thank you for your support 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • SOLID, CLEAN, DESIGN PATTERNS, we love it! Thanks mate! PS: I'm wondering if in a real world scenario, devs are using C++ over Blueprint I've talked to some game devs before, and apparently, blueprint is not famous among devs (it's more used by game / level designers to create prototypes), but maybe I'm wrong. Keep doing the good stuff!

    @CloudStrife4@CloudStrife4Ай бұрын
    • Hey, thank you so much for your support and kind words! In a real-world scenario, both C++ and Blueprints have their place. C++ is typically used for core functionality and performance-critical code, while Blueprints are great for rapid prototyping and iteration. So both are important in game development. As a general rule of thumb, if it's a low level core implementations that's going to be used in most parts of your game, then implement it in C++, if it's high level and more related to gameplay logic rather than the core functionality, then implement it in Blueprints. Appreciate your feedback and encouragement!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • this is so helpful

    @GloriaTheAnimator@GloriaTheAnimatorАй бұрын
    • Glad to hear that! Thank you for watching and commenting 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Hey, thanks for these videos, such a good resource to have!! Cheers! So quick question, maybe too project dependent to answer easily, but, would it make sense to use the mediator pattern for a topdown interact/dialogue system? Right now my player controller is saving a ref to what ever intractable object/character the mouse is currently hovering over, and when I click, it publishes a message to the intractable. I could get rid of that ref by having a mediator but maybe doing it directly in the controller makes more sense... I dunno!

    @liamj2528@liamj2528Ай бұрын
    • Hey! Thanks for your comment! If you just have a single ref, to an interface from your player. Then that's completely fine.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • OP truly delivered. Decoupling was promised, and here it is 😊 Quoting the truth for my students: "The majority of your time is spent reading and reasoning about your code". Yep, despite Hollywood's efforts this is too true. Thanks for another banger 🙏🙏 I can't wait to get started bringing this technique in my projects.

    @tim.martin@tim.martinАй бұрын
    • Hey there! I'm really glad to hear you found the video helpful for understanding decoupling techniques. I appreciate your support and I'm excited for your projects ahead. Good luck with implementing the technique! 🙌

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Really interesting video, really useful for creating efficient combat scenerios, anytime i need gamestate or gamemode, I would create an interface function to get self of the gamemode say and i can access all of the variables if i need to. I rarely use casting now and keeps my games running smoother

    @gamedevpaddy3944@gamedevpaddy3944Ай бұрын
    • Thanks for your comment, glad you found it helpful! I did create an interface for the GameState at the end of the video ;)

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Hi incredible work loving how to fix all the bad habbits i have picked up with making a game with all hard ref and thinking it was great till i saw the RAM usage and referance viewer info. You have really made me think and Almost made me start over but going to try to fix what i have first to learn more i think. Either way you have helped so much. The situation i am trying to fix from all hard ref are the dependencies between say NPC and actors such as say a tree they are going to chop down should this be handled in the same way with an in world actor as an manger with separate interface or is there a better way.

    @wewillmodify8263@wewillmodify8263Ай бұрын
    • Hi, thank you for your comment and kind words! It's great to hear that the videos have prompted you to reevaluate your approach. In terms of managing dependencies between NPCs and in-world actors. I usually have a parent class for all "Interactable objects" that a player or an NPC can interact with, and then using a simple sphere trace or query. I can find all actors that I can interact with without having to cast. I don't think a manager would be good in this case because the interaction between NPCs and other actors are not a single use case, they could be a huge variety of different interactions, that would be too much for 1 manager to manage

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Wow! This is great. I subscribe.

    @chomnansaedan4788@chomnansaedan4788Ай бұрын
    • Thank you! Glad you found it useful ☺️

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Great video! I had a question. When you have the mediator class, where is the actual object created since it's not static? Is it an actor component on the player here or somewhere else? I am listening and not watching, so it you addressed this, then I am sorry i missed it.

    @leemclafferty5622@leemclafferty5622Ай бұрын
    • He created a class based on GameState which is static.

      @washynator@washynatorАй бұрын
    • Hey there, indeed for the Event Manager case, the mediator was the GameState class, which is configured in your world settings, then globally available in any class. For the Combat Manager case, I created a regular actor class (as our mediator) and placed it in the level. In some cases you have multiple combat managers per level or per section in the level, that's why I went for that approach.

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Great video! A tip: UE provides subsystems. Instead of using AActors handling the mediation, you can make children of UEngineSubsystem, UEditorSubsystem, UGameInstanceSubsystem, ULocalPlayerSubsystem(according to need) Which can easily be accessed by other classes, actors/components/uclass children/etc during gameplay or in editor.

    @Veluc1f3r@Veluc1f3rАй бұрын
    • Subsystems are more like singleton pattern. If it was a "global" combat manager and you don't need different instances for different combat scenarios then go for it. Also, subsystems are harder to do custom configrations because you just can't subclass them in BP. (I use custom project settings to do it)

      @noisegrindercn@noisegrindercnАй бұрын
    • Hey! Thanks for the comment, though using an actor was done on purpose for the case of the combat manager, because often, combat encounters are confined to a specific area of the map, and you might event want your enemies not to be able to leave the combat zone. Thus you can have multiple different combat managers per encounter in a level, and having is as an actor placed in the world would help with that

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Hello Ali, love the explaining, so easy to understand. Anyway, sorry if out of topic, but i have some question in mind. Do you know how to make Demo from Full Game Build? Thank you very much.

    @hendra_winata13@hendra_winata13Ай бұрын
    • Hey there! Thank you for the kind words. In terms of making a demo from a full game build, you can achieve this by creating a separate build specifically tailored for the demo (you can specify which levels are in that build). Additionally, you can consider implementing specific demo features or restrictions within the game itself. I hope this helps!

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry Thank you very much 🙏

      @hendra_winata13@hendra_winata13Ай бұрын
  • Thanks👌

    @Kulimar@KulimarАй бұрын
    • Wow! Thanks again Kulimar! I really appreciate your donations, they really help keep this channel going 😊🙏🙏🎉

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiryWhatever I can do to keep the great content flowing.

      @Kulimar@KulimarАй бұрын
  • Best series ever

    @Algost_@Algost_Ай бұрын
    • Thank you so much for your kind words! I'm thrilled to hear that you found the series helpful. Your support means a lot to me!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • thank you so much

    @GameTourist491@GameTourist491Ай бұрын
    • You're welcome! I'm glad I could help. Thank you for your kind words!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Nice Power Rangers cameo. Thanks for explaining different patterns, it sure is useful to have someone who can explain those kinds of things in clear manner.

    @jaha9329@jaha9329Ай бұрын
    • Glad you noticed the power rangers cameo, it sorta happened by accident, and I liked it, so I kept it 😂. Thank you! Your feedback is greatly appreciated!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Boa noite professor!! Você me ajuda muito com seus tutorias de AI, obrigado, estou conseguindo acompanhar o pessoal do meu trabalho por conta disso.

    @Lu1Vitor@Lu1VitorАй бұрын
    • Boa noite! Fico feliz em saber que os tutoriais estão ajudando, obrigado pelo feedback! Continue acompanhando o trabalho, e se precisar de algo mais, é só falar!

      @AliElZoheiry@AliElZoheiryАй бұрын
    • ​​@@AliElZoheiry "Professor, tenho uma dúvida sobre IA. Estou enfrentando um pequeno problema com isso. Criei um inimigo corpo a corpo cujo funcionamento é muito bom, mas suas únicas falhas são que, quando está perseguindo o jogador e o jogador pula, ele executa a animação de ataque mesmo não estando próximo ao jogador. Além disso, ele tenta atingir o jogador mesmo estando em cima de uma plataforma, continuando a atacar incessantemente. Como posso corrigir isso?" (É um jogo sidescroll)

      @Lu1Vitor@Lu1VitorАй бұрын
  • I might suggest that people look at using the MVVM pattern in addition to this (it will extend and event decouple more), it is implemented by UE already, it is a plugin ment more for UMG decoupling, but is easily extended to many different cases, such as this.

    @tenowg@tenowgАй бұрын
    • Hey, thank you for the suggestion! The MVVM pattern is indeed a great addition, especially when extended for various use cases. Appreciate your input!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • i got 2 tips for removing casting from this setup and making it more decoupled. Use a Actor component or use an interface to return the game state reference (your game state blueprint). Using a Actor component might be better as all you need to do is use the get component by class (node), this would remove the need to cast to game state. Also as long as you don't over complicate or fill component with any hard references this is a very light weight and safe method. Using the component also decouples the logic and you can copy past the component from one project to another. Another benefit is if you use different game state for different type of game modes you wouldn't have to copy over the events as instead of being tied to the game state itself it is in the component you can attach to new game state allowing you to then use each game state to focus on what specific code you need.

    @akumadj7569@akumadj7569Ай бұрын
    • Hey there, I think you didn't watch till the end of the video, because I do indeed use an interface for the GameState

      @AliElZoheiry@AliElZoheiryАй бұрын
  • 翻訳しながら見させていただいております。参考になります!

    @user-eg6wh5mu9h@user-eg6wh5mu9hАй бұрын
    • ありがとうございます!お役に立てて嬉しいです 😊

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I'm not sure of the advantages of the last interface over just casting event manager (interfaces use "cast" under the hood, so performance is about the same), is it just about saving nodes to keep everything clean (or being able to see more things at once) ?

    @natbouli3767@natbouli3767Ай бұрын
    • It's not so much a performance optimzation, it's more a good practice to create an interface for your event manager, that way if you want to create a new event manager later on, or you want to have 2 event managers with slightly different implementation, then you can just have 2 classes that implement the same interface in a different way, and you don't have to change the consumers of that interface. That's basically the main purpose of an interface in most cases

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry Ah I didn't see it in that way it makes sense, thank you for the clarification !

      @natbouli3767@natbouli3767Ай бұрын
  • Very good and informational. Could you please help people with replication in blueprint. I have been trying to find best practises on doing this and advice is all over the place, with usually no one is thinking about bad network connection (client predicted rep) or good architecture.

    @Ghossteffect@GhossteffectАй бұрын
    • Thank you for your comment! I'll definitely consider making a video on replication in blueprint and addressing best practices, including considerations for network connection and architecture. Stay tuned!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Hi Ali, love your content, always clear up my mind as a beginner on how to visualize data flow and managing, thanks very much :) I was wondering : after you talked about the use of GameState in the video, I went to look the UE documentation about GameMode and GameState, are there any good rules of thumbs to keep in mind on when to communicate from one instead of the other ? For a noob like myself half understanding these concepts xd Thanks again for the content, if I'm lucky enough to make money from games someday, I'll be glad to be able to support you via patreon !!

    @13romor@13romorАй бұрын
    • Hey there, glad you're enjoying the content! The main thing to keep in mind is that GameState is replicated (meaning it is available on both the client and the server in online games) while gamemode exists on the server only

      @AliElZoheiry@AliElZoheiryАй бұрын
    • Thank you for the answer !@@AliElZoheiry

      @13romor@13romorАй бұрын
  • How is this different from the token setup from the "Smart Enemy AI | (Part 11: Group Enemy Combat)"? Is this better? or just a different way of doing the same thing. New to BP, sorry if this seems like an easy answer . :) Thanks in advance !

    @McCoyD6@McCoyD6Ай бұрын
    • This is mainly just meant to be an example of how you could apply the Mediator pattern. I liked this example because I myself didn't apply this pattern in the Smart Enemy AI series and it would have been helpful if I did. That said, since in the enemy AI series, I don't have any complex combat scenarios, then the token system implemented there will work fine, but as it scales, it would be better to create a mix of the 2, where the tokens are managed by the player, but the combat is managed by the Combat manager, it all depends on the game you're making

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Is there a reason to use a mediator on other things? Like doors opening or switches for movables? Or the switch is considered the mediator for the movables in this case - the interaction isn't between the player and multiple movables but instead between the trigger and the movables?

    @joel6376@joel63767 күн бұрын
    • If you have any interaction between 2 classes and you want them to be decoupled and independent, then a mediator should be used. In your example of a switch moving certain actors, then the event manager is a great usecase, the switch just publishes an event to the mediator (the event manager) and the mediator let's all subscribers know that the event is published. That way your switch never communicates with the movables

      @AliElZoheiry@AliElZoheiry2 күн бұрын
  • Is that a JS on the wall?;) keep it up with the content, it's amazing!

    @Fawior@FawiorАй бұрын
    • Close, it's a Ibanez s420. Thank you for watching, glad you're enjoying the content!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Please continue writing tutorials on programming patterns or best practices in Unreal Engine. There are too many tutorials out there that focus on "do this to achieve X" and too few on "understand how to achieve X". I'm not sure if I'm explaining myself well, but what I mean is that most tutorials are too specific and not very flexible. I'm a Unity programmer and I really want to learn Unreal Engine, but not in a superficial way, rather in a more in-depth manner, being able to work with both Blueprints and C++.

    @NBAntony@NBAntonyАй бұрын
    • Thank you for your feedback! It's important to me to provide content that helps people understand the underlying concepts and principles behind achieving specific outcomes in Unreal Engine. Thanks for watching 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Can I actually implement this teqnique into your previous Smart AI tutorials ?

    @BrianEBP@BrianEBPАй бұрын
    • Yeah you definitely can!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • At 8:40 I do not have an AI Controller Variable as part of my enemy blueprint. How would I be able to make the AI Controller referenced by my enemy as a Get-able variable?

    @brandonvanharen2552@brandonvanharen2552Ай бұрын
    • I made an AIController variable because I have a custom AIController, but if you're not using a custom AI controller, then you will already have by default a function "Get AIController", this is available on all character classes

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Hello, love your content, its quality information not like 90% of tutorials. Do you plan on doing a tutorial for loading the game the right way? There are so many tutorials showing just how to add picture for 5 seconds to hide the load. That is the Wrong way and people are praising that

    @starscream2092@starscream2092Ай бұрын
    • Hey there, thank you so much for your kind words and support. Really glad to see that my content has been helping you. I have a tutorial on how to save and load data, but I believe you are mainly referring to loading levels, correct? I do plan on making a tutorial for that indeed, it's already on my list ;)

      @AliElZoheiry@AliElZoheiry27 күн бұрын
  • So how would you combine this with the token system targetting replication? I mean, TMaps can't be replicated, do we need to? since AI is calculated on the server?

    @viniguerrero@viniguerreroАй бұрын
    • Hey there! Thanks for your question and for watching the content. You're correct that TMap cannot be replicated, but since AI is calculated on the server, you don't typically need to replicate the TMap. The server's AI calculations will handle the TMap interactions. Let me know if you need further clarification!

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry that actually helped a lot! I thought I was doing it the wrong way, but in fact I was just not printing AI held tokens properly but they were being calculated, since it’s everything server side, makes more sense, thank you!

      @viniguerrero@viniguerreroАй бұрын
  • Thanks

    @tim.martin@tim.martinАй бұрын
    • Hey Tim! Thank you so much for the support 🙏🙏 these donations really help, I appreciate you !

      @AliElZoheiry@AliElZoheiryАй бұрын
  • What about the framework classes? (GameState, PlayerState, PlayerController, GameMode, GameInstance, PossessedPawn, HUD/UMG). To avoid circular dependencies, I have the HUD reference any/all of them, but nothing references the HUD. PlayerController references PossessedPawn. Actors can reference their Components, but not the other way around. How should the Other framework classes reference each other? Which way do the dependencies go?

    @codymccarty9327@codymccarty9327Ай бұрын
    • If you are looking to understand the entire flow of execution, then I strongly recommend this video kzhead.info/sun/fMWOYqytnF93o4E/bejne.htmlsi=n7yXqVBZFl8FFbZY where Alex goes over all the classes and function involved in initalizing your game

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry Great link, but not what I'm trying to understand. My question is not clear. I'm trying to understand the 'dependencies' between the framework classes, much like your video describes the dependencies between the AI and Player and introduces a manager class. The dependencies or references between the framework classes should go one way, not circular. But how? More specifically, does the GameState depend on the PlayerController? Perhaps the PlayerState acts as a Mediator between the GameState and PlayerController? IDK. If a player wanted to send a message to another player(s), which classes would be involved? PlayerController could Server_SendMsg to GameState and GameState could replicate the message to other Controllers, but that's a circular dependency. Imagine a moderately complex multiplayer rpg game. The framework classes become fairly large, and it's easy to tightly couple them with direct references and dependencies on each. How do I avoid each framework class depending on every other framework class?

      @codymccarty9327@codymccarty9327Ай бұрын
  • Hi can you make a tutorials about skill system with cooldown thanks

    @addy30001@addy30001Ай бұрын
    • Hey there! Thanks for the suggestion, I’ll definitely add it to my list

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Can you show it in pool object pattern?

    @mobildisko579@mobildisko579Ай бұрын
    • Hey! That's a great suggestion, I'll definitely add it to my list of ideas for future videos. Thank you for the comment!

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry If you have any knowledge about multiplayer, it would be great to learn multiplayer widgets. Actually, I basically learned multiplayer, but when I was trying to make widgets, everything went upside down. There is almost no information about multiplayer widgets, like each player has their own widget.

      @mobildisko579@mobildisko579Ай бұрын
    • Good idea. I must saw, multiplayer is not my strongest skill, but once i know more I will definitely be making videos on that@@mobildisko579

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Sensei 🙏🥷💎

    @alejandromedici2183@alejandromedici2183Ай бұрын
    • Thank you! I appreciate your support 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I use these design patterns without even hearing about them, actually without even realizing it, I generally use player state because for multiplayer, the game freezes when I choose gamestate (non-base).

    @mobildisko579@mobildisko579Ай бұрын
    • That's great to hear! It's always interesting to discover that you're already implementing important concepts without consciously realizing it. Keep up the good work!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • hey mannnnnnn I love uuuuu can u make combat finisher system I wanna learn that and u teaching greatttttttttt

    @NemesisQX321@NemesisQX321Ай бұрын
    • Hey, thank you for your kind words! Glad you're enjoying my content. I'll definitely consider a combat finisher system for a future video series. Thanks for the suggestion! 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry I love uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

      @NemesisQX321@NemesisQX321Ай бұрын
  • so is this better than the token system ?

    @MaxStudioCG2023@MaxStudioCG2023Ай бұрын
    • This is mainly just meant to be an example of how you could apply the Mediator pattern. I liked this example because I myself didn't apply this pattern in the Smart Enemy AI series and it would have been helpful if I did. That said, since in the enemy AI series, I don't have any complex combat scenarios, then the token system implemented there will work fine, but as it scales, it would be better to create a mix of the 2, where the tokens are managed by the player, but the combat is managed by the Combat manager, it all depends on the game you're making

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry so the anser is both for a real game :)) ....i was thinking that there is something missing from that token system because let.s take a game scenario where enemy keep coming they all have the same end fixed token system like 2 attacking or 3 at the time ....but that should be randomnly chosen by something not a fixed number because in the end player will notice that patern is keep repeating .... and on this system i dont see them attacking randomly ,seems that the others waithing for 1 to die to another take his place to attack ...wich is not verry realistic ....eighter i didnt understand it or is just something missing (best ingame should be Enemy attacking randomly and the attaker number of enemy should be also randomly chosen from 1 to 5 for example )

      @MaxStudioCG2023@MaxStudioCG2023Ай бұрын
  • hi ali, can you please tell me how to learn unreal engine from scratch i know the engine for about 3 years and still don't know how to make a game on my own

    @adhamfn7664@adhamfn7664Ай бұрын
    • Hey there! Thanks for reaching out. Learning a new game engine can be challenging, but I recommend starting with Unreal Engine's official tutorials, alongside practical projects to solidify your skills, and of course youTube videos are a great source of free content, and if you want to dive deeper into topics that aren't on KZhead, you will find a lot on Udemy and other paid platforms. Consistent practice and perseverance are key. I'm confident you can make great progress. Good luck!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • This reminds me of Kamino Clone and jedi training center.

    @nicholasmcmillan7536@nicholasmcmillan7536Ай бұрын
    • Thank you! That's quite the comparison, I appreciate your comment 🙏

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Cool

    @RationalBike@RationalBikeАй бұрын
    • Hey, thanks for checking it out! Glad you liked it! 🙌

      @AliElZoheiry@AliElZoheiryАй бұрын
  • these casts in event dispatchers are not problematic? On the one hand it is said to avoid it, on the other hand I see everyone using it..

    @mikoajtarkowski4083@mikoajtarkowski408310 күн бұрын
    • Hey there! Casts themselves are not problematic, as long as you understand what they do and when they might be problematic. The reason you may hear people saying casts are problematic is because as soon as you cast to class inside another, then you immediately create what is called a "Hard reference" to that class. Which will mean that if you cast to class B while writing some code in class A. Then anytime you load class A into memory, class B will automatically be loaded as well. This is not an issue if the 2 classes are dependent on each other and will always load into memory anyway, or class B is already loaded into memory, then casting has zero performance impact. That's the main thing to keep into consideration.

      @AliElZoheiry@AliElZoheiry8 күн бұрын
  • Hey Ali I know you get lots of comments...But please read mine/ Your channel is fool of advanced tech stuff lets keep it that way, On the internet there is barely anythimg about "Pooling" (for Example: Bullets, Enemies, arrows etc) and explanations as to why it would be a good way of optimizing projects especially if they are in blueprints. What do you think?

    @BrianEBP@BrianEBPАй бұрын
    • Hey there! Thank you for your comment and your suggestion. I appreciate your feedback, and I'll definitely consider creating a video on "Object Pooling" it's already in my plans for this series, so keep an eye out for it ;)

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I never understand why you use blueprints since you are used to writting code. Anyways nice video. i really enjoyed it.

    @AlexSW3303@AlexSW3303Ай бұрын
    • I appreciate your feedback! While I am a software engineer and very comfortable writing code, I find that blueprints can often provide a more visual and intuitive way to demonstrate concepts. I'm glad you enjoyed the video!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Did you "borrow" that quote at the end from Alex Forsythe? kzhead.info/sun/fbODgJR7raJ4a68/bejne.html

    @VanFS3K@VanFS3KАй бұрын
    • Ahh thank you!! I was trying so hard to remember where I heard that. It was Alex indeed, thanks so much for pointing it out!!

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Hey Ali! really awesome content! Im a Persian American game developer myself, and your work so far has been nothing but inspirational, keep it up!

    @amirhameedamirjalali4399@amirhameedamirjalali4399Ай бұрын
    • Thank you so much for your kind words! It's always great to connect with fellow game developers. I truly appreciate your support and encouragement

      @AliElZoheiry@AliElZoheiryАй бұрын
  • 🤔

    @drakouzdrowiciel9237@drakouzdrowiciel9237Ай бұрын
    • 🙋‍♂️

      @AliElZoheiry@AliElZoheiryАй бұрын
  • I was literally working on implementing event dispatchers and interfaces, thinknig about how not to use cast and also how to use game state. Incredible timing. recommendation for next in this series, maybe arrays? didn't realise what you can do them untilI saw this video

    @blindphoenix@blindphoenixАй бұрын
    • Thank you! Glad you found it useful! A series on data structures might be a good idea indeed! Thanks for the suggestion

      @AliElZoheiry@AliElZoheiryАй бұрын
  • Sorry but your architecture is still riddled with hard dependencies. Instead of debating it, why don't you right click on your assets and show the dependency tree instead of being full of shit each video?

    @knuckles7410@knuckles7410Ай бұрын
    • Hey, I appreciate the feedback, though I think you're missing the point of the video. The "Mediator Pattern" is a behavioral design pattern, meant to eliminate logical dependencies in your code for easier maintenance and better separation of concerns. This is not a pattern that optimizes for memory usage. If you want a video on that, I can consider it for the future. If you intent to provide any more feedback though, I would appreciate more respectful comments, instead of calling me "Full of shit", try to voice your opinion in a way that takes into consideration the actual topic of the video

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry Read the title of your own video. If you want respect, don't clickbait people.

      @knuckles7410@knuckles7410Ай бұрын
    • @@knuckles7410 the title says "dependencies" you think dependencies are "references". I think you need to read up a but more on the difference

      @AliElZoheiry@AliElZoheiryАй бұрын
    • @@AliElZoheiry Well a hard ref is certainly a dependency.

      @knuckles7410@knuckles7410Ай бұрын
    • Not at all, a reference is a memory concern, a dependency is a logical concern. They both are related, in the sense that creating a reference often creates a dependency, just like you can create a dependency without references at all. But your comment does give me the idea to explain the difference more clearly in future videos, I assume if it's not clear for you, then others must have the same question as well. Thanks for the insight 🙏🙏@@knuckles7410

      @AliElZoheiry@AliElZoheiryАй бұрын
  • i love how you talk about mediator patterns and end up visual scripting LOL i am out of here

    @robertbalassan@robertbalassanАй бұрын
    • I'm sorry to hear that you were disappointed by the content. I know blueprints get a bad rep, especially from skilled developers, but as a software engineer with over a decade of experience in a huge range of programming languages, I have to say, that blueprints are honestly an excellent abstraction layer over a lot of the tedious overhead needed to create games. Just like people weren't happy about Java when it came out in the 90s and felt C++ offered much more control over memory usage, then it ended up being the standard for almost all modern applications afterwards. Same with container orchestration frameworks, such as Docker and Kubernetes, also faced skepticism initially, then revolutionized deployment and packaging and became the standard.

      @AliElZoheiry@AliElZoheiryАй бұрын
    • Who gives a sh.t were you go man. Ali is doing a good job of explaining core concepts , and with that knowledge you can figure out yourself how to implement in c++

      @brianmj123@brianmj123Ай бұрын
    • ​@AliElZoheiry don't worry. This was incredible and you have the best content on Unreal on KZhead in awhile.

      @TimothyBell90@TimothyBell90Ай бұрын
  • Top quality content right here Learning alot from @Ali Elzoheiry

    @Drachir08@Drachir08Ай бұрын
    • Thank you so much for your kind words! I'm thrilled to hear that you're finding the content valuable and that you're learning a lot. Your support means a lot to me, and I appreciate your feedback!

      @AliElZoheiry@AliElZoheiryАй бұрын
KZhead