MmmmmDonutsHi all, this is Part 3 of Let's Create a 3D Starfield Together in Godot! In this part we will work on procedurally generating the starfield. We'll use code to build the star field so it's viewable in the editor using the @tool function. We will set export variables to be able to modify it. You still need to reload the scene to update. We will also work through getting glow working in the 3D environment.
Lets Create a 3D Starfield Together in Godot! Part 3: Procedurally generating the star fieldMmmmmDonuts2025-05-18 | Hi all, this is Part 3 of Let's Create a 3D Starfield Together in Godot! In this part we will work on procedurally generating the starfield. We'll use code to build the star field so it's viewable in the editor using the @tool function. We will set export variables to be able to modify it. You still need to reload the scene to update. We will also work through getting glow working in the 3D environment.
Part 1: setting up the mesh, and LODs youtu.be/NwOuSnqSK_c Part 2: setting up the material and shader for the stars youtu.be/gINZb4kcEB8Beginners Project About Jitter in GodotMmmmmDonuts2025-11-20 | Hi all, I made a brief showcase project to look at the various settings that affect jittering in Godot. I encourage you to download the project and follow along since only so much will be visible in the youtube video and it can be helpful for you to see for yourself what settings changes do. All of the settings have analogs in the Project Settings.
Set your monitor's refresh rate to a value higher than 60hz (if available) or if not, set your physics tick rate to a value less than 60 such as 45 to see the jitter issue as well.
Godot docs about Jitter and Physics Interpolation here: docs.godotengine.org/en/latest/tutorials/rendering/jitter_stutter.html docs.godotengine.org/en/stable/tutorials/physics/interpolation/index.htmlDelegate Deep Dive: A Guide to Function Pointers, Delegates, and Events in Unreal C++ and Godot C#MmmmmDonuts2025-10-28 | Hi all, this tutorial is a deep dive into delegates which form the backbone of Event systems and Callbacks in game engines. We'll start with making our own rudimentary delegate system in C/C++ to understand how collections of function pointers work to make this system. Then we'll explore Unreal's Delegate system followed by the event system in Godot C#.
00:00 Intro 04:15 Function Pointers In C 31:13 Function Pointers in C++ 35:58 Delegate List in C++ 44:17 Function Pointers to Member Functions in C++ Classes 1:19:16 The Alice Event System 1:46:50 Through The Unreal Looking Glass 2:35:24 Unreal Dynamic Delegates 2:54:30 Godot C# EventsHandling Different Screen Resolutions and Stretch Modes Dynamically in GodotMmmmmDonuts2025-06-11 | Hi all,
I made an introductory project to play around with and this companion video about handling different screen resolutions dynamically in Godot. I hope it's helpful. The project is here on github github.com/mmmmmmmmmmmmmmmmmmmdonuts/GodotMultipleResolution2DTutorial The docs have an excellent write up of course: docs.godotengine.org/en/stable/tutorials/rendering/multiple_resolutions.html There are also good projects to look through particularly for 3d like the viewport scaling demo: github.com/godotengine/godot-demo-projects/tree/master/viewport/3d_scalingSprite2D Jitter When Camera Pans, slow motion capture of monitorMmmmmDonuts2025-05-21 | This is a slowmotion video of my monitor. The "ship" is steadily moving in the process function at position.x = 10.0*delta. The large Sprite2D of the mountain seems to slowly but smoothly move. However the two color boxes are Sprite2Ds with unscaled solid color PNGs. The edges seem to pulse. The ship (which has a camera2d as a child) and background sprites are all siblings. Since they are all siblings of a node 2d, in theory the red and white boxes should move smoothly with the mountain but they seem to pulse back and forth.
What's interesting is in the second half of the video, when we get to the edge of the large sprite2d mountain, you can see the edge is doing some of that pulsing behavior as well, eating into the left side and pulsing a bit.Backgrounds using color rects or scaled (but not unscaled) TextyureRects have a visual jitterMmmmmDonuts2025-05-20 | Hi all, just something I was noticing doing a simple project. The backgrounds I was using with ColorRects were noticeably vibrating when the camera was following the player. The same happens in scaled TextureRects (meaning I set a minimum X/Y size using the same image but oddly not when I used the full unscaled png image in a TextureRect
Steps I tried to mitigate: 1)I made sure to try in Exclusive Fullscreen mode since in Windows there can be hitching if you aren't doing that even in simple 2D projects, but there was no change 2) My monitor is set to 60 Hz, my physics tick is 60/s (and I'm not even using physics process) 3) I tried both with camera smoothing turned on and off 4) There is no stretch or any other combination 5) I tried in both Godot mono and Godot both versions 4.4.1 and saw this issue 6) Tried with a sprite 2D as a background and unscaled it seemed to also not display any jitter 7) Using an SVG as the "ship" also produces an odd vibration on its own but using a PNG as the Sprite2D texture seemed to fix that issue.Lets Create a 3D Starfield Together in Godot! Part 2: Star ShaderMmmmmDonuts2025-05-18 | Hi all, this is part 2 of Let's Create a 3D Starfield Together in Godot! We will be adding a shader that changes colors based on distance from the camera to the star.
Part 1: The first part is we create the mesh we will use for stars and go over automatic LODs. youtu.be/NwOuSnqSK_c
Part 3: We get to work on procedurally instantiating the meshes to make the starfield, and set up some export variables to view them in the editor itself. youtu.be/kQ8-5-DPzNgLets Create a 3D Starfield Together in Godot! Part 1: LOD of Work to DoMmmmmDonuts2025-05-18 | Hi all, in this tutorial we'll be making a 3D starfield with mesh instances you can eventually fly around in or use for a space background. I try to explain everything in detail so the videos are a bit long 😬
Part 1: We'll create a mesh in Blender, import it into Godot, and discuss LODs Part 2: We'll create a shader material for the stars to fade to different colors based on distance. Link here: youtu.be/gINZb4kcEB8 Part 3: We'll use code to generate the starfield instances and set parameters to make our starfield unique. youtu.be/kQ8-5-DPzNg
GDQuest's courses which I highly recommend are at gdquest.com
Grant Abbit is an amazing Blender tutor and has lots of courses. His Youtube channel is here (linked is a free Blender 4 tutorial) youtube.com/watch?v=lLqep5Q4MiI but he also has lots of paid videos which are excellent on Udemy and GameDev.tv to get going on BlenderBit Flags (and Enums) For Beginners in Godot 4MmmmmDonuts2025-05-15 | Hi all, I made a tutorial video to explain bitwise flags. It's yet another long winded explanation but I hope it helps to explain them a bit...(I'll see myself out...) They're used all over and you'll see them a lot in programming so it can be helpful to take a minute to understand them.
There were a couple errors I said, for instance, 32bit ints can hold 2 billion signed values and 4 billion unsigned not million. The MOD flag should have been 1 not 0 (though you'll see later when using the bit literal 0b00001 that it is indeed set there correctly.
You do NOT need the leading 000s they're just there to help keep things organized. You DO need the trailing 000s of course. therefore 0b00001 is exactly the same as 0b1. It's just nicer to line things up for reading.
Let me know if you have any questions!(Outdated!!) 2D Smoothing Movement in Godot using LawnJellys Smoothing PluginMmmmmDonuts2023-11-08 | Now use physics interpolation! docs.godotengine.org/en/4.4/tutorials/physics/interpolation/index.html In more recent versions of Godot, this issue has been improved with physics interpolation. As of now, it is not enabled by default so you have to turn it on! Have a look at the docs on how to turn it on.
I'll leave the video up for people who are using older versions of godot and happen to stumble on this.
Hi all, I was trying to make things look smoother using Lawnjelly's plugin and so I thought I'd share how I did that if it helps someone else get nicer looking movement particularly if you have a high refresh rate monitor and a pixelart project with a stretched out canvas which seems to give things the worst looking movement. Not sure how well it works if you stick to strict pixel perfection.
It seems a combination of putting the player sprite under the smoothing2d node and enabling camera position smoothing seems to be the trick to get things working jitter free on a higher refresh rate monitor.
00:00 - Intro 04:48 - Lawjelly's Plugin Download and Using 09:17 - How smoothing (kinda, sorta, not-really?) worksLets make a Jack-o-Lantern Glowing Green Eyes Shader in Godot 4!MmmmmDonuts2023-10-31 | Hi all, let's use what we know of shaders and maybe add an if/else statement to make a jack-o'-lantern with glowing green eyes! Obviously you can put a lot more effort into making your pumpkin look nicer than mine :PGetting Started with 2D Shaders in Godot 4 (Part 3) Time to TEXTURE and Mask!MmmmmDonuts2023-10-31 | So we're finally making some progress! We'll add a character and make 'em glow red! Then make a checkerboard mask and make cutouts on 'em. Sorry fumbled around a little at the beginning with the UV coordinates and am too lazy to edit the video. It turns out the UV coordinates are indeed for the entire underlying texture (which is big because of the animations!) and not just for the visible area. That's why our sine wave over it is so much more spread out than for our angle. But hey, we're all learning here! And I did disclaim I wasn't an expert :PGetting Started with 2D Shaders in Godot 4 (Part 2) Uniforms are a Sin(x) of the TIMEsMmmmmDonuts2023-10-24 | Alright here in part 2 of the guide to shaders we'll go over uniforms, the TIME magic variable, and using the sin(x) function all together to give us some recurring patterns. In part 3 we'll start to learn how to apply these to textures to start making effects on our sprites rather than just using rectanglesGetting Started with 2D Shaders in Godot 4 (Part 1) Intro, COLOR, and UVsMmmmmDonuts2023-10-24 | Hi all, here's the first of (hopefully) a multipart series to getting started with Shaders in Godot 4. In this video we'll start with making our first fragment shader and diving into what the COLOR and UV keywords are. This tutorial is for those who are struggling with shaders. We'll review over and over a few times to try to get some of the concepts to stick. If you're looking for a quick guide, this is definitely not it. It also won't get advanced. But hopefully with the building blocks you can go on to understand some of the amazing shaders people are making and using in Godot 4.
In the next parts we'll explore using GDScript, how to make gradients, how to use TIME and sin(x) to influence the gradients and then finally work on using textures and masks.
Full disclosure: I definitely am still learning the basics of shaders too, so by no means do I purport to being an expert, but hopefully I can convey at least a rudimentary understanding.
The book of shaders is here: thebookofshaders.com GD Quest's excellent (and much quicker) getting started with shaders is here: youtube.com/watch?v=xoyk_A0RSpI3 Ways to Create Timers in Godot 4MmmmmDonuts2023-10-23 | Here we'll create timers using 3 different methods in Godot 4. The basic method of adding an actual timer to the scene tree, then purely in code, then using the quick get_tree().create_timer(seconds) way.
Here's a link to my video on signals if you're struggling with those (warning it's lengthy): youtu.be/PFDbrj77HjI
00:00 - Intro and Project Overview 03:15 - Creating a Timer using a Timer Node 06:36 - Creating a Timer purely in code 12:32 - Creating a Quick timer and using awaitGodot 4 Set Get / Setter Getter TutorialMmmmmDonuts2023-10-16 | Hi all, just a quick video on how to use setters and getters in Godot 4. Here is the code to the project github.com/mmmmmmmmmmmmmmmmmmmdonuts/godot_4_setgettutorial if you want to see the 2 different methods. Here is my more in-depth guide to using signals in godot 4 if you are confused about them or how I wired up the health_changed signal youtu.be/PFDbrj77HjI
00:00 - Project Description / Setup 03:30 - Syntax for Set and GetA Beginners Guide to Signals in Godot 4MmmmmDonuts2023-10-06 | Hi all, here's a slightly longwinded guide to understanding signals in Godot 4. We go over what signals are, how to connect them visually and then with code. And then go over an event bus. If there's some interest in looking at maybe how to use signals and the new static functionality in 4.1 let me know and I can make a separate video. Hope this helps!
00:00 - Intro/Lecture 08:53 - Connecting Signals Visually 19:00 - Connecting two nodes to each other visually 23:23 - Connecting nodes with codes 33:00 - Creating a custom signal 42:10 - Passing a parameter with a signal 48:47 - Intro to creating an EventBusGodot 4 Getting Autocomplete to Work ReliablyMmmmmDonuts2023-10-06 | Hi all, quick video to show you how to use type hinting/class_name to help get Godot 4 to reliably show you all your custom variables and methods/functions in its autocomplete. Thanks goes out to reddit.com/u/TheDuriel for your help. Sorry to have referred to you as "someone on reddit" for the second suggestionGodot Beginner Setup Tips and Quality of Life TricksMmmmmDonuts2023-09-15 | Hi all, Just compiled together a few tips and tricks I've found or learned from others that were helpful. Hoping this helps y'all as well. See chapters below or the text if you don't want to bother with the whole thing or just want to read it. Leave in the comments your helpful QoL features in Godot.
If you want the Fira Code Font it's free (although consider donating) github.com/tonsky/FiraCode and scroll down to Download & Install and download and extract the TTF font you want into your godot folder or wherever you want and point godot to that path.
If you don't feel like watching a video, here's all the tips: --Increase / Decrease your screen font size easily with Ctrl+ +/- buttons --Add fonts ligatures: ----download a font with ligatures such as fira code: github.com/tonsky/FiraCode ----go to Editor | Editor Settings "Code Font" and select the Fira Code.TTF font you want ----go to Editor | Editor Settings "Code Font Contextual Ligatures" and set to Enabled --Use Multiple Cursors: hold down Alt on Windows/Linux and left click on a new line or use Ctrl+Shift+Up or Down arrows to add another cursor above or below. Hit Esc to cancel --To auto add @onready var ... text, in the editor click and drag the node onto the script but before you release it hold down CTRL ----note: if you hit CTRL before you select and drag it may unselect or select multiple nodes which is usually not desired ----if you do this with .tscn files it will autocomplete preload("resource/path/to/.tscn") though you'd still have to add the "const MyScene = " part before it --Unique Node Paths: Very helpful if you're moving around your nodes a lot and keep breaking your @onready, right click on a node, then select %Access as Unique Name. If you now do the above drag+ctrl it will give you an @onready autocomplete with a %node that will not break if you move it around your scene's tree ----NOTE: Not in Video - You can bind a hotkey in Editor | Editor Settings | Shortcut Tab and Under Scene Tree | Toggle Access as Unique Name and set a hotkey that you desire. Ctrl + U seems available --Code Folding: Fold one line with alt+F anywhere you see the down chevron. However, if you want to fold all and unfold all you have to add those ----go to Editor | Editor Settings and in the above tab go to Shortcuts. ----now filter by "fold" or go to Script Text Editor ----add ALT+SHIFT+F to "Fold all lines" and Ctrl+Shift+Alt+F to "Unfold All Lines" or whatever hotkeys you want and now it will fold and unfold everything ----Note that it does not display collisions, so if your hotkey isn't working or doing something else, it's probably that you have a hotkey collision, check to make sure your desired keycombo is not already used ----you can check what key combos are already used by "filter for event" in the shortcut tab and press out your combo and see if anything pops up ---Unfortunately also it doesn't toggle all folded or unfolded like the single line does so you need to have two hotkeys bound separately --Turn on Type Hinting: Editor | Editor Settings | Text Editor | Completeion | Add Type Hints to on ----note: it will not add them to already made scripts, only new ones --Change your default Signal Names so that they aren't entirely snake case (if you don't like how long they get) ----Unfortunately no editor wide setting anymore (and previously didn't work), so it is project by project you have to set this for now ----Go to Project | Project Settings -- Turn on Advanced Settings or you won't See it ----Then go to Editor | Naming and under "Default Signal Callback Name" you can hover over to see options. I like: ----"_on_{NodeName}_{SignalName}" and you can also do Signal Callback to Self and do "_on_{SignalName} to compact them a little --Copy Property Paths: simply hovering over and right clicking and select "Copy Property Path" or Ctrl+Shift+C to copy the path for use elsewhere --Animation player: Copy / Pasting animation tracks easily under the animation player click the Edit Button and select copy (or paste) tracks and select the tracks you want to copy and paste elsewhere
00:00 - Intro 00:37 - Change Font and Add Ligatures 01:43 - Multiple Cursors 02:23 - Autotype @onready var with Ctrl + Drag/Release 02:58 - Unique Node Paths so you can reparent without breaking your scripts 04:13 - Code Folding Hotkeys 06:30 - Turn on Type Hinting for autotext 07:12 - Changing the Default Signal Naming 09:40 - Autotype preloading packed scenes and dragging without glitching 11:13 - Copy property paths 11:58 - Copy/Paste Animation TracksGodot 4 jittering and collision gap potential fix for someMmmmmDonuts2023-02-02 | TL;DW. Go to Project Settings | Toggle on Advanced Settings then Scroll down to Rendering | 2D | Snap | and turn off Snap 2D Vertices to Pixel (for particle jittering) and turn off Snap 2D Transforms to Pixel to make your player touch the ground and not have gaps under the collision. Looks like this is by default now turned off but it was somehow on in my project that I started in an earlier beta and the setting was saved.
If you have a high refresh monitor (greater than 60hz) it may also help to set under Application | Run | Max FPS to 60 to match the physics ticks per sec (default 60).
Manual camera interpolation can also be considered in some circumstances but may be a bit beyond me. docs.godotengine.org/en/stable/tutorials/physics/interpolation/advanced_physics_interpolation.htmlGodot 4 Using File Dialogs Basic IntroductionMmmmmDonuts2023-01-30 | GD4 Release Update: They have once again introduced the .close() method to close your files (had been removed and files were closed when the variable went out of scope in prior release candidates) so you should start .close()-ing your files again after you use them!
Hi all, here's a basic tutorial into using the Godot 4 File Dialog. We'll go over just simple use of the FileAccess object to store some strings and at the end we'll use the JSON class to store character data (chapter mark). I'm happy to make a more basic Godot 4 File IO tutorial if that would be helpful to anyone.
There seems to be some quirks and I certainly haven't figured out everything but hopefully this will get you going if you just need a simple File Dialog. If you know of any fixes or if I made any errors, please let me know in the comments.
00:00 File Dialog 20:00 Storing JSON dataGodot 4 Tilemap Copy/Paste Tiles and using PatternsMmmmmDonuts2023-01-25 | Hi there just a brief video on how to copy/paste tiles since it's not entirely obvious. This is using Godot 4 Beta 15. There were a number of visual glitches I was getting though it seemed to behave in this take. If you know of other or better methods please leave a comment.Godot 4 Basic Tilemap and Autotile / Terrains TutorialMmmmmDonuts2023-01-11 | This is a basic tutorial how to setup Godot 4 (Beta 11)'s Tilemap and Autotile (Terrains) video. I am not an expert and don't claim to be. But hopefully it will at least get you up and running since it took me a bit to figure it out hopefully this will save you some time as well.Lerp and Timeline for Unreal Engine 5 / UE5 (prev 2) Basic TutorialMmmmmDonuts2022-04-05 | This is a basic tutorial video if you have any trouble understanding Lerp (linear interpolation) and timelines from one newbie to another. I'm using UE5 preview 2 but I think it should be pretty transferable. I had a bit of trouble when it was introduced quickly in a tutorial series I was watching and didn't find a lot of helpful guides with a bunch of examples, so I made this. Let me know if there's anything that needs to be clearer or is wrong!