Godotneers
Godotneers
  • 10
  • 724 355
Particle Systems in Godot - Part 1: Getting started in 2D
Hello Godotneers! Did you ever want to create nice visual effects for your game? Then you probably have stumbled upon Godot's particle systems. And maybe you were a little bit overwhelmed by all the settings and features that Godot's particle system nodes provide. So we're going to explore how particle systems work and how to configure them so they produce the effects that we want.
We're also going to look into how we can let particles interact with our world, how we can produce interesting effects like water splashes with particle subemitters, how to use particle animations to make our particle systems look more realistic and how to create effects with particle trails. It's going to be a fun ride, so fire up Godot and follow along!
Table of contents
===============
00:00 Introduction
01:05 A basic particle system
02:55 How particle systems work
06:27 Controlling movement
09:49 Randomizing settings
10:39 Changing settings over time
12:53 Combining settings for complex motion
16:27 Pre-processing particle systems
17:25 Emission shapes
18:44 Caveats when duplicating particle system
21:01 Creating complex emission shapes
26:35 Clipping
27:14 Rain
29:49 Particle velocity settings
32:26 Controlling particle visibility
34:19 Particle collisions
36:00 Collision modes
37:22 Creating water splashes
39:36 Aligning particles to their movement
42:06 Spawning all particles at once
42:55 Particle Sub Emitters
43:46 Subemitter modes
44:15 Sub emitter particle count limits
46:47 Particle animations
47:18 Using spritesheets for realistic smoke
48:53 Setting up the spritesheet
50:11 Controlling the spritesheet animation
52:16 Particle trails
54:38 Controlling trail behavior
56:32 Fixing visual trail artifacts
59:25 Using color ramps
1:00:48 Fixing trail pop out
1:01:53 Conclusion
Useful links
==========
The example project that we use in this video - github.com/godotneers/particles-video
Godot documentation for particle systems - docs.godotengine.org/en/stable/tutorials/2d/particle_systems_2d.html
If you'd like, you can support me - ko-fi.com/derkork
zhlédnutí: 7 639

Video

Learn programming with GDScript (Part 2)
zhlédnutí 8KPřed 2 měsíci
Hello Godotneers! In this second video about learning programming with GDScript we'll look at what objects, properties and methods are and how we can describe them in classes to model real-world objects inside of a computer program. We'll also check out what Arrays and Dictionaries do and how we can use them in certain scenarios to make lists and look-up-tables and streamline our code quite a b...
Learn programming with GDScript (Part 1)
zhlédnutí 31KPřed 3 měsíci
Hello Godotneers! Do you want to make games with the Godot game engine but don't know how to program? And you don't want to take a full computer science course just to get started? Then this video is for you. We're going to explore the absolute basics of programming with the GDScript programming language. We'll find out how functions work, what variables are and how we can make decisions and lo...
Data models - using data to create extensible, maintainable games in Godot
zhlédnutí 107KPřed 4 měsíci
Hello Godotneers! Every game revolves around data. Your game may have items, unit types, crafting recipes, dialogue, quests and a lot more. Handling all this with nodes can become quite difficult over time. In this video we are exploring how you can use data models to represent these game elements. We'll look at a simple implementation of making an item database and improve this by using Godot'...
Saving and loading games with Godot
zhlédnutí 41KPřed 6 měsíci
Hello Godotneers! When you make a game, you will eventually want to add a system for saving and loading games. This can become surprisingly difficult as your game becomes more complex. In this video we're going to explore how we can save all revelant information from our game and load it back, how to make sure we can still load old saved games after we updated our game and how we can deal with ...
Welcome to Shaderland - An introduction to shaders in Godot
zhlédnutí 107KPřed 7 měsíci
Hello Godotneers! Have you ever wanted to use shaders in your game but found that they are some sort of black magic? In this video we're going to to explore how shaders work in Godot and how to write shaders both in Godot's visual shader editor and Godot's built-in shader language. We cover both vertex shaders and fragment shaders, so that after you've watched this video, you should have a soli...
Godot Components - how to structure a game into manageable parts (Beginner/Intermediate)
zhlédnutí 132KPřed 8 měsíci
Hello Godotneers! When you are creating game in Godot, it is often hard to decide how to structure all your nodes and scenes. Which nodes should go into which scene? Which nodes should talk to each other and when? This video explores ways in which you can create self-contained components in Godot and shows techniques that allow components to access other components and communicate with them whi...
Godot UI Basics - how to build beautiful interfaces that work everywhere (Beginners)
zhlédnutí 210KPřed 9 měsíci
Hello Godotneers! Building a nice-looking user interface Godot that works across screen sizes and aspect ratios can be quite a daunting task. This video will provide you with the basics that you need to build your very own user interfaces with the Godot game engine that work everywhere. With it you get a good foundation on which you can build in your future adventures. 00:00 Introduction 00:50 ...
Node paths - find any node in your Godot scene (Beginners)
zhlédnutí 19KPřed 10 měsíci
Hello Godotneers! One of the most asked questions in the Godot discord is: "How can I change a property of another node through a script?". Accessing other nodes is a fundamental technique needed in every Godot game. In this video we'll explore how you can access any node anywhere in your scene no matter where it is located in the tree. And we'll check out a seriously awesome technique to make ...
State machines and state charts in Godot
zhlédnutí 61KPřed 10 měsíci
Hello Godotneers! With the Godot State Charts library you can easily create complex behaviour in your game with very little code. In this video I'm giving you an overview on the features and how to use them. Links: - State Charts library - github.com/derkork/godot-statecharts - Manual - github.com/derkork/godot-statecharts/blob/main/manual/manual.md 00:00 Introduction 00:30 Installation of Godo...

