hamsterbyte
hamsterbyte
  • Видео 12
  • Просмотров 108 973
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 star...
Просмотров: 5 540

Видео

Godot 4 C# Addon You Didn't Know You Needed - Color Palettes
Просмотров 973Год назад
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,4 тыс.Год назад
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)
Просмотров 8 тыс.Год назад
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)
Просмотров 7 тыс.Год назад
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)
Просмотров 7 тыс.Год назад
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...
Просмотров 30 тыс.Год назад
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,3 тыс.Год назад
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,8 тыс.Год назад
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,8 тыс.Год назад
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,9 тыс.Год назад
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
Просмотров 38 тыс.Год назад
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...

Комментарии

  • @YerXRe
    @YerXRe День назад

    Hey man, incredible video with one of the best quality I've seen in a while. Quick question: can I use gdscript instead of C# for the dispatcher code? If not, why?

  • @mateokladaric
    @mateokladaric 10 дней назад

    What about Steam version of Godot

  • @rubenkoch6455
    @rubenkoch6455 27 дней назад

    Hi, I keep getting this Error at 8.52: CS1929 'Vector2' does not contain a definition for 'GetRaw' and the best extension method overload 'Extensions.GetRaw(Vector2)' requires a receiver of type 'System.Numerics.Vector2'. Does anyone know what could be wrong?

    • @rubenkoch6455
      @rubenkoch6455 26 дней назад

      I fixed it! I missed the part where you need to put "using Godot;" before "using System" in the Extensions file!

  • @remoherewidsumcarrots
    @remoherewidsumcarrots Месяц назад

    what ide do you use?

  • @superfishial866
    @superfishial866 2 месяца назад

    God bless ya

  • @yoskokleng3658
    @yoskokleng3658 2 месяца назад

    c# hard for me (gd script) :)))

  • @michaelmiller6365
    @michaelmiller6365 2 месяца назад

    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 2 месяца назад

      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 3 месяца назад

    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 3 месяца назад

      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 3 месяца назад

    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 3 месяца назад

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

  • @ShanePatSmith
    @ShanePatSmith 3 месяца назад

    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 3 месяца назад

      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 3 месяца назад

    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 3 месяца назад

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

  • @ReasonMakes
    @ReasonMakes 3 месяца назад

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

  • @stanislavgranovskiy4111
    @stanislavgranovskiy4111 4 месяца назад

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

    • @hamsterbyte
      @hamsterbyte 4 месяца назад

      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 4 месяца назад

    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 4 месяца назад

      .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 4 месяца назад

      @@hamsterbyte thank you!

  • @sheataru
    @sheataru 5 месяцев назад

    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 4 месяца назад

      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 4 месяца назад

      @@hamsterbyte thank you!!

  • @sven4627
    @sven4627 5 месяцев назад

    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 5 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 5 месяцев назад

      Is the script attached to the player?

    • @teodosiytanev5762
      @teodosiytanev5762 5 месяцев назад

      @@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 5 месяцев назад

      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 6 месяцев назад

    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 6 месяцев назад

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

  • @sunthasbayne
    @sunthasbayne 6 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 6 месяцев назад

      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 6 месяцев назад

    Great work! More C# Godot content plz!

  • @densket_
    @densket_ 6 месяцев назад

    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 6 месяцев назад

      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 6 месяцев назад

    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 6 месяцев назад

      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 6 месяцев назад

      @@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 7 месяцев назад

    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 6 месяцев назад

      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 7 месяцев назад

    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 7 месяцев назад

      All new videos are done with a larger font and scale

  • @AVENGER4565
    @AVENGER4565 7 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 7 месяцев назад

      Hope you find it helpful!

  • @zsolezk
    @zsolezk 7 месяцев назад

    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 7 месяцев назад

      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 7 месяцев назад

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

  • @BlanketBaron
    @BlanketBaron 7 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 7 месяцев назад

      You're very welcome I hope it helps!

    • @BlanketBaron
      @BlanketBaron 7 месяцев назад

      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 7 месяцев назад

    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 7 месяцев назад

      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 7 месяцев назад

      @@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 7 месяцев назад

      @@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 7 месяцев назад

      @@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 7 месяцев назад

    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 7 месяцев назад

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

  • @freiaz494
    @freiaz494 7 месяцев назад

    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 7 месяцев назад

      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 7 месяцев назад

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

  • @naturelist
    @naturelist 8 месяцев назад

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

  • @ahmki52298
    @ahmki52298 8 месяцев назад

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

  • @ahmki52298
    @ahmki52298 8 месяцев назад

    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 7 месяцев назад

      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 8 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 8 месяцев назад

      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 8 месяцев назад

      Thank you ! :)@@hamsterbyte

  • @Snapper-gaming
    @Snapper-gaming 8 месяцев назад

    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 8 месяцев назад

      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 8 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 8 месяцев назад

      @@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 8 месяцев назад

    Subbed so fast.

    • @hamsterbyte
      @hamsterbyte 8 месяцев назад

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

    • @Wiwcac
      @Wiwcac 8 месяцев назад

      @@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 8 месяцев назад

    who tf pronounces godot "godoe"

    • @ImOnioned
      @ImOnioned 8 месяцев назад

      99% of people

    • @hamsterbyte
      @hamsterbyte 8 месяцев назад

      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 8 месяцев назад

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

    • @Even-Steven
      @Even-Steven 4 месяца назад

      @@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 4 месяца назад

      @@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 8 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 8 месяцев назад

      You're very welcome

  • @merthyr1831
    @merthyr1831 8 месяцев назад

    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 8 месяцев назад

      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 4 месяца назад

      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 8 месяцев назад

    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 8 месяцев назад

      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 8 месяцев назад

    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 9 месяцев назад

    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 9 месяцев назад

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

    • @swiftypopty1102
      @swiftypopty1102 9 месяцев назад

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

    • @hamsterbyte
      @hamsterbyte 9 месяцев назад

      @@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 9 месяцев назад

    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 9 месяцев назад

      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 9 месяцев назад

    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 9 месяцев назад

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

    • @Lexie_T
      @Lexie_T 9 месяцев назад

      @@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 9 месяцев назад

      @@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 8 месяцев назад

      ​@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 8 месяцев назад

      @@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 9 месяцев назад

    @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 9 месяцев назад

      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 9 месяцев назад

      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 9 месяцев назад

    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 9 месяцев назад

    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 9 месяцев назад

      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 9 месяцев назад

    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 9 месяцев назад

      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!