Deep Dive Dev
Deep Dive Dev
  • Видео 10
  • Просмотров 37 884
12 Tips to Boost Your Godot Game's Performance
Here are some tricks that'll help boost your Godot game's performance. Enjoy!
Chapters:
0:00 Intro
1:01 Jolt
1:55 Rapier
3:08 Physics Tick Rate
4:33 Less Colliders
5:18 move_and_slide() alternatives
6:48 faster programming languages
7:15 fewer solver iterations
7:46 run physics on separate thread
8:16 multithreading
8:37 compute shaders
9:28 Use GDScript Util Classes
10:11 Be smart about loading assets
10:39 That's all folks
Manymies: github.com/Griiimon/Manymies
C++: docs.godotengine.org/en/stable/tutorials/scripting/gdextension/what_is_gdextension.html
C#: docs.godotengine.org/en/stable/tutorials/scripting/c_sharp/c_sharp_basics.html
Rust: godot-rust.github.io/
Multi threading: docs.godotengine.org/en/stab...
Просмотров: 6 583

Видео

Godot Finite State Machines Made Easy - A Simpler Method for Smarter Enemies
Просмотров 615Месяц назад
We're diving into the world of Finite State Machines! Take a sip of lemonade every time I say the word "state". Play my games on itch: breckheck.itch.io/ Chapters: 00:00: Intro 00:30: What is State? 02:20: State Class 3:53: State Machine Class 4:25: Stealth Game Example 5:35: Flow Chart Setup 6:18: Enemy FSM Setup and Code 6:43: Add Shoot State 7:48: More Complex FSM Setups and Substate 8:35: W...
Boost Godot Project Performance With This Simple Trick
Просмотров 24 тыс.4 месяца назад
Join the community discord! discord.gg/K4EZEWF9 Play my games on itch: breckheck.itch.io/ Here's a quick tip in the Godot universe I think the world should know about. GDScript static typing performance gains. Enjoy!
How I Made My First Multiplayer Game in 48 Hours | Jam Devlog 3
Просмотров 1,4 тыс.4 месяца назад
I joined another game jam! This time its a multiplayer game for a console you probably haven't heard of. In this episode, we develop the game Pirate Panic in 2 days. Enjoy! Join the discord! discord.gg/K4EZEWF9 Play my games on itch: breckheck.itch.io/ Chapters: 00:00: Intro 00:20: GameNite 1:08: Brainstorming 2:26: Starting the Game! 3:45: TileMap 4:46: Pirate Art and Movement 5:29: Digging 6:...
I Made a Spooky Strategy Game in 5 Days | Jam Devlog 2
Просмотров 7495 месяцев назад
I Joined another Game Jam! This one was a spooky strategy game built with the godot engine. Play Soul Weaver: breckheck.itch.io/soul-weaver Jame Gam 40 Submissions: itch.io/jam/jame-gam-40/entries Join the discord! discord.gg/K4EZEWF9 Play my games on itch: breckheck.itch.io/ Chapters: 0:00: Intro 0:20: Brainstorming 0:40: Game Idea 1:49: Project Start 2:50: Pathfinding 4:13: Art Change 5: 38: ...
I Made a Chill Fishing Game in 3 Days | Jam Devlog 1
Просмотров 2,3 тыс.5 месяцев назад
I Joined a Game Jam last weekend! Let's see how I did Play Waters of Fortune: breckheck.itch.io/waters-of-fortune Mini Jam 158 Submissions: itch.io/jam/mini-jam-158-shopping/entries Chapters: 0:00: Intro 0:40: Coming Up With Ideas 2:34: Starting the Project 2:44: Water 3:55: Boat and Player 4:35: Fishing Rod 5:36: Fish 7:21: Cards and Trading 7:39: Clouds 8:14: Upgrades 9:30: Music 9:54: OST 11...
I Made Over 250 Fractals With Chaos Game
Просмотров 1366 месяцев назад
A montage of fractals renderered using Chaos Game! Don't ask me how long these took to render. Other video on how it works: ruclips.net/video/Y_o9Vo5nTT0/видео.html
Chaos Game - A Surprising Method To Generate Fractal Patterns
Просмотров 4326 месяцев назад
Today we dive into Chaos Game! Chapters: 0:00 Intro 0:23 What Is It? 0:52 How It Works 1:40 Switching to Lerp 2:29 Adding logic 6:58 Sequences 7:30 What's It Good For? 8:44 Conclusion links: en.wikipedia.org/wiki/Chaos_game www.sciencedirect.com/science/article/pii/S2001037021004736
Unlocking the Power of Binary Search Trees - The Basics of the Gateway Data Structure
Просмотров 2667 месяцев назад
Today we kick off the dive into binary search trees! Chapters: 0:00 Intro 0:47 Insertion 2:19 Insertion Code 3:16 Searching 4:01 Searching Code 4:29 Deletion 5:59 Deletion Code 7:12 Balancing 9:10 Balancing Code 10:09 Duplicates? 10:36 Duplicates Code 10:51 Node Data Types 11:07 Binary Representation 11:42 Morse Code 11:58 Applications 12:50 LL vs Array vs BST 13:07 Conclusion animations made w...
Poisson Disk Sampling: Unshrouding the Secrets of Uniformly Distributed Points
Просмотров 1,7 тыс.7 месяцев назад
Today we dive into poisson disk sampling! Chapters: 0:00 Intro 0:16 Applications 0:39 Why Not Random Points? 1:07 Algorithm Visualization 5:18 Code 7:14 Performance 8:01 Conclusion animations made with MotionCanvas: motioncanvas.io/ big thanks to hhenrichsen for his MotionCanvas library: github.com/hhenrichsen/canvas-commons/tree/main more on poisson disk sampling: www.sciencedirect.com/science...

