hamsterbyte
hamsterbyte
  • 12
  • 101 282
Godot 4 - Conway's Game Of Life (Full Lesson)
Git
github.com/hamsterbyte/Godot-4-Conways-Game-Of-Life
00:00 Intro
00:57 Rendering Explanation
01:57 Creating A Shader
03:14 Writing The Dot Matrix Shader
07:58 Setting Up Dot Matrix Display
11:58 Processing Explanation
13:57 Creating The Compute Shader
14:47 GLSL IDE Support?
15:26 Writing The Compute Shader
26:49 Creating The Dispatcher
27:27 Writing The Dispatcher
56:04 Setting Up Dispatcher
56:47 Fixing Compute Shader Bugs
57:23 Final Testing
Join me in this exciting video where I'll show you how to create Conway's Game of Life using a compute shader in Godot 4. This tutorial is designed for both beginners and seasoned developers who are interested in exploring the power of compute shaders.
I'll start with a quick introduction to Conway's Game of Life, explaining its rules and why it's a fascinating subject in computer science. From there, I'll take you through the setup of a compute shader in Godot 4. You'll get to see every step of the process, including writing and understanding the shader code, and learning how to efficiently manage data for real-time simulations.
Key topics covered in this video include:
Introduction to compute shaders and their applications.
Techniques for efficient data handling in shaders.
Methods for debugging and optimizing your shader code in Godot 4.
Along the way, I'll share my personal tips and best practices for shader programming, ensuring you learn practical skills you can apply in your game development journey.
This tutorial is more than just following steps; it's about understanding and mastering compute shaders in a fun and interactive way. So, whether you're just starting out or looking to enhance your Godot skills, this video has something for you.
Remember to hit the like button, share, and subscribe for more Godot 4 tutorials. I'm always excited to read your comments and suggestions, so please leave them below!
#GodotEngine #ComputeShaders #GameDev #ConwaysGameOfLife #ShaderTutorial
มุมมอง: 4 823

วีดีโอ