Komentáře

  • @martinithechobit
    @martinithechobit Před dnem

    Ty sirs.

  • @ExpertPeeb
    @ExpertPeeb Před dnem

    absolutely wonderful tutorial. thanks so much!

  • @mohamedSGH420
    @mohamedSGH420 Před dnem

    Guuuys, i ve just found a hidden gem

  • @friendlyreptilian3767

    amazing tutorial! thanks a lot for your efforts

  • @VarunSingh-mj6xc
    @VarunSingh-mj6xc Před 2 dny

    A very high quality tutorial with a carefully chosen running example. Thank you for your efforts!

  • @ayyasif
    @ayyasif Před 2 dny

    You have the best tutorials about godot, can you make a video about animation and animation tree

  • @user-anlieyouxibaike

    🙂

  • @friendlyreptilian3767

    thanks!

  • @tower1990
    @tower1990 Před 2 dny

    My favourite Godot/Programming channel. Thank you! Can’t wait for the next one.

  • @charlymarchiaro
    @charlymarchiaro Před 3 dny

    Really, really excellent tutorial. Thanks so much for this. I'm glad I've found your channel.

  • @bread8176
    @bread8176 Před 3 dny

    The shader graph seems way more complicated than just writing some code.

    • @godotneers
      @godotneers Před 2 dny

      I personally prefer writing code as well but the graph can be very useful for non-programmers so they don't need to fight with the syntax. Another feature I really like is that you see an intermediate result for each node, which can help in debugging.

  • @georgeml-o_o
    @georgeml-o_o Před 3 dny

    Me watching the video: wow SOOO simple, what an awesome teacher. Me in godot: Let me watch the tutorial again.

  • @Tokaint
    @Tokaint Před 3 dny

    Hands down best godot tutorial I've watched that is actually easy to understand for beginners. Please keep up the use of simple words and simple situations for people who have no idea what all these technical terms mean yet. I'm not needing to ask myself what the heck does [Insert Technical Term] Mean every 2 minutes. (Instantly subscribed)

  • @TheHoinoel
    @TheHoinoel Před 3 dny

    this was great, thank you :)

  • @Reinami66
    @Reinami66 Před 4 dny

    Not sure if you check these older messages, but you mention these "contracts" in various other videos as well, and the idea works great, but the problem i have is that you could typo the "contract" by having a typo in the function name as well, is there a way to define specifically the contract? In other languages you would do this for example as an interface, is such a thing possible in gdscript?

    • @godotneers
      @godotneers Před 3 dny

      Unfortunately GDScript has no interfaces. It's something that certainly would add value and there is an open feature request for that (github.com/godotengine/godot-proposals/issues/4872) but I wouldn't expect anything like that to materialize anytime soon. For now the only option is to double-check that there is no typo or go with C# which has interfaces.

  • @gabrieladelemoni7576

    Just subscribed. You have no idea how invaluable your videos have been. I think I'll be working with the Godot engine for a very long time and if you keep posted content similar to these videos on your channel, I'll keep watching and learning from them. Thank you.

  • @RebelliousX
    @RebelliousX Před 4 dny

    Simply the best Particle tutorial for Godot I have ever seen so far. You deserved subscription 👍👍

  • @twirlincurtis
    @twirlincurtis Před 4 dny

    I would just like to thank you for being so thorough in your explanations of Godot! I really REALLY appreciate that you go into the reason behind all your decisions in these videos. Keep up the fantastic work!

  • @mr_wormhole
    @mr_wormhole Před 5 dny

    best video on godot UI system

  • @taylorfisdboss5200
    @taylorfisdboss5200 Před 5 dny

    This is so densely packed with useful stuff. I'm definitely on the edge between novice and intermediate with Godot, so some of this is a little hard to grasp, but you make everything so simple to look at and understand! I've been going back and changing my project's code to be less brittle using a number of small things that you do in this video. I can't wait to figure out exactly how to use the classes and custom resources and data structure elements you go through. I feel like I'll probably have to re-watch this several times as I go to pick it all up. Thanks for the excellent resource!

  • @Korn1holio
    @Korn1holio Před 5 dny

    You're an amazing teacher and your contribution to the community is immensely valuable.

  • @jeredc.3219
    @jeredc.3219 Před 7 dny

    Id love to see a tutorial about randomness. Like the randomness you see when drawing Scrabble tiles from a bag. I have a board game idea from years ago that i want to create and ive learned a bunch about pixel art graphics and general 2d construction and container but im still very much a novice of coding. there doesnt seem to be any great video on the topic. also how would you get the pool of letter tiles to be correctly apportioned.. x of A, x of B, x of C ect. Another interesting thing would be storing data in tile. like the double\triple word score tiles. Maybe even building a small dictionary of 10 two letter words to show how to make those tiles to remove themselves and then score points. also how to force the tiles to only allow adjacent placement.

    • @godotneers
      @godotneers Před 6 dny

      Thats a lot of interconnected systems and answering this in a comment isn't really possible. But to give you some ideas... A simple bag can be implemented by an array. Say you have a custom class named `Tile` which represents a letter tile. This has the actual letter, the point score for this letter and maybe a reference to a visual representation of the tile. Now you can create say 5 instances of the A tile, 7 of the B tile, etc.. and add all instances to an array - which represents your bag. Now you can just pick a random number between 0 and the array size and then remove the tile at this index from the array. This way you have simulated dragging from a bag of random tiles where you have full control over how many of each tile are in the bag. As for scoring, you would probably need extensive word lists to check against. So get the word the player has laid out and check if it is a valid word .Because each tile has the letter multiplier in its data you can now calculate a score from the involved tiles.

    • @jeredc.3219
      @jeredc.3219 Před 6 dny

      @@godotneers Interesting.. Like i said im still a novice but the truth is thats about the logic i was thinking was involved. thanks you for the reply.

  • @alexbrau3311
    @alexbrau3311 Před 7 dny

    Your lectures are priceless!

  • @xalanot6823
    @xalanot6823 Před 7 dny

    Great tutorial! But I would have one question left. Is there away to "chain" shaders. For example I have a shader that animates the "idle animation" of an enemy and then I would like to have a shader that does the "on hit animation". Do I need to write all of this in one shader file?

    • @godotneers
      @godotneers Před 6 dny

      For 3D shaders you can actually run multiple shaders. Materials have a "next_pass" property to which you can assign another shader material. However for 2D shaders this is not a thing, so everything needs to happen in a single shader/pass (which makes things like blur really inefficient as you cannot optimize it through a multipass shader). Another option would be to write some code that generates shader code on the fly and this way combine multiple behaviours into a single shader.

  • @taylorfisdboss5200
    @taylorfisdboss5200 Před 8 dny

    We love a creator who pronounces the engine’s name correctly

  • @dabu87
    @dabu87 Před 8 dny

    Fantastic tutorial, thank you! I wonder how we would extend this to account for systems that change an individual item at runtime? For example, what if the pickaxe has a durability value that is decreased with use. In that case, we wouldn't want to change the durability for all pickaxes in the game, just for the one in use.

    • @godotneers
      @godotneers Před 6 dny

      In this case you'll probably need another layer of models. You could do a static model , which only contains the un-changing base data (e.g. max durability, references to a visual, other static stuff). Then you'd have a wrapper model which refers to the base model and adds per-instance settings, like current durability, any applied buffs, etc). class_name ItemInstance var item:Item # the underlying item var durability:int # the actual durability Another option would be to just duplicate an item using the duplicate method and give the copy to the player's inventory. Then each copy has it's own durability. However this can be harder to migrate when you do balancing patches to your game (e.g. increase max durability for pickaxes) because now all the copies still have the old max durability. So as usual, you can decide which problem you'd like to have ;)

    • @dabu87
      @dabu87 Před 6 dny

      @@godotneers Excellent, thank you so much for the detailed and helpful response!

  • @wilkerl6159
    @wilkerl6159 Před 8 dny

    Great!

  • @danieljayne8623
    @danieljayne8623 Před 8 dny

    I watched the whole thing, thank you for providing content about the right way to do things instead of just alluding to doing it differently in a production codebase like others sometimes do.

  • @Cluxiu
    @Cluxiu Před 8 dny

    Legend.

  • @SaudBako
    @SaudBako Před 9 dny

    1.5 hours is just too much. Plus I need to tinker with it myself. So this single concept became a whole course.

    • @godotneers
      @godotneers Před 6 dny

      Sure, take your time. No need to do everything in one sitting.

  • @FelipeMAPT
    @FelipeMAPT Před 9 dny

    I'm wondering what would be like in games like Fallout Shelter where you have 2 Body2D that must be inserted into an area, like a room, and when that happens it starts some function....but thanks for the video. But I'm looking for something in the style of Fallout Shelter....how to make a Side-View Management game....2 months trying learn to start my project and nothing....i'm stuck.

    • @godotneers
      @godotneers Před 6 dny

      Well the thing with "how to make Game X" - tutorials is that they are highly specific to a game and if you want to do something slightly different then you're stuck. I call these kinds of videos "recipe-style" tutorials. They give you a recipe to follow and you don't need to know how everything works - you just follow the recipe and get a result. The problem with this approach is that you never learn why stuff is done the way it is and the concepts behind what is shown in the video. So this kind of video is super nice if you know actually how stuff works and just look for a neat technique for a specific problem. But its not very useful if you don't know the basics of the engine and try to build a game from nothing. The most important skill really is to be able to dissect a problem in to smaller problems and then find solutions for these smaller problems. So start really small and simple and work your way up. Instead of trying to do a full blown 2d management sim, first try some simple things that you can later use in your final game. E.g. say you want to make a trigger that does something when the player steps on it (e.g. a door automatically opening for the player). How could that work? We dissect the problem: 1. We assume we already got the player movement done. 2. We need something that can detect if the player walks over it. 3. We need a way to notify our door to open close as the player enters or exits the trigger. So now we can find solutions for these problems. E.g. we can find out that there is a thing called Area2D in Godot which can detect when it overlaps with other Areas or Bodies. This sounds like it could be useful for Problem 2. We can also find out that Godot provides a thing called "signals" which allow us to notify objects when something interesting happens. This sounds like it could be useful to solve problem 3. Now we have new, more specific problems: 1. We need to find out how Area2D works and how we need to set it up so it detects our player. 2. We need to find out which signals Area2D provides and see if one of them can be used to notify our door. 3. We need to react to the notification in our door and open/close it. And so on... You see that even this very simple example requires a lot of thinking, looking up stuff and problem solving. And this is very very difficult at the beginning when you have no experience to rely on. So don't be discouraged if you haven't made your 2d management sim in 2 months. Developing games like this really takes a long time (e.g. Fallout Shelter took 5 years to make and was made by a team of seasoned developers at Bethesda).

    • @FelipeMAPT
      @FelipeMAPT Před 6 dny

      @@godotneers Thank you soo much.....actually yesterday i watch a video from a woman dev here on CZcams and she explains all the problems she had and how she solved....and it's literally the same thing you explain here. Breaking the ideas into small pieces. Thanks again, i will change my aproach.

  • @GSH.Marketing
    @GSH.Marketing Před 10 dny

    The best godot UI video ive ever seen. earned yourself a sub, a comment, a like and all the appreciation. You saved my project xD

  • @Modercagry
    @Modercagry Před 12 dny

    I don't see anyone else mentioning this problem, so this might have been just me. When trying to load either the start or main branch of the Godot project it was unable to load because player.tscn was "missing" the dependency of mr.g.glb even though it was definitely there and in the same folder. The fix I found was to open the mr.g.glb scene, go under the AnimationPlayer, and disable "Save to File" for both animations, then reimport.

  • @Donahue9389
    @Donahue9389 Před 12 dny

    The article on save game compatibility is exceptional. Fantastic work!

  • @thewolfwizard6494
    @thewolfwizard6494 Před 13 dny

    this might be a dumb question, but the game I am working on has resources for different things, ex. a stats resource that stores the variables for stats and can be dropped on anything that needs them, and am wondering if there is a way to store those in a different resource so that I only have to save/load one thing, I tried doing it with my knowledge and couldn't figure it out

    • @godotneers
      @godotneers Před 13 dny

      I'm not sure I understand what you're looking for, but in general you can nest resources. So your stats resource can be a property of another resource and Godot will automatically save nested resources with their enclosing resource.

    • @thewolfwizard6494
      @thewolfwizard6494 Před 7 dny

      thank you, I'm still not there yet but this definitely has sent me down the right path, what I was trying to do was make a savedata resource that would hold different stat resources that I could just put on the character/enemies, but the data in the nested resources seems to get lost somehow, still have a few leads that might help, but if not will have to go back and save stats individually

  • @alexbrau3311
    @alexbrau3311 Před 13 dny

    Alter Schwede, du bist ein Deutscher!😂 das finde ich ja obergarndios! Ich wusste es 🎉

  • @LadnoGaming
    @LadnoGaming Před 13 dny

    Great tutorial! I have a couple of questions. How do I make the inventory to update contents instantly when picking up items? Currently it only displays items when you refresh the inventory UI. Second question would be, how would you add modifiers to items? For example, give axe + 10% damage or +20% attack speed? Thanks again!

    • @godotneers
      @godotneers Před 11 dny

      You would need to notify the UI that something has changed so the UI can refresh. This could be done with a signal or by sending events to a group. As for the modifiers, this is a pretty deep rabbit hole to get into. In general you can of course add a Modifier class which has some effects stored in it and can add a list of these modifiers to each item. The tricky part is though that modifiers usually need to trigger at certain times in the game and this may be different for each modifier. So it's really not possible to give an answer that just universally works as the exact mechanics and data models are highly game specific. In all but the simplest cases this is going to be a lot of work and iterations to find a workable solution.

    • @LadnoGaming
      @LadnoGaming Před 11 dny

      @@godotneers Thanks a lot!

  • @MrRed2611
    @MrRed2611 Před 13 dny

    Great video, one question. For futher expandibility of the project is not better if in 37:00 the fish instead of calling directly themethod when collide it send a signal to an andler and the endler set the damage? is not easyer implement modification or status effect inthis way or it's just stack extra steps with no reason? yeah I answered at myself while coding. you can just implement status flags inside the turret no need of a third party. BTW I'm trying to code as hobby and your videos are amazing thx for your work. You really helped me making some progress, I was stucked in tutorial hell.

  • @LeeDesignStudioYT
    @LeeDesignStudioYT Před 13 dny

    Thank you so much for this! As a super new beginner, you made this really easy to understand! <3

  • @G3neric_art
    @G3neric_art Před 14 dny

    Awesome loved the tutorial. :) 1:00:15 Any reason for not just going with vec4 and keep the alpha as a const?

    • @godotneers
      @godotneers Před 13 dny

      Yes I could just have multiplied this with a vec3(1,0,1,1) but I took this more roundabout way to show that we sometimes have to do conversions in shader code (as opposed to the shader graph which does this automatically) and to show how swizzles could be used.

    • @G3neric_art
      @G3neric_art Před 10 dny

      @@godotneers totally legit. :) Keep up the nice content.

  • @SamuTheFrog
    @SamuTheFrog Před 14 dny

    this was so comprehensive I couldn't possibly remember everything from one watch, so I'm back for my second watch. Great video, can't imagine the time it took to script this out, record it, and edit it.

    • @godotneers
      @godotneers Před 11 dny

      It takes a good while. Research and scriptwriting is usually about a month of work. Audio and video recording is pretty fast once you got the script. Editing usually takes another week, so we are roughly at 4-6 weeks per video. I'm doing this in my spare time though, so a person doing this full time will likely be a lot faster.

  • @pizzaturtle6226
    @pizzaturtle6226 Před 14 dny

    You are awesome

  • @jasonbinney2979
    @jasonbinney2979 Před 15 dny

    Your teaching style is awesome and is exactly what ive been looking for when learning Godot. Thank you!

  • @martinithechobit
    @martinithechobit Před 15 dny

    Ty again. The very basic tabs explaining is very helpful.

  • @martinithechobit
    @martinithechobit Před 16 dny

    This is the real work here.

  • @martinithechobit
    @martinithechobit Před 16 dny

    Thanks yall.

  • @imptea
    @imptea Před 16 dny

    I could tell within the first 5 minutes this was going to be a great tutorial. Really made a lot of sense. Now I need the tutorial on spatial shaders!

  • @dajoma36
    @dajoma36 Před 16 dny

    This information is very helpful. Thank you.

  • @xbrc70
    @xbrc70 Před 16 dny

    The way you educate helps me have a deep understanding and the confidence to solve my own problems in the future! Thank you so much for putting so much thought and effort into planning and creating these lessons!

  • @SattarPahlavan
    @SattarPahlavan Před 16 dny

    very useful feature and explained very professional