How You Can Easily Make Your Code Simpler in Godot 4

Поділитися
Вставка
  • Опубліковано 21 вер 2024

КОМЕНТАРІ • 541

  • @rohanflanagan5701
    @rohanflanagan5701 4 місяці тому +249

    came here from Brackeys and so glad i did, GREAT video. loving where the game Dev world is going, feels like a new era that is far more enclusive than ever before

  • @pietricele
    @pietricele Рік тому +937

    I love that you managed to explain a fairly confusing and complicated topic with examples showing both the problem and the solution by using this approach and also the tradeoff for using the inheritance over composition ( at least for this kind of scenario ). I think those are the kind of educational videos that are hard to come by, especially with an easy to follow visual representation, which are really appreciated by the community. We know it's not easy and it takes time to find examples and then explain them in a simpler manner, as you did, but we really appreciate each one of them and we thank you for that!

    • @fishybusiness1149
      @fishybusiness1149 Рік тому +18

      This man really spoke for all of us and nailed it

    • @HoovyMcBoovy
      @HoovyMcBoovy Рік тому +5

      I agree, thank you for going into examples that are very applicable. Here and there I'll watch some coding videos that give useful advice, but they don't provide any examples and I have no idea what to do with their advice because I have to spend extra time figuring out what it means and how to apply it.

    • @HisBelovedSon70x7
      @HisBelovedSon70x7 Рік тому +1

      Amen! As I was watching I thought to myself I need to compliment this man's fantastic teaching ability. Then I scrolled down and found you've done it better than I could have. Well said. Bitlytic thank you for such a clear and simple explanation of the different concepts and providing an example, you made it very easy to understand and follow.

    • @pepsipwns666
      @pepsipwns666 11 місяців тому +1

      Agree, really well made vid, to the point but also very informational!

    • @YammoYammamoto
      @YammoYammamoto 9 місяців тому +1

      Has a...
      Is a...
      Uses a...

  • @the_kryllic
    @the_kryllic Рік тому +419

    This really clicked for me, the animations were super helpful to visualize abstract ideas and I really appreciate the walkthrough in the end

  • @fkeyzuwu
    @fkeyzuwu Рік тому +323

    cool video! if you are already trying to decouple code using composition over inheritence, i would probably create a signal on the hitbox that the parent object would connect to. then whenever the hitbox gets hit, it emits the signal, the parent can then decide what to do with it. in this case propogate the attack info onto the health component. this way the hitbox component does not need to know anything about the health component.

    • @Bitlytic
      @Bitlytic  Рік тому +125

      Very much agree, signals and composition work so well together but I figured I had already given enough fundamental info in the video or I would've included that.
      Specifically I would've replaced the queue_free in HealthComponent with a signal emission that the player can choose to use or not

    • @paul_musique
      @paul_musique Рік тому +1

      How can i emit a signal, is it get_parent().die() for example or am i missing the point?

    • @paul_musique
      @paul_musique Рік тому +1

      Because if it's what i wrote, you have to declare a die() function for every object

    • @cyberneticsquid
      @cyberneticsquid Рік тому +19

      @@paul_musique I'm not really sure how to explain the signal system just in a UA-cam comment, but I recommend checking the Godot documentation, it explains signals really well

    • @catcactus1234
      @catcactus1234 Рік тому +12

      @@paul_musiqueYou don’t need to use a parent for signal emissions. You just need an acccessuble entity to connect to. Many godot tutorials use a “global” or “manager” script that contains their most common functions / signals which they can emit to from any script or object.

  • @dv_interval42
    @dv_interval42 4 місяці тому +215

    Brackeys gang

    • @SamuTheFrog
      @SamuTheFrog 3 місяці тому +11

      You know this dude knows his stuff when the OG sends you to him.

  • @quellusdev
    @quellusdev Місяць тому +2

    This describes exactly my struggles. I’ve been trained in Object Oriented languages like C++ and Godot’s implementation is really challenging the way I think about this stuff. Thank you so much!

  • @capsey_
    @capsey_ Рік тому +115

    This has to be one of the most (if not the most) approachable explanation of inheritance vs. composition. Very easy, straight forward and clear. I had to learn it the hard way and for the longest time couldn't understand the advantage. I wish I had this video back then. Love it!

    • @YammoYammamoto
      @YammoYammamoto 9 місяців тому +10

      inheritance - "x is a..."
      composition - "x has a..."
      aggregation - "x uses/knows a..."

    • @PotassiumLover33
      @PotassiumLover33 6 місяців тому +5

      ​@@YammoYammamoto idk man for me these kind of explanations just confuse things more. Its such an abstract explanation to the point its hard to visualise how it would work in code.

  • @computersciencestudentriverbat
    @computersciencestudentriverbat Рік тому +88

    Composition as a design pattern I think is uniquely equipped for solving problems and making more robust (and easier to maintain) code. There aren't a lot of videos on programming patterns in Godot and seeing this is great. Talking about general/generic problem solving I think helps beginners out a lot by helping us step outside of "How to do X" to thinking about breakdown solutions to fit their own needs/program. Tutorials have their place and purpose of course, but I think Godot (programming in general to be honest) is in great need of this sort of problem solving/design thinking sort of information. Great video!

    • @poleve5409
      @poleve5409 4 місяці тому

      as much as I love making pretty and readable code… we have to admit it honestly doesn’t matter for 99% of godot games

  • @travotravo6190
    @travotravo6190 Рік тому +36

    Coming from Unity where you can throw multiple scripts on things without thinking or use multiple inheritance, this kind of helps me get my head around how Godot is 'meant' to be used! Good tutorial.

    • @Bloody_River
      @Bloody_River 11 місяців тому +5

      Now I see one more reason why unity games are so laggy and taking a tons of space.

    • @kurushimee
      @kurushimee 11 місяців тому +8

      @@Bloody_River scripts don't take up much space at all, it's all assets

    • @Bloody_River
      @Bloody_River 11 місяців тому

      Ye, I didn't mean scripts takes much space. I said in general. But scripts making laggy btw. So yeah, unity sks anyway.@@kurushimee

    • @PamellaCardoso-pp5tr
      @PamellaCardoso-pp5tr 10 місяців тому +5

      @@kurushimee they actually do. Spaghetti code leans into massive super classes bloated with a lot of functions and huge objects that aren't properly managed in the memory by the program. So, even tho they aren't automatically making your code laggy or bloated, the usage of inharitance leans into this kind of problem really easily and it gets really hard to manage the memory usage of such objects.

    • @patek2385
      @patek2385 4 місяці тому

      If you would use scriptable objects you would be golden

  • @GhostbitStudios
    @GhostbitStudios Рік тому +48

    This clicked for me. Was trying to learn this topic and you explained it so well in such a quick but well paced manner, never stop teaching, this was amazing

  • @Haxses.
    @Haxses. Рік тому +12

    Your tutorials are so good. There's plenty of beginner tutorials for Godot at this point, but we are seriously lacking in simple guides on how to architecture games. Tutorials like these are incredibly valuable and many budding game devs wont even know that they need to be looking for this kind of stuff. Please keep making tutorials!

  • @lunaticwyrm4675
    @lunaticwyrm4675 Рік тому +11

    When I develop in Godot, I often use a mixture between inheritance and composition, and oftentimes, I use resources instead of nodes for composition since it is easier to modify through an export statement.
    For example, I have a slew of statemachine resources that I can plug in to my Actor class (which is basically an entity class), which makes it easier to trade behaviors depending on the entity type and whether there is currently a cutscene or battle.

    • @da_roachdogjr
      @da_roachdogjr Рік тому +7

      I kind of got deeper into godot recently and I'm using custom resources unaware of this video's specific subject.
      I find it very weird that custom resources aren't being heavily promoted by tutorials.
      Need the same enemy to have different types of stats or damage, just drag and drop.
      It's like secret godot magic because there's only like 3 decent videos about it.
      What going on? I ctrl+F and this is the only comment talking about resources O.O

    • @lunaticwyrm4675
      @lunaticwyrm4675 Рік тому +4

      @Pulse_Skeleton Yeah Ik, weird right? You'd expect this miracle solution to be talked about more.
      It's so useful for, say, making multiple unique character objects in game from the same Actor scene without having to make seperate actor-inherited scenes for each character.

    • @MagicGonads
      @MagicGonads Місяць тому

      @@lunaticwyrm4675 is there a way to get type hinting for resources? Can they expose code to their holder? can I set default values for them in scenes and have those values hold when I instance those scenes without having to fiddle in the editor for each one?
      I've been trying to expose precise constraints from gdscript to the editor so it's easier for my team to use my modules, but I find nearly everything tedious to configure outside of a textual format (which prevents getting good adjustment/previews/feedbacks/hints in the editor).

  • @scollll
    @scollll Рік тому +12

    Bro, you need to continue this type of videos. I'm really learning from this.

  • @jsj0520
    @jsj0520 15 днів тому

    This is quite literally exactly what I needed to be able to attack trees (resources in general) and enemies in my game. Thank you so much for the explanation!

  • @flunk009
    @flunk009 9 місяців тому +2

    The first video I found on this topic was the epitome of the "Every programming tutorial" meme video, but your video made everything click in my head immediately! Thank you so much for explaining composition in a quick and easy-to-understand way!

  • @cm16533
    @cm16533 4 місяці тому +1

    Man you are easily the most clear and efficient teacher I've found for game dev / Godot on UA-cam. Hope to see more videos. Thanks for the help.

  • @HonestGameDev
    @HonestGameDev 11 місяців тому +4

    Great video, not only displays composition trumps inheritance in a lot of cases (inheritance has it's use cases) but also ties into how the workflow in Godot is awesome with it's Nodes system.

  • @victorgarces3379
    @victorgarces3379 11 місяців тому +3

    I've been working as a software engineer for more than half a decade and this is by far the best explanation I've seen for Composition. Nice video, keep it up!

  • @SamuTheFrog
    @SamuTheFrog 3 місяці тому

    These videos are invaluable, man. I've come back to these several times now as quick refreshers as I'm still learning everything. Truly great

  • @AlexPBenton
    @AlexPBenton Місяць тому

    This is so much better than all the videos proclaiming that composition is “better” than inheritance. Like you said at the end, sometimes one is better and vice versa, and you’ll usually want to use both at the same time

  • @ASTROBOXSD
    @ASTROBOXSD Рік тому +36

    this helped me alot, i've started using godot about less than a week ago, so far did not make my first game yet and this already gave me a good direction, thank you! however i noticed that when you got to this point in the video 3:29 you said "from the last video" without providing a card to click on(or a comment), as a youtuber myself i know that by time goes on it will be harder to search for the video manually, especially if you kept uploading videos, lastly i would really love to see a video talking about when and how inheritance is more preferred. thank you once again!

    • @Bitlytic
      @Bitlytic  Рік тому +18

      Good call, I've added that. Thanks a ton for the suggestion!

  • @6Uriann9
    @6Uriann9 8 місяців тому +1

    Loved the simplicity that you found to explain an not so simple subject with easy to follow examples. Thanks for bringing this one!!!

  • @NaughtyKlaus
    @NaughtyKlaus 11 місяців тому +1

    As someone deeply rooted in plain old Java, inheritance has always been my go-to, but this explanation of component-based makes things very simplified. I'll keep this in mind for the future, thanks.

  • @covenautadev7260
    @covenautadev7260 Рік тому +3

    A time ago I made a similar sistem that mix both inheritance and composition, but it had the same soul, I found it so cool, now I notice that other people are dicovering and making it in many ways, it is amazing.

  • @naturelist
    @naturelist Місяць тому

    I came here from Brackeys and really want to thank you for the explanation! I am definetly going to use Composition in the future!

  • @endermaster08
    @endermaster08 Рік тому +1

    Easily the best godot tutorial on this entire website. It's so clear and to the point. Who knew that you could teach me how to clean up my code in 7 fucking minutes?

  • @sillygoose8037
    @sillygoose8037 4 місяці тому +1

    really solid video, started with theory, showed a fun example, really made it concrete. clear, informative, love it.

  • @Kantrul
    @Kantrul Рік тому +2

    Damn, just found out about your channel and you do a very good job explaining these kind of topics (classes, inheritance vs composition). The Godot community needs more content creators like you

  • @Xero_Wolf
    @Xero_Wolf Рік тому +4

    Great video. As you concluded I use a combination of both.

  • @heatblayze
    @heatblayze 4 місяці тому

    I always love seeing how other developers perceive and approach different problems, even if we both come to the same solution. It definitely helps when you make a video that's as well presented as this one! Great work

  • @Flux0_0-u2d
    @Flux0_0-u2d 19 днів тому +2

    actually that was really helpful thank you very much

  • @fourlion_everywhere
    @fourlion_everywhere 6 місяців тому

    I've watched like five videos from different people about composition, and this one is, by far, the most demonstrative one about why exactly composition is better than inheritance. Many congrats and thanks and praises for such a good work of topic telling 🙏

  • @maywakeTV
    @maywakeTV 5 місяців тому +1

    I fell into the exact trap you gave as an example. Looking forward to refactor my game to use more composition and less inheritance!

  • @somedude8392
    @somedude8392 11 місяців тому +1

    I have to say, this is a really good and easy to understand tutorial for a really useful function

  • @ocarina0001
    @ocarina0001 3 місяці тому

    Of all things I learned in this video, it was CTRL+Space. Thank you.

  • @alexwilkinsgames
    @alexwilkinsgames 4 місяці тому

    This video is the equivalent of an ice cold glass of water at 2 am! Thank you for the visuals at the beginning! I get hard concepts for visuals and now my brain is firing off so many ideas!!! 🎉

  • @madmanwithaplan1826
    @madmanwithaplan1826 9 місяців тому

    my man do you understand how hard it is to break down code theory to such an understandable and digestible format? you got a real talent for educating people.

  • @itsdalion6612
    @itsdalion6612 11 місяців тому +2

    Thanks!
    Will def start using composition in my games and see how it turns out
    I am surprised I was able to understand this since I am not that good at programming yet
    you did a really good job in explaining the concepts in a pretty short time, good job!

  • @alectriciti
    @alectriciti Рік тому +3

    Hey, you did excellent explaining the difference between Inheritance and Composition. Not a lot of videos take the time to utilize simple illustrations (and color coding elements such as Attack, Health, and Hitbox). Very helpful for visual learners. You're on the right track, and I hope you keep making videos. That said, I'll be sending this video to my aspiring game-dev friends when I see them inevitably copy/paste code. Also, that sprite animation at the end is super cute!

  • @Tegyukfel
    @Tegyukfel 8 місяців тому

    This is really really good advice. This pattern just feels right, like how the named classes, exports, nodes and scenes are meant to be used together to create an efficient and simple architecture which corresponds to programming best practices, but in Godot

  • @richbuilds_com
    @richbuilds_com 4 місяці тому

    Great tutorial.
    In your Entity example at the start. Entity should extend Node and then it can be attached to anything. Create your player as a CharacterBody and attach the entity script. Your Mobs are RigidBodies and your Trees are StaticBodies.
    You can have Entity extend PhysicsBody3D to be even more type safe. That way you can only make an entity out of something that must have a hitbox

  • @LeniconDev
    @LeniconDev 5 місяців тому

    Best video ever, and this is not just for Godot 4, this works well for Godot 3 and mainly other types of programming if you get the logic behind it. Perfectly explained and simple. Absolutely brilliant

  • @-alex-5517
    @-alex-5517 Рік тому +3

    Excellent video. When I was developing my game in Unity for the first time, I made the mistake of using inheritance for everything. When I wanted to create a box that would take damage, it was all so badly thought out, that the best I could do was to inherit from "Fighter" to have the corresponding methods and references. So a box was a "Fighter", a bit ironic really. 😅
    Now porting everything to Godot I will try to reformulate well all the code structure to components or as I call it (Place and run).

  • @simmzzzz
    @simmzzzz Рік тому +1

    I still like the way unity allows multiple scripts to be added, over adding multiple scenes as a workaround, but this is seems like a good way to stay organized. Amazing explanation btw, Thanks!

    • @hardtofinduniquename
      @hardtofinduniquename Рік тому +2

      Think of adding multiple nodes as adding multiple components. It's not quite the same as Unity, but helps align your thoughts.
      I think making separate *scenes* is overkill. See my other comment about class_name.

    • @ghostradiodelete
      @ghostradiodelete 10 місяців тому

      Only that in some cases the number of nodes I have on a scene is ridiculously cumbersome in comparison to how it looked in Unity. Of course the functionality is the same, but from a hierarchy viewpoint and bird's eye view, Godot's scene is really messy.

  • @tuftypompom
    @tuftypompom 8 місяців тому

    I've been using Godot for a good few years now and I have never thought of this for some reason?? This was such a fun and informing video!! I'm excited to put these concepts to use.

  • @aussiescorner3954
    @aussiescorner3954 4 місяці тому

    came here due to Brackeys video and though I'm not completely comfortable with this yet it seems like a very good thing to know. Very much enjoyed the video thank you.

  • @denizk0461
    @denizk0461 5 місяців тому

    Thank you!! I was meaning to use a more component-oriented approach in my game, but I've struggled with finding out how to implement that properly. This video really helped me understand it better - the code examples were especially helpful!

  • @SamuTheFrog
    @SamuTheFrog 3 місяці тому

    You clearly put a lot of effort into this mini-series thing, and I must say... Fucking EXCELLENT job, man.

  • @FileTh1rt3en
    @FileTh1rt3en Рік тому +1

    This is a really fantastic explanation of the difference between inheritance vs composition which I think a lot of videos on the topic miss. Generally they don't show the inheritance part and strictly talk about how to deal with composition, which on it's own is not that helpful. Great job.

  • @ericspeak6110
    @ericspeak6110 Рік тому +1

    There needs to be more content like this on Godot better coding practices and templates that can be used for any game taught in this fashion. Friggin great.

  • @cesarlemos1337
    @cesarlemos1337 4 місяці тому

    For someone whho works with Java, I had my fair share of complaining about the abuse of inheritance and lack of real composition. You managed to explain it in a way that I can just replicate eithout sounding too technical. Thanks!

  • @tatarus33
    @tatarus33 4 місяці тому

    I just started with Godot. This is a really great tutorial. I was just trying to reformat my code and see what other people are doing and this is exactly what I was searching for. Your videos are very valueable to me :) Keep up the good work.

    • @qingxian3870
      @qingxian3870 4 місяці тому

      did you have programer background?

  • @paper183
    @paper183 16 годин тому

    "Why are you reading this" Busted! Very funny and also thanks for the info!

  • @darth0sasha
    @darth0sasha 10 місяців тому

    Wow, actually went through 10 videos about OOP, trying to find a way to fix the issue of inheritance. And you were the one to explain so clearly and neatly. Thank you a lot.

  • @Burak-ls5yd
    @Burak-ls5yd Рік тому +1

    Great solution! I was currently implementing this approach and it's already working great. I was coming from an OOP background and when I was working with Godot for the first time, I was trying to inherit everything. Lol, it was too messy to deal with, and the inherited classes were not efficient.
    I have one suggestion though: Maybe instead of using get_parent().bla_bla(), you can emit signal like emit_signal("somebody_touched_this_hitbox", Area), and take context from Area if Area is a particular extended class of Area (Maybe it's an Area of Enemy, etc.). This approach would easier to manage I think.
    Edit: Yeah, exporting the Node2D and attaching it as a variable is also a better solution. You don't need to work with signals. Good job.

  • @Yamartim
    @Yamartim 4 місяці тому +3

    i watched this video already but im watching it again because brackeys mentioned it 🙏🙏

  • @alli-gator-forest
    @alli-gator-forest 7 місяців тому

    I had learned about Inheritance during my time with Java but was disappointed at the limitations Godot had with it. But, wow! Composition is exactly what I was looking for. Thank you!

  • @Xiimo_
    @Xiimo_ Рік тому

    nah im halfway in, and i already know this deserves at least ten times the views that it has just for the quality and the amount of work behind. great video!

  • @AndrewWooldridge
    @AndrewWooldridge Рік тому +1

    I really like how clearly and concisely you described the two strategies and how composition can be a preferable way of organizing your code. I look forward to more videos from you!

  • @charliedaloon4831
    @charliedaloon4831 Рік тому +1

    Kudos. Moving from Unity to Godot, I had some idea that I was going to need to shift my thinking from Inheritance to Composition, and there are plenty of people online telling me what composition is and the basics around it (like the first half of this video) but very few showing it in action with examples (like the second half of this video)
    Thanks for this

    • @b-lotus5145
      @b-lotus5145 Рік тому +1

      I still think that composition isn't better than Inheritance in big projects, it would get messy. And for the damage script he could have used an interface to do that.
      Inheritance is harder at the beginning, but as the project keeps growing, it makes your life easier. Composition is the opposite.

    • @ghostradiodelete
      @ghostradiodelete 10 місяців тому

      ​@@b-lotus5145And you can definitely use interfaces if you use the Mono version of Godot, and if not there's a hacky solution provided by someone here on UA-cam that I used when I was using GDScript.

  • @snuck7926
    @snuck7926 Рік тому +1

    Amazing vid! This was exactly what i needed. Can't wait for more vids like this!

  • @thargelion
    @thargelion 10 місяців тому

    This is a mind blowing way of explaining inheritance vs composition in just 7 minutes. Great job!

  • @biglootums5243
    @biglootums5243 9 місяців тому

    Thank you for this. I keep hearing about how great composition vs inheritance is but really needed a super simple demonstration of it actually being done to really get it. Videos about the theory are great but some of us just need to see it done a couple times! Thank you!

  • @dlandsvolka4046
    @dlandsvolka4046 Рік тому +1

    this explanation makes me interested learning godot

  • @MyCheeseNacho
    @MyCheeseNacho 3 місяці тому

    OMG! This made everything so much easier! Thank you!

  • @titaniumarrow8357
    @titaniumarrow8357 5 місяців тому

    as that its nearly midnight ill leave this video for later but i will return and thank the youtube god for recomending this video

  • @docmars
    @docmars 8 місяців тому

    Very helpful, this is the way. I've never really been a fan of Inheritance patterns for the same reasons you stated where base classes often do too much, and moving that functionality somewhere else is a huge pain. Refactors end up eating all your time. It's awesome to see good Composition patterns applied directly in Godot here to see first-hand how useful it is. Thanks for putting this together!

  • @tapio355
    @tapio355 Рік тому

    Thank you so much for this tutorial! I only started my project and immediately got into inheritance hell when tried to change its order. Now rewriting what I have with this new technic. Your classes tutorial is useful too.

  • @noise_dev
    @noise_dev 6 місяців тому

    thanks for this man! I am using inheritance for my inventory system and now composition will greatly help while implementing enemy nodes

  • @DT-hb3zu
    @DT-hb3zu 2 місяці тому

    Finally! Someone who understands programming enough to give a game dev tutorial 🎉
    Subbed

  • @The_Licanu
    @The_Licanu Місяць тому

    Amazing video and nicely shown!
    Really like how the code looks, clean and precise. Will definitely give it a shot when i feel i need it!

  • @KevinNijmeijer
    @KevinNijmeijer Рік тому

    Thank you! Finally someone who doesn't need 45 minutes on the topic only to not even show a half descent example!

  • @viviansusername
    @viviansusername Рік тому

    Ah, another day, another youtube video explaining a thing I already do but didn't know the name of. Kept thinking this was inheritance-but-not-quite and doing it by instancing/calling the nodes as needed from script. This is cleaner.

  • @_ramar
    @_ramar 2 місяці тому

    YO this video was awesome. love the pace & effictiveness. you showed off a lot of stuff i needed to learn to start using godot properly and i thank you muchly for it :) into my obsidian vault this video goes!

  • @renegadeop3448
    @renegadeop3448 Рік тому

    i was once working on a project where i needed to build my own mini game engine , and i stumbled upon a principal named an entity component system ECS , and it was one of the most complicated and challenging topics to comprehend , let alone to practice , i was in a rabbit hole for about a month trying to get the basics of it , and it was hell , but i managed to understand it so deep i found your explanation to be simple and understandable more than i would've gotten it a while back , sadly i stopped working on that project and just directly skipped into goddot

  • @VoltitanDev
    @VoltitanDev 3 місяці тому

    This tutorial has helped alot with my 3d dream game and simplifies both player and enemy taking damage from each other.

  • @KlausbergerYT
    @KlausbergerYT 4 місяці тому

    Saw this in my Timeline and although I knew about both concepts, I still watched the full video as it was really spot on.

  • @fryd42
    @fryd42 Рік тому

    THANK YOU ive been so confused about a simple aproach to giving simple stats to my characters. thank you so much

  • @WilliamShinal
    @WilliamShinal 5 місяців тому

    You're a lifesaver! I had to give up on my shmup project in Godot 3 before I saw this.

  • @Emefak
    @Emefak 4 місяці тому +7

    I came from the Brackeys video too, great job explaining composition. I have one question, though: how can you call that super cute cow THE ENEMY???

    • @Bitlytic
      @Bitlytic  4 місяці тому +8

      You don't know his sins like I do

    • @Emefak
      @Emefak 4 місяці тому +1

      @@Bitlytic 😂😂😂

  • @YouTubsel
    @YouTubsel 8 місяців тому

    This was pretty much exactly what I was currently struggling with. And it was absolute clear and concise. Thank you so much. :)

  • @darius_defiant
    @darius_defiant 3 місяці тому

    Just found your channel because of Brackeys' video! Great stuff, very well explained. I was getting into Godot and already used composition in project, but then things came up and I took a ~6 month 'break' and wanted a refresher, and this was perfect. I'm glad to see more people making videos on Godot that are slightly more than 'basic' level, because it was very difficult for me to find before. Everything was super beginner level tutorials where you just copy them without much explaining, but I was moving on to more complex things. I see you have some other vids that look interesting as well, so I'm going to subscribe and check them out too!

  • @theorixlux
    @theorixlux 5 місяців тому

    I found a great hack! If you change the font color to the background color, then your project looks pristine!

  • @Spar3Tim3r
    @Spar3Tim3r Рік тому

    I've watched TWO videos and I'mma just say this is an extremely underrated channel. Wishing all the success to you. Thanks for the help.

  • @RivalKnightSoul
    @RivalKnightSoul 4 місяці тому +1

    Definitely saving this for later

  • @Frank_G_Finster
    @Frank_G_Finster Рік тому

    I salute you for giving me this inside. I have learnt a lot in those 7 minutes and the wisdom will be put to use a lot. Thank you very much.

  • @igorrodriguez9942
    @igorrodriguez9942 6 місяців тому

    Great stuff, thanks a bunch! Added a signal to hitbox component with the attack position and knockback, now everything can be knocked back if needed :D

  • @MrMelonMonkey
    @MrMelonMonkey Рік тому +1

    Hey, so glad I found this channel. I love how you visualize these concepts and make it easy to understand. looking forward to see more of these videos. Keep it up!

  • @Outfrost
    @Outfrost Місяць тому

    Instead of one "component" node asking for another node directly, you can have it emit a signal, and connect it in the parent's script (character, actor, whatever it is). This way it'll be easier to implement special mechanics such as a boss ignoring damage at certain points in a fight. Similarly, instead of queue_freeing the parent node, emit a "died" signal - this will let you properly animate the death, spawn loot, etc. In general, avoid discovering sibling or parent nodes, and let the parent define how they all interact.

  • @davidjergus1138
    @davidjergus1138 Рік тому +7

    Extremely well explained ! You've earned a new subscriber. I would love to see how you use AnimationPlayer on the player and cows. I can't figure out a simple way to handle sprite rotation and animation update function.

  • @Visstnok
    @Visstnok 9 місяців тому

    Amazing! Wish I had this video way back when, but it's also damn good to get confirmation I've learned a whole lot from trying and failing.

  • @hoteny
    @hoteny 7 місяців тому

    This made me understand why i should ever use composition. Thank you, i had this problem with inheritance for too long.

  • @psyboyo
    @psyboyo 4 місяці тому +9

    Brackeys sent us!

  • @Chevifier
    @Chevifier 7 місяців тому

    This is pretty neat but just a tip for anyone watching, you dont need to save them as a scene if you declared its class_name. You can now just search for it in the add node window like any other node and it will show up as an extension of the node it erm extended. But its a preference anyway, to be able to just drag them in from the project folder is nice.😅

  • @user-or4ut2qi3q
    @user-or4ut2qi3q 9 місяців тому +1

    Hey, you don't have to make a scene for every component. If you just make a script with a class name, it will automatically add itself to the list of nodes and you can add it to your scenes from there.
    By the way, thank you for the video! Very well put together and well explained especially with the visuals in the beginning.

  • @Akab
    @Akab Рік тому

    Thank you, this really gave me visual pointers as to how such a system works. I am used to build similar systems from scratch but am still not used to the visual approach in contrast to doing it solely programmatically

  • @delqyrus2619
    @delqyrus2619 Рік тому

    I already knew about composition and inheritance but i never knew how to implement it properly in Godot. I never actually tried it and simply stumbled over this video. But it explains it actually great and i can't wait to experiment with it! I hope to see more of such content soon.

  • @SethTooQuick
    @SethTooQuick 9 місяців тому

    Yoo this is crazy. I had watched this video ages ago for fun, then recently found interest in SM64 rom hacking and found your tutorials. Small world.

  • @xananacs
    @xananacs Рік тому +1

    Very nice video, well done, well explained and useful.
    However I would recommend against splitting that much, you end up getting negative returns. For example, the hitbox can itself be the health component, until you actually need to split more (for most games, you don't). Choosing where to split should be driven by real-world constraints, just like your initial impulse to move away from class-based encapsulation. Always do the absolute simplest thing!
    Still, it's one of the best videos on the subject I've seen, I'll recommend it to people.

  • @filipkuzmicz8127
    @filipkuzmicz8127 10 місяців тому

    Thx, I'm currently switching from unity to godot, so explanations for design patterns in godot are really helpful. Great vid, had everything i needed for now