Комментарии

  • @rsBrad
    @rsBrad 2 дня назад

    Love it! I used this algorithm to generate a neverending asteroid field for a 2d spaceflight game. Works beautifully!

  • @leandrodfcorreia2
    @leandrodfcorreia2 11 дней назад

    Tried using Rapier2D. Framerate decreased from 27 fps (with 819 simultaneous colliding enemies) to 8 fps. And yes, I used the faster version of it. :(

  • @paxtianplays8735
    @paxtianplays8735 13 дней назад

    This is great. Static typing is always my preference, I had no idea it was also a speed boost!

  • @davidj3048
    @davidj3048 14 дней назад

    Great video! Will try some of it out!

  • @P434-m9u
    @P434-m9u 14 дней назад

    i have 300 instantly enemy spawn with 5 different attack pattern every 0.1 second and locking it at 400 enemy max.. is it good ?

  • @cheesymcnuggets
    @cheesymcnuggets 14 дней назад

    Heyo sorry be that guy but it really does irritate my misophonia, maybe just export the audio file to audacity, drop the decibels by a comfortable margin (this removes noise and the quiet breaths) and for deep breaths, tongue clicks and etc, you do kinda just have to analyse the patterns on the audio visualiser thingy, to help differenciate where you start sounding words from where the noise spikes begin and cut it out milliseconds before you start sounding the actual words. It takes a bit of time but it good practice. It's been years since I made any videos but im guessing there might be software or AI now that could help with this process if you cant be bothered but i have no idea if there is. I mean you don't have to do any of this, i still watched and enjoyed the video regardless, catering to people with misophonia probably isnt if worth the effort if you're a busy person but just thought id put it out there. Anyways, i really want to learn all those deeper under the hood optimisations people do to turn their limit of 3,000 entities into 300,000 but it seems so scary, it's almost like it's spaghetti but in another dimension. Like normal spaghetti code is 2 dimensional but adding scripts in other languages and messing with servers and all that other nonsense is 3 dimensional spaghetti and it can't not be spaghetti whereas 2 dimensional spaghetti is completely avoidable but 3 dimensional spaghetti is a consequence of programming outside of gdscript and the engine. I will give an exception to shaders because theyre kinda their own thing, unless of cause you write a shader that literally needs external programming to function... that stuff might as well be 4 dimensional spaghetti jk

  • @Idkikdhdnbd
    @Idkikdhdnbd 15 дней назад

    7:04 wtf is that sound

  • @yusarimahubara
    @yusarimahubara 15 дней назад

    The less colliders just it's just stupid, it's not the amount of colliders you have in your game but how many interact with each other. You have to separate the concepts and computationally having two shapes that do not collide with each other has no cost. Keep your body collision shapes and hurtbox collisions in one place guys don't do what this freak did. There is almost no difference between C# and GDScript performance. It is clear that he is someone who came from doing an udemy course and has never programmed inside a medium-large game in his life. Stupid soulless garbage content creators.

  • @Sonngohanda
    @Sonngohanda 15 дней назад

    That's a part of why Godot was so slow in the past, and in certain cases still is. The Core Api relied a lot in Magic Strings, and the Variety Type. The performance would be amazing if other languages were first - class citizen I guess GDscript will eventually get there.

  • @diligencehumility6971
    @diligencehumility6971 15 дней назад

    The biggest performance gain you can get is changing to C#

    • @Sonngohanda
      @Sonngohanda 15 дней назад

      C# performance isn't actually that great in Godot (Not the language's fault), each Godot api call is a whole glued marshalling conversion that relies in Magic Strings, barely typed since is designed for Gdscript. The more api calls, the less performance gains You'd need to ditch the whole editor node system to get a huge performance difference, and just leverage Dotnet apis or wait for the Gdextension C# update. For Roguelikes and generative content would be beneficial tho. Anyway, for performance nothing beats recompililing the engine and writing C++ stuff modules right in the library, Rust would be amazing if it were officially supported.

  • @umapessoa6051
    @umapessoa6051 15 дней назад

    1 - Stop using Godot 😂

  • @revimfadli4666
    @revimfadli4666 15 дней назад

    I'm making an evolution simulator where I'd need to enable fats forwarding the physics sim. I'm thinking of manually ticking it multiple times per frame. Are there other optimisations possible outside ones in this vid?

  • @Dreadkrisz
    @Dreadkrisz 16 дней назад

    Good video, thanks for the info, but I couldn’t finish because of all the mouth noises. You might need to change mic settings, filters, or position it better.

  • @IsaacLobaoCerejo
    @IsaacLobaoCerejo 16 дней назад

    great video, thanks

  • @researcher2993
    @researcher2993 16 дней назад

    Hold this guide is actually goated

  • @elriano1
    @elriano1 17 дней назад

    I've never really understood why GDScript exists. C# is better supported outside of Godot and results in better performance within Godot. It's always awkward when debugging and checking the forums only to find all of the solutions in GDScript.

  • @MEMUNDOLOL
    @MEMUNDOLOL 17 дней назад

    i dont get it if making your own custom collision system with area2d and 180 lines of gdscript is more performant than cpp source code implemented base collisions, why this slow code still isnt refactored on 12th year of godot development?

  • @UocLv
    @UocLv 17 дней назад

    When editing your video, please start by cleaning up the audio track. Remove any inhales, lip smacking, or other distracting sounds. I'm not a fan of mouth sounds, and it makes it difficult for me to enjoy the video.

    • @DeepDiveDevelop
      @DeepDiveDevelop 16 дней назад

      Thanks for the feedback, I'll try to clean it up better in the next one. I didn't catch a lot of them editing without my headphones

  • @NexusBaum
    @NexusBaum 17 дней назад

    Is Jolt still needed in 4.3? I thought, it was build into the engine...

  • @Kiyuja
    @Kiyuja 17 дней назад

    I had no idea Godot had Rust support. I always used C# but if getting Rust to work isnt a huge hassle then I'm all in

    • @5minutemovies977
      @5minutemovies977 17 дней назад

      Godot has bindings for many other languages, so if you know rust, you're in luck. There's no way such a popular language doesn't have a decent plugin

    • @Kiyuja
      @Kiyuja 17 дней назад

      @@5minutemovies977 After the video I looked up the Godot Docs and indeed it has scripting support for other low level languages, it actually surprised me. Only "annoyance" is gonna be setting an external editor up for it, I really wish there could be an in-editor approach but oh well, its not a total deal breaker, I'd take the Rust performance any day!

    • @akatsukilevi
      @akatsukilevi 4 дня назад

      As someone that has used Rust on my project but switched to C#: Not everything is supported, and some stuff can end up being rather limited. It is good to use, but be aware of the trade-offs and the entire thing still being WIP

    • @Kiyuja
      @Kiyuja 2 дня назад

      @@akatsukilevi thats very good to know, thank you! Integrating non-GDScript in Godot is always kinda annoying as the editor doesnt have native support for other languages. I personally would love to avoid C# for games as apart from the Async/Await implementation it adds a lot of overhead. Ideally I'd use Bevy but I really like having an actual editor with an UI hmm

  • @SirBartolomew
    @SirBartolomew 17 дней назад

    Does Jolt still perform better than default in 4.3?

    • @rodolfolorote9059
      @rodolfolorote9059 17 дней назад

      It does

    • @dsmeckt2283
      @dsmeckt2283 17 дней назад

      Probably will until godot version 100.1

    • @thefufuu3157
      @thefufuu3157 15 дней назад

      it does but not in all cases ... i have a 3d scene with around 400 colission bodys both physics give up

  • @treysonsearle8441
    @treysonsearle8441 17 дней назад

    Firebelly udemy course?

  • @635574
    @635574 17 дней назад

    I tried to setup my character-body2D enemies with tweens between their movement and only updating move and slide every 10th frame, while it works it does not result inthem actually colliding. Only running the move and slide every 10 frames works for now as I really needed to 10x the perf for basic playability with 200 enemies(that are also capped with a backlog), keeping it until I decide on more labor intensive optimisation after I put in all the core features of my horde game (holocure but a satirical game where you switch with multiple characters)

  • @G4M5T3R
    @G4M5T3R 17 дней назад

    TIL you could just offload the entire physics process to another thread with just a tick of a checkbox.

    • @ran_ver
      @ran_ver 15 дней назад

      A small forewarning for anyone thinking of using this option as of the current date (Oct 2024), multithreaded physics still has some bugs that cause issues with fundamental features and can cause crashes.

  • @Ralke1
    @Ralke1 18 дней назад

    awesome tips, mostly are trully hidden and you showed us, thanks for sharing!

  • @dennisandress6561
    @dennisandress6561 19 дней назад

    I like clean code, so I already did that but I didn't know it would make a difference, thanks

  • @heavymetalmixer91
    @heavymetalmixer91 19 дней назад

    Excellent video for newbies about the topic, tbh the concept seems to be quite easy to implement, but how easy would it be without the "State" class from Godot?

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

    it is not massive Performance boost. it is better use gd script on prototype or demo projects for real thing it is better to use C++ or C. my general reason using gd script is fast compile time. but when projects ready. I convert my code to C++ or C

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

    I like your approach to hierarchical state machines. If I understand it correctly, are we basically adding a substate machine as a child of a state, and simply calling the substate machine’s ready, input, process and physics_process methods inside the parent state’s enter, handle_input, update and physics_update methods respectively?

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

    It was funny watching this because I slowly realised that you programmed this in the exact same way I did when I attempted a finite state machine system. A good sign that I’ve done something right I think! The differences that I can tell are that you’ve added separate ‘continuous’ steps for each type of update. Which is a good shout. Bespoke behaviour if transitioning to/from a specific state is also an interesting idea. One thing I haven’t added yet but I’m meaning to next time I work on this, is a Record variable on the State Machine node. It’d track all the Ticks at which a State is transitioned to. Probably using the Tick as a key and the State name as a Value in a dictionary. It’d be useful for answering questions of ‘were they in X state 5 secs ago’. Thank you for the video! It’ll be useful to me for refining the system I happen to be working on

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

    Oohhhhhhhhh, if i use a seedValue to generate the points, i can reach the same pattern all the time. Also, if i put each point with differenct R i can set different strats to use like filling trees and rocks, or first rocks then trees, but rocks has radius of 15 and trees of 5, soo trees are more close than rocks in a florest like, but in a mountain i can just switch both and had more rocks together and few trees as well... Dude, i need to code this, not mind, but i will try my own version, my quadTree is not perfect, but works to me, also, my A* pathfinder almost worked, the issue was trying to use it at the same time to a really large of entitys, in the maze test that are really much more complex than any real case for now, and i not implemented path reusability or even lowering grid levels to just get arround the correct coords before getting even closer, soo, my code is kinda raw, but already works very well for a single entity going into a maze I guess i can make this as well to improve my procedural generation even further LOL

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

    C# and C++ have a massive community so there is there, that means you just need to know what you are looking for they are not originally designed for game programming but had business and scientific backings

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

    ​@DeepDiveDevelop I never tested it but I always use typed because it helps me a lot staying between desired results. I never thought that not doing it will have a performance cost. Good to know it, thank you.

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

    Thank you for making this video, I've heard the same answer from others when it comes to the performance gain of static typing, this help's reinforce their statements. I forgot that you could set the editor to error at non-static types, so thank you for that reminder.

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

    I always static type everything simply for auto complete purposes.

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

    tl;dr Use staticly typed variables bc gdscript can decide what it doesn't need to do, making everything faster. Excellent Untyped Declaration tip too. Great video, thanks. Subbed.

  • @PlayBASIC-Developer
    @PlayBASIC-Developer 2 месяца назад

    Static types make compile time optimization a reality also..

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

    Hey thanks this was actually helpful even if not with performance it was with cleaner code and the video was right to the point.

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

    nah bro. cause i really thought that it was going to be something that i didnt know, fak u 😢😢😢😢😢😢

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

    I hate dynamic typing. Static typing just solves so many issues and, in my opinion, reads better. I think in types and values, not just values.

  • @shrippie-4214
    @shrippie-4214 2 месяца назад

    Good thing I mostly learned Godot not knowing how to make variables any other way than Static types

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

    I'm slightly disappointed cause I was already using these Good video tho

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

    Good to know, i thought is was like in python where it does not give you more performance. Also it can prevent you from generating bugs. So its probably worth all the time - even in non-performance-critical parts of the projects.

  • @Godot-Bro
    @Godot-Bro 2 месяца назад

    Great game and devlog! I am pretty new to Godot myself, but I am doing something similar to you--making devlogs on game jams/small projects. Good luck to you in your pursuits!

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

    I do miss the days when you had no "variable" types and had to follow strict typing.

  • @asdfasdfasdfasdf-f3p
    @asdfasdfasdfasdf-f3p 2 месяца назад

    This simple example should be in the godot documentation with an explanation - you can use the Variant type, but with a 30% performance loss.

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

    Personally, I use and recommend all the editor warnings, except for INFERRED_DECLARATION. As a Rust/Golang enjoyer, I simply can't understand why would inferred types ever be considered a negative thing, and the verbosity in GDScript (especially with enums) without type inference is unbearable. What really bothers me with GDScript is that static typing doesn't give you static analysis. Even if your variables are typed statically, the values assigned to them, member access, method calls, etc. are _sometimes_ evaluated only at runtime. So I need to run the game to learn that something doesn't exist because I renamed it, even though Godot knows the specific type, and should statically know that it doesn't have that member.

  • @_.-.
    @_.-. 2 месяца назад

    Wait, you Neanderthals seriously program without declaring variable types?

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

    It's like remembering to put % after everything in QBASIC that should be an int.

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

    How do you do the terrain creation in Asesprite at 6:38 ?