Hello Godotneers! Here I make tutorial videos for the Godot game engine. If you'd like to support me, you can do so at ko-fi.com/derkork . Thank you very much!
only thing I cannot understand is when we creating the particles at the center of portal, if we give some curve to x velocity then it becomes a line again; why is that happening?
Because the velocities add up. Say you have a particle that initially moves to -1, 1 (e.g. left and up) and you add a X velocity of 5. It will then move to 4,1 (right and a little bit up). So all the particles will now appear to form a line going to the right and will appear to emit from that line.
thanks for the video. looks to me like it would be very tedious to create a gui with godot. I've worked with pygame so far and I'm not sure if godot is right for me.
For being a non-native speaker, your voice has excellent cadence and the video is very clear and moves along nicely so it's always engaging. You have a talent for teaching. Very well done, subbed
I appreciate how you start with a quick-and-dirty solution and build up to demonstrating how one may not want to do it that way. This style helps teach the usefulness of the extra complexity and the *reason* why we do it that way. Not just that we *can* do it that way. For example, when you set the panel container's theme I thought to myself... I guess I need to create multiple themes if I want different reusable panel containers. But then later you demonstrated the issue, which is wanting a slight change to the theme's setting and showing variants. Thank you! 😁
Thanks Dear.. I have a problem for accessing nodes from different scenes but did not get the related video till now. Your video is outstanding too regarding your topic... Stay Blessed.
Glad you said youve phased out of using AI art in later videos, because this is probably one of the best if not the best tutorial Ive ever watched for any gamedev task. Good stuff
We should have more Godot tutorials like this, that really explains how to make the structure of your game better in a more conceptual way, bumping first into a problem and then the solution for it. I would like to see paid courses with teaching style like this.
It took me about a day of studying and copying the example projects, but I think I've gotten the hang of this now, and I'm already loving it. EDIT: Coming back to this comment after about a week using it. I want to start by saying the dev is very kind, responsive and patient, and helped me understand the system when I was struggling with it. However... I've come to the conclusion that statecharts aren't for me. I have a number of problems with this system, starting with the fact that all the code gets dumped into a single script file, which is a massive pain to work with. Sure, you can separate it out into different scripts, but then you have to start adding more nodes to the tree to hold those scripts, and the state chart is already a giant spaghetti mess, now I'm having to add even MORE nodes just to keep the code separate and readable? Another issue I have with it is the examples that come with the addon. You'd think you could get started by studying these... Well, I tried, and from an end-user perspective they're pretty awful. I was primarily using the "anthill" example to try to create a creature behaviour. So I looked at how the nodes are named, and they're all these very simple, shorthand names like "On Next Destination", "On Dropped", etc. So naturally, I copied this pattern in my own project because I didn't know any better. But as soon as my chart started getting more complex, I look at all these nodes and my eyes just glaze over like... wtf am I even looking at? This all means nothing to me! ESPECIALLY because, most of the nodes don't have any scripts or signals attached. Most of the signals happen higher up in the Compound or Parallel nodes that are handling all the subnodes. So I might have a deeply-buried transition node "On Food Picked Up", but if I'm following the anthill example, that transition uses no signals, has no script, so I'm staring at it having no idea how it's triggered or when, and I have to look further up the node chain, to "Picking Up", which has a state_entered signal to call _on_picked_up(), but this script STILL doesn't mention the "On Picked Up" transition anywhere, so I'm still left wondering how and why it's ever triggered, and more importantly, why my own project attempting to mimic this behaviour doesn't work correctly. Now, don't get me wrong: If I stare at it long enough, I can figure out when "On Picked Up" gets triggered, and I did get my behaviours working after hours and hours of troubleshooting. But it's so convoluted and not naturally-occurring at all, and the whole point of using an addon is supposed to make it easier to handle, not harder. My experience has been that this has made creating a state behaviour tree so much LESS manageable than even just doing it fully in code would be! Another thing that repeatedly tripped me up is how transitions can have a Delay, but regular state nodes can't. And the Delay doesn't seem to correspond with when the associated signals get triggered, so you end up with things being mis-timed because you expected the delay to happen *before* the code, not after. I'm not 100% on this because honestly I never really figured it out, it was too confusing. And maybe I missed something in the documentation, but nowhere does it seem to state the UTTER IMPORTANCE of what order the nodes are placed in the heirarchy. Not knowing the importance of this caused me so many headaches. Lastly, the lack of colour-coding on the node icons is a surprisingly big issue, too. They all sort of blend together being the same dull orange. Sure the pictures are different, but they're not massively different, all some variation of circles inside a bevelled box, and it takes a few more CPU cycles in the ol' brain to recognize what they are and understand what they're supposed to be doing. Ultimately, I think I'm not going to be using state charts moving forward. They may work for somebody else, but now that I have a slightly deeper understanding of how to use them (beyond the "ooh shiny!" stage I was at when I first saw this) it's just not for me. I wish the creator luck and I don't want to say this addon is "bad" by any means. It's just not for me.
This tutorial is a life saver. I learned to code with Python so I know and understand how to work with data. I've been working on a project in Godot that really needs a good data structure but there are hardly any tutorials that touch on how to use data in Godot. I can draw the exact structure my program will need but I can't find the syntax needed to build it in GDScript.
Funny, I was skipping ahead a bit on my own and by accident made the exact same mistake as in the video, with lower case letters for dictionary entries. Found it and fixed it then continued the video and saw that you created the exact same problem for yourself.
I find that a lot of tutorials spam out instructions without explaining them. Sometimes that's enough I guess but overall I prefer your approach. Very helpful for actually learning and understanding.
Nice video actually. Starting out, it seemed like it was way too basic, talking about how to open the script editor etc, but 45 minutes in, I've felt like I've actually learned quite a bit about the fundamentals! Thank you
40:11 Did you change something to make your title and text stay at the top of the box? On mine, if I stretch it vertically, they seem to be centered in their own "section" of the vboxcontainer so they become more and more spread out as I stretch the box instead of staying at the top like yours.
There is a spacer control added between the main text and the buttons and this spacer is set to grow. So Godot will only give the title and main text the space they absolutely need and give the rest to the spacer control. This way the spacer control "pushes" the two other sections up.
@@godotneers I do have that spacer, and it was expanding, but all 3 components (title, description, spacer) were expanding equally. I've unchecked "Expand" on both the title and the description which fixed the issue! Thanks for the tip!
If for some reason the Godot Resource Group plugin is not detecting any changes done try manually rebuilding all resource groups using the main menu entry Project -> Tools -> Rebuild project resource groups.
Would you open up a ticket at github.com/derkork/godot-resource-groups/issues/new and maybe give some additional information about your setup? This would very much help in getting the problem sorted out. Thanks!
Hello, thank you for the plugin but there's seems to be an issue with your plugin if used with Dialogic, the project builds but it also messes up with dialogic's resources. Disabling the addon before exporting fixes the errors but I am not sure if that will cause some bugs in the future.
Could you open an issue on GitHub for this, please and maybe attach a small example project to reproduce it? This would help getting a solution. Thank you very much!
Great tutorial; using a simple real-world use case makes the video very approachable. Don't know if anyone else picked up on this, but there is a typo in the code as the first Vector3 should have been (1,0,1) not (1,0,0) as written. Not quite sure how the shader worked correctly still but I'm guessing that there wasn't much blue content in the sprite...
@@godotneers I guess that in itself highlights another important point about programming - don't always trust the output and test with several use cases, because sometimes the bugs are hidden, as we saw. I offer that advice to others as I have definitely been guilty of not following it myself, and it has led to anguish haha. Anyway, keep up the great videos. Think I've enjoyed every one I've watched so far, and definitely learnt something in each one too!
Hey Godotneers! I really enjoyed your lesson, but I have a couple of questions. What if let's say our tools have a durability which will be changed at runtime? Is it even possible to store it using resources, since we set the scene path for the resource manually? I know it's probably a dumb question, but I'm just learning, so I would appreciate any help. If possible, could you write down what is the best way to create an inventory system with items which have stats that change at runtime?
Well this will complicate matters a tiny bit, because now we have static data (which is the item description) and dynamic data (which is the current state of an item). So say we need some item with durability we can create a new class maybe "ItemInstance" which has two properties: the item (e.g. a variable of type "Item") and its durability. The point is that "ItemInstance" is something you always would create in code based on a static "Item" definition, you would not create "ItemInstance"s as .tres files - because "ItemInstance" models dynamic data where "Item" models static data. Also our "Item" class would now get an additional property "max_durability" or something like that so that when we create a fresh item instance we can fill its durability with something and also during repairs we know how much the durability for any item instance can go. So now everything that used "Item" before, now uses "ItemInstance". So our pickup would get an ItemInstance (e.g. a pickaxe with 50 durability) and our inventory dialog would also use "ItemInstance" instead of "Item". Because "ItemInstance" still has the underlying item in it we can still create 2D or 3D representations from it. The "ItemInstance" just contains the non-static parts, like the durability. This same technique can also be used to do something like a buffed weapon which has some modifiers applied to it.
I am so glad that people like you exist. I personally have a strong background as a fullstack engineer and just wanted to have a look at gamedev. There is almost no video that explains the concept better than this one. I am a beginner in gamedev but not in programming and I felt completely understood. Providing such knowledge for free AND making it understandable is not a matter of course.
I know we live in a wonderful time, where we take for granted the internet is a thing, and information is "free"...but it's not. You spent your time to teach me how to do something that I've always wanted to do. I want to say thank you so much bro. Your time spent has changed someone else's path in life. ✌❤
@37:56, when you wound up with 2 axes. It took me a minute to realize what was going on. I figure the whole point in hiding and showing a dialog is so you don't have to rebuild your slots. Wouldn't it be better to use a call back function (signal?) to add a slot to your inventory when you pick something up? That way you add things 1 at a time, instead of deleting and rebuilding all the slots? Imagine having to do that with a 100 items or more in your inventory lol.
There is always more than one way of attacking a problem so yes if you'd like you can of course add some more complex code to only do the work you absolutely need. Then again, even for 100 items it would probably be fine. In general I tend to delay implementing such optimizations until they are absolutely necessary. This is because the additional bookkeeping will increase code complexity and more often than not stuff just works fine - even if you do it the simple way. E.g. even if adding 100 items will take 10ms of frame time (which I haven't measured but just for the sake of the argument) you only do it for one frame when you open the dialog and it's not even going to be noticeable. So that optimization effort is probably better spent elsewhere. I also always use the profiler to find out bottlenecks because way too often what I think could cause a performance problem really isn't causing it and the cause is somewhere else.