Godot 4 C# Addon You Didn't Know You Needed - Color Palettes
มุมมอง 8829 หลายเดือนก่อน
GIT github.com/hamsterbyte/Godot-4x.NET-Color-Palettes In this video, I'm showing you how to use the color palette addon for Godot .NET 4 , a freebie that I created for you! This addon lets you customize the colors of your objects in Godot by using color palettes and swatches! You can import, edit, and save color palettes. The best part? The palettes are stored in files so they are managed by v...
Godot 4 C# - Ultimate Developer Console (Free Addon and Lesson)
มุมมอง 2.2K9 หลายเดือนก่อน
Prerequisites: Godot 4.x .NET .NET 6.0 GitHub Repo github.com/hamsterbyte/Godot-.NET-4x-Developer-Console The full repository is available at this link, but you should only need the files included in the .zip 0:00 Introduction 0:15 Features Overview 7:53 Installation 9:37 Settings 11:56 In Depth Overview 21:32 Adding Custom Commands Psst, you want a free developer console addon for Godot 4, tai...
Wave Function Collapse Is A Thing - Godot 4.1 C# (Full Lesson)
มุมมอง 7K10 หลายเดือนก่อน
It was recently brought to my attention by a comment that 4.2 introduces breaking changes to this system. So stick with 4.1 if you want to download and run the project from Git. It was also mentioned that the plugin may think it is GDScript, so double check when enabling the plugin that the language is set to C#. Thanks for all the support everyone! GIT github.com/hamsterbyte/Wave-Function-Coll...
Godot 4 C# Custom Resources & Tooling (Full Lesson)
มุมมอง 7K11 หลายเดือนก่อน
Coming from Unity you are probably wondering if you can use scriptable objects in Godot. You definitely can! They are called resources. In this video we will be going over how to create custom resources and how to make some custom tooling to interact with those resources directly in the editor. Git: github.com/hamsterbyte/CSharp-Godot-Custom-Tools-And-Resources/tree/Lesson-Start Godot .NET 4.1 ...
Godot 4 C# Making A Terraria Inspired Procedural Tilemap (Full Lesson)
มุมมอง 7K11 หลายเดือนก่อน
GitHub github.com/hamsterbyte/CSharp-Procedural-Terrain 0:00 Intro 0:27 Syllabus 3:02 Setup and Noise Generation 13:49 Smoothing The Noise 21:50 Cleaning Up Regions 35:11 Custom Tooling Explanation 38:32 Implementing Tilemap Rules 48:57 Input Detection and Runtime Modification 1:10:29 Adding Seed Logic In this full lesson, we'll be creating a procedurally generated tilemap in Godot using C#. If...
C# is BETTER than GDScript but...
มุมมอง 29Kปีที่แล้ว
Which language should you use for scripting in Godot 4? Clearly GDScript right? Well, yes and no. C# vs GDScript debate settled. In this video, we'll compare C# and GDScript, two popular programming languages for Godot. We'll explore how they're similar and different, and which one is better for specific tasks. If you're looking to learn more about C# or GDScript, this video is for you! By the ...
Godot 4 C# Basic Platformer Controller 1.04 - Jumping
มุมมอง 1.2Kปีที่แล้ว
In this video, we'll be smoothing out our character movement with linear interpolation and creating the system to handle jumping! If you're new to Godot and looking to learn how to create a basic platformer controller, then this video is for you! If you found this content useful, please like and subscribe! GITHUB github.com/hamsterbyte/CSharp-Godot-Basic-Platform-Controller/tree/1.04 SPRITES (C...
Godot 4 C# Basic Platformer Controller 1.03 - Horizontal Movement
มุมมอง 1.8Kปีที่แล้ว
In this video, we are going to start implementing a system to control horizontal movement for our basic platformer controller using Godot and C# You can find the source code for this controller on my GitHub page. If you're interested in making your own games using Godot, this is a great starting point! This controller is compatible with Godot 4.0 and above. If you have any questions or comments...
Godot 4 C# Basic Platformer Controller 1.02 - Gravity
มุมมอง 2.6Kปีที่แล้ว
In this video we are going to be getting started on the basic Godot platformer controller by implementing gravity using C#. This video will teach you how to create a custom gravity system for your platformer controller If you're new to Godot, or you're looking for a project to start your gamedev skills, this is the video for you! In this video, we'll be building a basic platformer controller us...
Godot 4 C# Basic Platformer Controller 1.01 - Concepts
มุมมอง 3.7Kปีที่แล้ว
In this series, I'm going to show you how to create a basic Godot C# platformer controller.. I'll be using the Godot Engine to create the game, and you'll be able to follow along step by step. This platformer controller tutorial is perfect for beginners who want to learn how to create a basic platformer using the Godot Engine. By the end of this series, you'll be able to create a basic platform...
Godot 4 - C# Setup Guide
มุมมอง 35Kปีที่แล้ว
If you are struggling to set up C# support in Godot, give this video a watch. I will walk you through the installation and setup process. You will need some resources before getting started. Godot .NET godotengine.org/download/windows/ .NET 6.0 - .NET version 6 is mandatory, do not use version 7! dotnet.microsoft.com/en-us/download Visual Studio Community - When installed visual studio, be sure...

ความคิดเห็น

  • @michaelmiller6365
    @michaelmiller6365 4 วันที่ผ่านมา

    Hello, is there a good way to add customer color highlighting? I am trying to output file contents similar to your level output and it would be good to be able to differentiate between files and directories visually. Due to the way I have level loading, just using your level directory script is not what I'll be doing. Still this should be amazingly useful.

    • @hamsterbyte
      @hamsterbyte 3 วันที่ผ่านมา

      In theory it is possible, but how you achieve it depends on what you want to do. If I recall correctly, the level loading feature supports subdirectories and changing the parent directory should be relatively easy by looking at the code. As far as custom color highlighting, the main text is in a code control so color highlighting is possible. It could also be done with BBCode, but would require heavy modification of the files to convert everything from the code block. I chose the code block for simplicity. I'd need more information to make any kind of useful suggestions. Thanks for watching and I hope you find it useful!

  • @8knights841
    @8knights841 17 วันที่ผ่านมา

    You mentioned you can interpolate the body itself versus the sprite. I want to try that and see how it works, but I can't seem to get it to work. How would one interpolate the character body instead?

    • @hamsterbyte
      @hamsterbyte 15 วันที่ผ่านมา

      Interpolation is a whole discussion in itself. There a many different ways to interpolate objects in a game. Interpolating physics bodies is now possible in Godot 4.3 out of the box which should, in theory, eliminate the need for separating the sprite from the physics body for smooth movement. I haven't tested this yet, but my suggestion would be to upgrade to 4.3 and enable 2D physics interpolation. Thanks for watching!

  • @fatsumo
    @fatsumo 19 วันที่ผ่านมา

    This series has been so helpful. The basics are so important and I went through quite a few tutorials that teach you nothing about how the mechanics work, just how to implement them... I'm sure most consider the foundational math at play here simple or just unnecessary to understand fully, but it has been imperative for my learning process. Thank you!

    • @hamsterbyte
      @hamsterbyte 15 วันที่ผ่านมา

      Math foundations are the most important thing in any developers toolbox. Thanks for watching!

  • @ShanePatSmith
    @ShanePatSmith 29 วันที่ผ่านมา

    Hey, when I try to build the project after all the coding is done, I can't get the "Build" button to show up, so I'm stuck with Dispatcher.cs not being able to do anything. When I try running it anyway I get a bunch of errors saying "The type or namespace name [a whole bunch of different variables] could not be found (are you missing a using directive or an assembly reference?) What does this mean?

    • @hamsterbyte
      @hamsterbyte 15 วันที่ผ่านมา

      Impossible to say without more information unfortunately. Which type or namespace is missing? This error is typically caused by a missing using statement at the top of a file.

  • @RyukiriDragon
    @RyukiriDragon หลายเดือนก่อน

    This is a wonderful tutorial! I've been looking for some more godot C# tutorials and you make good ones! I know you haven't posted in a while, but I hope you post more!

    • @hamsterbyte
      @hamsterbyte 15 วันที่ผ่านมา

      Been extremely busy with other projects but I plan to get back to posting soon. Thanks for watching!

  • @ReasonMakes
    @ReasonMakes หลายเดือนก่อน

    3:00 was exactly what I was looking for - thanks :)

  • @stanislavgranovskiy4111
    @stanislavgranovskiy4111 หลายเดือนก่อน

    If u have to overload engine with heavy MATH functions, u just can install C++ extensions for that.

    • @hamsterbyte
      @hamsterbyte หลายเดือนก่อน

      Of course, and C++ will perform slightly better than properly written C# code...the point of the video is to illustrate the difference between GDScript and C#. However, C++ is not something most people using Godot are going to be comfortable with. Most use GDScript because it is easy and beginner friendly. C# is in the middle for difficulty and nearly as performant as C++ if implemented correctly. Also, it's not really just about math as iteration is the main drawback of using GDScript. It struggles when iterating over collections and that is something that is prevalent in ALL code bases. It's impractical to implement C++/GDExtension for everything that requires some sort of iteration. At that point, you should just write the entire project in C++...

  • @eggmceggen
    @eggmceggen หลายเดือนก่อน

    yahoo was wondering that does .NET 8.0 work? Very new to working with godot and programming in general so if there is a way/ its better to get the .NET 6.0? and if so how :)

    • @hamsterbyte
      @hamsterbyte หลายเดือนก่อน

      .NET 8 works great and I would use that. It will require that change the target framework in your csproj file though. Pretty easy to do, just google it. cheers!

    • @eggmceggen
      @eggmceggen หลายเดือนก่อน

      @@hamsterbyte thank you!

  • @SheaTaru
    @SheaTaru 2 หลายเดือนก่อน

    is the Vector2 "vel" method a method you created or is it a part of Vector2 by default? if you did create it, how/where is it defined? i tried to google it and i got no results

    • @hamsterbyte
      @hamsterbyte หลายเดือนก่อน

      vel is a variable of type Vector2 which means it is defined somewhere in the code that is provided in the video, or the prior video; this is a series. IIRC this controller uses a series of methods with ref Vector2 arguments to modify a velocity variable incrementally before finally assigning it to the velocity of the character body. If you are unfamiliar with what a certain piece of code does, I would recommend that you watch through the entire series, pausing to make sure you understand completely. This series covers all the basics needed for a platform controller. Unfortunately, this is by far the most beginner friendly tutorial series I've uploaded. I'll try and make some more beginner friendly tutorials in the near future. Sorry I couldn't be more helpful, it's been a while since I've reviewed this particular code. Cheers!

    • @SheaTaru
      @SheaTaru หลายเดือนก่อน

      @@hamsterbyte thank you!!

  • @sven4627
    @sven4627 2 หลายเดือนก่อน

    notable enhancement involves the use of Just-In-Time (JIT) compilation, which translates GDScript to C++ behind the scenes. This technique aims to boost performance without requiring extensive changes to the existing codebase​

  • @teodosiytanev5762
    @teodosiytanev5762 2 หลายเดือนก่อน

    I copied the code word for word, but the character stays perfectly still, the game runs with no errors

    • @hamsterbyte
      @hamsterbyte 2 หลายเดือนก่อน

      Is the script attached to the player?

    • @teodosiytanev5762
      @teodosiytanev5762 2 หลายเดือนก่อน

      @@hamsterbyte yes, as far as I know, made the script the same way as told, plus when following other tutorials the scripts work, so it must be something else

    • @hamsterbyte
      @hamsterbyte 2 หลายเดือนก่อน

      There's a few things that could cause this, if you followed the video exactly there should be no issues. If your code is correct, verify that your input is set up correctly and that the script is attached to the proper node. Without seeing your project there's no way for me to identify the issue.

  • @szu7422
    @szu7422 3 หลายเดือนก่อน

    I just wanted to say that this mini series helped me so much as a new developer. I followed it about 6 months ago and it kickstarted my game, thanks for taking the time to make this.

    • @hamsterbyte
      @hamsterbyte 3 หลายเดือนก่อน

      Thanks so much for the kind words. I'm glad to know that this helped you out!

  • @sunthasbayne
    @sunthasbayne 3 หลายเดือนก่อน

    I'm generating negative entropy values which seems wrong... but its still working, just seems like something could be working better...

    • @hamsterbyte
      @hamsterbyte 3 หลายเดือนก่อน

      I'm not sure why the code itself would be generating negative entropy values. I did not experience this issue in my testing.

  • @snek5385
    @snek5385 4 หลายเดือนก่อน

    Great work! More C# Godot content plz!

  • @densket_
    @densket_ 4 หลายเดือนก่อน

    So between gdscript and c#, what should I learn first? I know the very bare basics of c# but I know more python, and I heard gdscript is very similar to python Just gonna make 2D pixelated games (as a hobby), and I wanna kinda start fast, so what do u recommend? Thx

    • @hamsterbyte
      @hamsterbyte 3 หลายเดือนก่อน

      GDScript is faster to learn but useless outside of Godot. If you want to make a web build you have to use GDScript or a different engine. GDScript is similar to Python, just make sure to read the docs and use whatever bindings they have available

  • @rafae5902
    @rafae5902 4 หลายเดือนก่อน

    I prefer C#, but I use Godot with GDScript. Something most ppl seem to ignore is that by using GDScript for your game you are making it easier to port it for consoles in the future.

    • @hamsterbyte
      @hamsterbyte 3 หลายเดือนก่อน

      Why does using GDScript make a game easier to port to console than C#? There are many games written in C# on consoles.

    • @rafae5902
      @rafae5902 3 หลายเดือนก่อน

      @@hamsterbyte Well, first reason is that GDScript has no GC, which makes things easier. Second reason is that most of Godot's users use GDScript, therefore most efforts will be put for porting GDScript games to console, not C#. Proof of that is the free switch port that has been created: it doesn't support games using C# or GDExtension, only games using GDScript.

  • @Tempelge1st
    @Tempelge1st 4 หลายเดือนก่อน

    There seems to be a line missing in the video for in the glsl file at at 22:18 (return count;), also in the "main" function the video has "continue" while the github file has "return" instead. Maybe its possible to add annotations to the video?

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      There were a few mistakes in the first run through of the GLSL, it was addressed at the end of the video

  • @MrEd-qc7vr
    @MrEd-qc7vr 4 หลายเดือนก่อน

    I don't know if you are gonna keep doing more videos but may I request that you zoom a little bit on the code in the future? is really hard to read it.

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      All new videos are done with a larger font and scale

  • @AVENGER4565
    @AVENGER4565 4 หลายเดือนก่อน

    Hope you ll get more views. That is high quality content

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      Hope you find it helpful!

  • @zsolezk
    @zsolezk 4 หลายเดือนก่อน

    How about dev time for prototyping? I am currently prototyping a procedural, large world in gdscript and I just love how fast I can run the project, tweak something, and run it again. Also, the fact that I only need one window and zero configuring of anything is great. Yes, in the end the heavy lifting will be done by c# or most likely cpp. So the final implementation will be in one of those two.

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      I'm pretty sure GDScript has hot reloading...so you don't actually have to run the project again; you can just modify and save the code while it is running. If you like GDScript then you should use it, but you should also learn how to make a loading screen if you plan to do any sort of proc gen with it.

    • @zsolezk
      @zsolezk 4 หลายเดือนก่อน

      @@hamsterbyte Depends on what you have changed. But yes it has that.

  • @BlanketBaron
    @BlanketBaron 4 หลายเดือนก่อน

    This is perfect for helping me implement the system I want to make. Thank you so much for making this!!

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      You're very welcome I hope it helps!

    • @BlanketBaron
      @BlanketBaron 4 หลายเดือนก่อน

      I have the requirements and I am able to load the project without errors. However, the plugin will not enable and it doesn't throw an error when I try to enable it. I'll keep banging on it to see if there's something in godot's config that is incorrect. I am using Godot 4.1.3 with .net

  • @shanefoster5305
    @shanefoster5305 4 หลายเดือนก่อน

    I am so glad I found this. I have been struggling so bad with how to implement everything I wanted to accomplish. I have gone through so many PG algo's to get what this does. Now I just need to work on some advanced pathfinding and smart placement of prefabs/scenes.

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      Procedural generation is quite difficult if you don't have a lot of experience with it. It's essentially always the same concept; wrangling noise into something coherent. This video is on wave function collapse, but I also have another that goes over cellular automata to make a terraria style map with auto updating neighbours. Hope you find the content useful and thanks for watching!

    • @shanefoster5305
      @shanefoster5305 4 หลายเดือนก่อน

      @@hamsterbyte I'm going to go and look for that right now. Cellular automata is what I'm using right now for my maze game. I got the first part figured out. Now I need to do the pathfinding and backtracing etc. But I'm loving the idea of having the code randomize the maze so you don't have the same one twice!

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      @@shanefoster5305 obviously for pathfinding you will want to use some variation of Dykstra's or A*. The main thing to remember is if you are generating the maps procedurally, you will also need to populate the data for the algorithm after the generation is completed to calculate the nav mesh and weights/values

    • @shanefoster5305
      @shanefoster5305 4 หลายเดือนก่อน

      @@hamsterbyte Thanks I'll look into that. I was just going to modify Wilson's maze algorithm to 3d and then at dead ends place a door that teleports them to the rooms that would be elsewhere. Wilson's maze has pathfinding in it while generating the maze. But your recommendations might be more appropriate and possibly easier.

  • @follyscrolly1345
    @follyscrolly1345 5 หลายเดือนก่อน

    I want to do c# cause I’m switching from unity but there’s no tutorials to learn how to use it in godot

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      I have several on my channel, but some are quite advanced.

  • @freiaz494
    @freiaz494 5 หลายเดือนก่อน

    I think that it will be better to specified the -not- regular lines of code, like for example what is "Mathf.clamp" and "Mathf.inf", and even why and how to use Vector2. In my case I had to read the documentation from Godot and google the Mathf function to understand it, but for other new developers it will be hard to understand that part of the code

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      Mathf is a library that contains math functions for floating point numbers. Inf is infinity. Clamp confines a number between two values. There's also ceiling and floor operations to round up or down, though casting a float to an int will round down as well, albeit at the cost of boxing. Vector2 is also not confined to the game dev world and C# has its own built in version in System.Numerics

  • @freiaz494
    @freiaz494 5 หลายเดือนก่อน

    This looks promising, I hope the series will keep this great

  • @naturelist
    @naturelist 5 หลายเดือนก่อน

    Thanks a lot! I am really looking forward to finishing this series!

  • @ahmki52298
    @ahmki52298 5 หลายเดือนก่อน

    So if I were doing this fresh on my own I'd just manually paint all the combinations myself essentially right?

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      Exactly

  • @ahmki52298
    @ahmki52298 5 หลายเดือนก่อน

    Did everything as explained up to the map filled with noise but it refuses to work saying the build method threw an exception any suggestions? Edit: I figured it out 😅

    • @hamsterbyte
      @hamsterbyte 4 หลายเดือนก่อน

      Without seeing the exception it is impossible to diagnose. Glad you found the answer and sorry for the late reply! Been a pretty crazy month for me

  • @dassel297
    @dassel297 5 หลายเดือนก่อน

    Thank you ! Please a tutorial for 3D would be really great

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      The algorithm here will not work for 3D; it's a simple cellular automata. 3D would be better represented by marching cubes or wave function collapse. Depending on the proposed size of the map, marching cubes and voxelization may be required. Other considerations would be chunking, texture LOD, and asynchronous loading. Have a look into the things I've mentioned - they should point you in the right direction. Thanks for watching!

    • @dassel297
      @dassel297 5 หลายเดือนก่อน

      Thank you ! :)@@hamsterbyte

  • @Snapper-gaming
    @Snapper-gaming 5 หลายเดือนก่อน

    Why you saying its unfair to use the build in sorting function in GD SCript, its the one you will use for your game? Not bubble sort..

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      Because bubble sort is easy and stable. The test isn't about whether or not C++ is faster than C#. It's about GDScript vs. C# and it tests the speed of the operations when they are manually implemented. Using a built- in function that binds to the C++ backend isn't the same as comparing GDScript performance to C# performance. Congruency is paramount in performance tests, and congruency is not possible if you use GDScript bindings. The whole test is invalid. That being said I could have used quick sort and C# would still be faster than a hand coded GDScript version...

    • @Snapper-gaming
      @Snapper-gaming 5 หลายเดือนก่อน

      @@hamsterbyte it just makes the comparisons useless, because you dont keep the use case of gdscript in mind.

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      @@Snapper-gaming Is the built in sorting function in GDScript 100% congruent with the built in sorting function in C#? That means the logic is functionally identical and contains the same number of operations/iterations. Imagine you have two cars in a race. They both start at the same place but one car takes a winding road to the finish and the other takes a straight road. Is the car that arrives first the faster car? Well, maybe. It depends. Was it the car on the longer route? If it was, then yes. Was it the other car? Then maybe, you can't say for certain. The test is not valid because the conditions are not congruent. Garbage in, garbage out. That's why congruency is so important in performance tests. Do you think I chose bubble sort because it's fast? I chose bubble sort because it's a worst case scenario and illustrates the relative performance of the two languages when given an iterative workload. Before you make a counterargument to a series of empirical tests like this you should first understand the original argument. The source code is on screen so anyone can replicate these tests and I encourage you to do so. The data presented in this video is not my opinion, it's factual evidence. Your opinion that the tests are unfair is irrelevant, baseless, and provides no counter argument to the evidence that was presented. The solution to the issues this data uncovers is not as simple as saying, "just use the bindings" or "you'd never use bubble sort in your game".

  • @Wiwcac
    @Wiwcac 5 หลายเดือนก่อน

    Subbed so fast.

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      Thanks for watching. I hope my content helps you out!

    • @Wiwcac
      @Wiwcac 5 หลายเดือนก่อน

      @@hamsterbyte I think it will. Looking forward to more content. Gonna search through what you have later today before I start making requests. :p Keep up your hard work. Hydrate.

  • @velocitygamer-wvu
    @velocitygamer-wvu 5 หลายเดือนก่อน

    who tf pronounces godot "godoe"

    • @ImOnioned
      @ImOnioned 5 หลายเดือนก่อน

      99% of people

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      Literally most of North America, which is where I Live. Depending on your location the pronunciation may vary, though I think we can all agree it's not pronounced Go Dot.

    • @ImOnioned
      @ImOnioned 5 หลายเดือนก่อน

      @@hamsterbyte I live in Europe and its still mostly called godoe

    • @Even-Steven
      @Even-Steven หลายเดือนก่อน

      @@hamsterbyte Where most people agree is you pronounce it however you want :) Ariel Manzur and Juan Linietsky pronounce it Go-Dot and always have and they created the engine.

    • @hamsterbyte
      @hamsterbyte หลายเดือนก่อน

      @@Even-Steven Akshully, the name comes from a Samuel Beckett play called "Waiting for Godot". There are two widely accepted pronunciations of the name Godot. Guh-dow and Go-dow, depending on the locale. Go-Dot is an incorrect pronunciation resulting from a language barrier as neither of the creators are native English speakers. As you say, it doesn't matter what you call it. The engine would still be great even if it was called garbage. That's pronounced gar-baj btw. 🤣

  • @itsgonnaBmay
    @itsgonnaBmay 5 หลายเดือนก่อน

    Thanks for the help 😄 my ADHD brain appreciates how concise this was

    • @hamsterbyte
      @hamsterbyte 5 หลายเดือนก่อน

      You're very welcome

  • @merthyr1831
    @merthyr1831 6 หลายเดือนก่อน

    You could consider making the loop signatures `for (int i = -1, i <= 1, i+=2)` since this will always output [-1, 1] so you can avoid the `if(i == 0 && j == 0)` logic. Negligible performance gain for something like this but I know people like to avoid branching logic when doing GPU shaders.

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      That's valid, but as you say it won't really affect performance and I do find it more readable with the 0 checks. That's the signature I expect to see when iterating over a Moore neighbourhood. Entirely personal preference. Thanks for watching!

    • @autochromes
      @autochromes 2 หลายเดือนก่อน

      this loop will likely be unrolled as a compilation step and this iteration won't be in the code at all. i don't know if the nested for loop will prevent unrolling. for(int i = 0; i<9;i++){ int x = i%3; int y = i/3; do stuff} when we unroll this loop we can see that x and y are all constants now and any of these calculation can be factored out also any continue will just skip that iteration in the compiled code entirely.

  • @magnusm4
    @magnusm4 6 หลายเดือนก่อน

    If GDScript moves certain feature to lower level languages. Then would it be possible to write in just that lower level language? Same to how you can write C++ in Unreal instead of blueprints. The performance difference here seems to be rather large. And for people looking to grow their next projects, this would be a great leap from easy to harder but with great performance benefits.

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      While Godot offers interaction through GDNative with C++, and even community-supported implementations for Rust and Go, C# provides a compelling alternative due to its balance of performance and developer friendliness. C#'s syntax shares similarities with JavaScript, making it a more approachable option for a wider range of programmers compared to C++ or Rust. Additionally, recent advancements in C# compilation, such as Native AOT, allow it to achieve performance levels comparable to lower-level languages. It's important to consider the technical merits of a language beyond historical biases. While C# may have faced negativity in the past due to its association with Microsoft, its strengths in readability, maintainability, and performance make it an excellent choice. Furthermore, the job market for C# developers is significantly larger compared to GDScript developers. However, for novice programmers or hobbyists, GDScript is a well-suited option due to its approachable nature. That being said there are a few caveats: Web Export Limitation: Currently, Godot does not support exporting C# projects directly to the web. This functionality is under active development with the release of .NET 8, but it's not yet available. Marshalling for Godot Consumption: When using C# with Godot, marshalling may be required to bridge the communication gap between the languages. This process can impact performance if not carefully managed. It's crucial to identify which parts of your C# code necessitate marshalling, scene tree access is the biggest offender here. Techniques exist to minimize the performance impact of marshalling. While marshalling adds some overhead, most well-written C# operations will still outperform their GDScript counterparts.

  • @arkarion2589
    @arkarion2589 6 หลายเดือนก่อน

    I am new to game development and I wanted to get started with this. Sadly I encountered numerous problems trying to set this up. I would love if the video included the need to clone the godot repository, settings needed in Godot to get this running and so on. I still can't really get it to work the same way you use it in your videos. I am not certain which steps I'm missing if I'm being honest. Any help would be very much appreciated.

  • @swiftypopty1102
    @swiftypopty1102 6 หลายเดือนก่อน

    I'm a bit confused with Godot + Rider setup, I able to get Rider working to open my godot files but the autocomplete and error didnt work

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      You need to make sure to install the Godot plugin in Rider. Settings>Plugins and search Godot Support. Thanks for watching!

    • @swiftypopty1102
      @swiftypopty1102 6 หลายเดือนก่อน

      @@hamsterbyte I already installed it before but I fixed it by reinstalling Rider, maybe my old one corrupted or sumthing. Thanks anyway.

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      @@swiftypopty1102 entirely possible. I always keep Rider up to date, which has before caused plugin incompatibility. Glad you got it sorted though. Happy coding!

  • @TheDragonsoal
    @TheDragonsoal 6 หลายเดือนก่อน

    I know I am late to the party but I cannot seem to get my class to show up in the create new resource menu [GlobalClass] public partial class ITEM_CLASS: Resource { [Export] public string Item_Name; [Export] public int Quantity; [Export] public string Item_Description; [Export] public string Item_Type; [Export] public Texture Item_Texture; }

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      Your custom resource class must also be tagged with the tool attribute and don't forget to build the project to propagate the changes to the editor. Thanks for watching! using Godot; [GlobalClass, Tool] public partial class PickupItem : Resource { #region VARIABLES [Export] public Texture2D icon; [Export] public string name; [Export] public StatType statType; [Export] public string description; [Export] public int amount; #endregion } public enum StatType{ Health, Mana, Armor }

  • @Lexie_T
    @Lexie_T 6 หลายเดือนก่อน

    I feel like there was far too little explained here. For large chunks of the video it's just copying whatever you type with no real explanation on what each part is doing. I tried for 2 hours to follow along with this thing but gave up in the end. Props for trying to make some content about shaders. The solution looks interesting, and I hope in future videos you maybe spend less time live typing and more time explaining why you built it the way you did.

    • @bagboybrown
      @bagboybrown 6 หลายเดือนก่อน

      Seemed pretty clear to me, try watching it with the volume on.

    • @Lexie_T
      @Lexie_T 6 หลายเดือนก่อน

      @@bagboybrown I was clear that I was thankful for the video and just giving feedback. Don't need to take it to heart bagboy.

    • @bagboybrown
      @bagboybrown 6 หลายเดือนก่อน

      @@Lexie_TJust stating the facts. He literally tells you why you do what you do at every step so if you couldn't figure it out I can only surmise that you had your audio off.

    • @TriviaQuizocity
      @TriviaQuizocity 5 หลายเดือนก่อน

      ​@bagboybrown What did he mean at the timestamp 14:45 when he said open it in our ide? the only ide i have is an arduino ide, how is it obvious to everyone what ide he is using? Im asking you because it seems like you understood it.

    • @bagboybrown
      @bagboybrown 5 หลายเดือนก่อน

      @@TriviaQuizocityThat's exactly what he means. I'm not familiar with Arduino, but Rider Jetbrains (paid) or Visual Studio (free) are both compatible with Godot.

  • @orsikoGG
    @orsikoGG 6 หลายเดือนก่อน

    @hamsterbyte hello, just wondering, if i were to update the coordinates of a grids cells on the tilemap(as in to shift them to the right), do i have to update the entropy coordinates in sync, getting some out of bounds errors WFCGrid Observe(atleast thats where the problem may lie, it could be somewhere inside as well)

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      You should not modify the positions or bounds of the grid or it's cells at runtime. This system calculates that information when the application initializes. You would need to give me more information in order for me to supply a more suitable answer. An out of bounds error in the Observe method indicates that you have modified the bounds of the grid after the system has initialized those values; the system is not designed to handle this behaviour. You can identify the exact location of the error by following the stack trace. Without more information on exactly what you are trying to achieve I am unable to assist you further.

    • @orsikoGG
      @orsikoGG 6 หลายเดือนก่อน

      Ive encapsulated each grid into a class called a wfcregion. i have a wfcregionmanager class that organizes each region. It could be argued that i could have just made a grid manager, because a region is basically just a WFCGrid but im a few hundred lines of modifcation in so its staying :) my reasoning for doing this is that ive noticed on larger grid sizes the algorithm fails to collapse, so im breaking them down into separate "regions"(customizable sizes but ill probably stick around 16x16) so far their success rate is much higher. each region will generate and down the line take information from the bordering regions to update its possible tiles before generation.(however right now im just implementing independent regions before i start making the regions interact) in the constructor of the WFCRegion(remember one grid per region), i offset the coordinates of its grid's cells. So region 1's cells[0,0] should be (0,0) while region 2's cells[0,0] would be (16,0)(region 2 is to the right of region 1) I feel bad as i feel i may have jumped the gun asking the question, as my issue currently lies in WFCGrid Observe() at if(!cells[coords.Coordinates.X, coords.Coordinates.Y].Collapsed){ return coords;} I believe that even though i offset the grids cell coordinates in the constructor im not properly handling or updating the entropycoordinates since when i pass EntropyCoordinates coords into the cells 2d array i get out of bounds. again, i feel like i jumped the gun asking you and learned a bit more about the entropy coordinates after I asked you. I havent found the solution but I think im understanding it all a bit more. I appreciate the help! @@hamsterbyte

  • @sumaia9495
    @sumaia9495 6 หลายเดือนก่อน

    when setting up Visual Studio, which development settings should I choose? Visual Studie=o General or Visual studio C#? my aim is to make a video game using godot and C#.

  • @HurricaneSA
    @HurricaneSA 6 หลายเดือนก่อน

    I'm going to say one word. Interfaces. C# has interfaces. GDScript does not. Granted you don't really *need* interfaces but it saves a lot of time and work. How would you do something like, "The player is a human but also a biped, an omnivore, can wear clothes and use tools so the player needs to be part of the Human class. Biped class, Omnivore class, Clothes wearer class and Tool user class"? Yeah, good luck doing that in GDScript (for now). It's not always just about performance. Sometimes it's about functionality and C# beats GDScript by a mile on that front.

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      C# is years ahead of GDScript and has a lot of useful features that GDScript does not. Interfaces are just one example. There are many other techniques that I use in my normal workflow which would be impossible in GDScript as well. The shortcomings of GDScript make it quite difficult to maintain DRY principles. Don't get me wrong, I'm not a fan of modern clean code practices as they often lead to performance degradation and that has no place in game development, but DRY is something you should always try and stick to wherever possible. For example, I use a lot of generic classes and methods so that I can reuse certain portions of code for things that are similar but not the same. This is particularly annoying because even in C#, Godot does not fully support generic classes. github.com/godotengine/godot/issues/79519

  • @MrMorvar
    @MrMorvar 6 หลายเดือนก่อน

    That's some really juicy efficiency. Nice job! My project is bottle necked by tilemaps' single threaded set_cell calls so I guess this would be the way onwards. Doesn't seem too easy though. Is there a reason why specifically GLSL shader is needed instead of a normal Godot shader?

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      Great question! If you are looking for a way to increase the performance of your TileMap based environment, I can steer you in the right direction there, because a compute shader is probably not the way you want to go. First let's ask a few questions. 1. Do you need to update the entire TileMap at once? 2. How and when are you calling the SetCell method? 3. Are you using a single TileMap or a series of them broken up into chunks? Check my channel for the video on making a terraria inspired tilemap generator. The first part of it is actually generating the tilemap using noise and then I give more detail on how to update the cells using the Moore neighbourhood and cellular automata. I also have a video on Wave Function Collapse that uses a TileMap based system and is quite performant as well. Now, if you want a little further info on the questions you asked I'll address that in two parts. 1. Using SetCell on your tilemap is a major bottleneck for a large dataset if not done properly. Unfortunately, if you are using a tilemap to render the visuals and trying to access that tilemap directly through the API, there's no way to fix that. It will always be a bottleneck, and that bottleneck isn't entirely related to the marshalling inefficiency of C# in Godot. The same bottleneck will be present in GDScript as well. It's down to the fact that SetCell must be called from the main thread. Since there is only one main thread, that means the logic will always be single threaded. You can run multithreaded CPU code in Godot with things like CallDeferred or CallThreadSafe, but all that does it wait for the main thread to become available and call the method there when it is. 2. The reason you cannot use a normal shader to run the simulation isn't because of Godot. It's because normal shaders and compute shaders are entirely different things. Graphics cards are purpose built for rendering pixels to the screen and can consume normal shaders without the need for any extra instructions because they are able to infer their usage directly from the shader code and are typically dispatched automatically as part of the rendering pipeline. Some examples of this would be fragment shaders or vertex shaders; this behaviour is not unique to Godot, but is true of all game engines and graphics libraries I have worked with over the past decade. Compute shaders are not rendering shaders, they are a set of custom instructions that are executed by your GPU. Essentially, you are trying to force your GPU to work like a CPU and though possible, it doesn't really WANT to do that and it needs quite a lot of hand holding. Your GPU is unable to make the same inferences about your custom compute shader that it can for normal shaders. The first shader in the video exists solely because we can't use a TileMap for rendering due to the single threaded constraint. The fastest option is to run the simulation logic on the GPU and simply return the updated dataset to our rendering shader which is also be executed by the GPU. The CPU is acting as a bridge between the two shaders and is still the bottleneck in this application, but since the single threaded logic being executed by the CPU has been minimized, that's where the performance gains are realized. If performance is paramount in a particular part of your game, it is best to execute as much of that logic as possible without accessing the Godot API; unless you are writing C++/Rust in GDExtension. The worst performance hits will come from accessing objects in the scene tree. Most of the data classes are written in pure C# in the .NET implementation of Godot and they can be used freely where applicable. I hope that helps to clear things up and thanks for watching!

  • @B.M._Gillette
    @B.M._Gillette 6 หลายเดือนก่อน

    my Godot doesn’t look the same as yours, I’ve followed every lesson for this series and I’m not stuck no more I followed all the downloads as well and am using visual studio Thank you btw this has been an awesome learning adventure and I’m excited to keep moving through your tutorials

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      I use Jetbrains Rider for my IDE; not Visual Studio. The video was done for VS because it is more accessible and free. There are also Godot plugins for VS Code which make the process even simpler, and still free. If you have $10USD a month to spare I would highly recommend Rider, but VS Code would be my second choice if I wanted a free solution. I may do a follow up to this explaining the process in the latest version of Godot and VS Code instead of visual studio as most people don't want all of the extra bloat that comes with a full VS installation.

    • @B.M._Gillette
      @B.M._Gillette 6 หลายเดือนก่อน

      @@hamsterbyte I would watch a video on what types of Godot plugins for VS code you would recommend

  • @jasmine-wt6lf
    @jasmine-wt6lf 6 หลายเดือนก่อน

    Would it be good to use .8?

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      I am using .NET 8 now. It is fully supported by Godot 4.2+ and is actually required for iOS support. Good question!

    • @swiftypopty1102
      @swiftypopty1102 6 หลายเดือนก่อน

      @@hamsterbyteBut web not supported yet with C# :(

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      @@swiftypopty1102 Unfortunately not. Hopefully by 4.3 or 4.4 They were prioritizing iOS Android while waiting for the full release of .NET 8 as .NET 7 didn't resolve the WASM/AOT issues. Now that .NET 8 is fully released I'm sure they are actively working on this.

    • @jamesgene4763
      @jamesgene4763 หลายเดือนก่อน

      @@hamsterbyte It would be really great if you put this in the description of the video. Thank you for the tutorial!!

    • @hamsterbyte
      @hamsterbyte หลายเดือนก่อน

      @@jamesgene4763 what exactly do you wish to be in the video? A lot has changed since Godot 4.0. I'll probably make a video on how to set up Godot with Viscose since most people use that or Rider. Rider isn't free though

  • @jaaferelsadig
    @jaaferelsadig 6 หลายเดือนก่อน

    Since I keep hearing C# is not as developed in Godot, I'm curious to know if you've hit any walls or experienced any limitations?

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      C# is fully supported in Godot. See my other reply. Thanks for watching!

  • @jaaferelsadig
    @jaaferelsadig 6 หลายเดือนก่อน

    Please continue with C# ❤

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      Working on another video right now actually. Most of my stuff is relatively advanced, and the next video is quite advanced as well, but I am considering some simpler topics. Also, to address your second comment, there are some minor limitations that I have experienced. These limitations are few and not likely to affect most developers. The two that I experience most often is difficulty in creating C# plugins, and the inability to use generic classes.

    • @jaaferelsadig
      @jaaferelsadig 6 หลายเดือนก่อน

      @@hamsterbyte that's fantastic, a mix of simple and advanced is a good strategy. I'm starting my own Gamedev journey and wanted a viable C# engine or framework so I appreciate your answer. Best of luck with everything!

  • @user-xk5bf5ey8g
    @user-xk5bf5ey8g 6 หลายเดือนก่อน

    thanks, I was struggling!

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      Glad I could help! Thanks for watching! There is also a plugin for Rider and VSCode with similar setup processes if you would rather use either of those as your IDE

  • @evervid9251
    @evervid9251 7 หลายเดือนก่อน

    at the end it doesnt matter which I wasnt expecting :)

    • @hamsterbyte
      @hamsterbyte 6 หลายเดือนก่อน

      For most game programming it really won't make a huge difference. There are certain things that are going to be much slower in GDScript like interacting with large datasets, procedural generation, etc. Anything that is computationally expensive. In which case you would want to go with C# or, if you have the knowledge, GDExtension and C++ or Rust. GDScript is more than adequate for most applications.