10 Godot Engine Mistakes You Might Make (Godot 4 / Godot 3)

  Рет қаралды 29,758

PlayWithFurcifer

PlayWithFurcifer

Күн бұрын

Пікірлер: 95
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Install Raid for Free ✅ IOS/ANDROID/PC: clcr.me/mbqaDe and get a special starter pack 💥 Available only for the next 30 days
@Sina_Qadri
@Sina_Qadri 11 ай бұрын
i only use await for Loading gamefiles and it works pretty fine i have more than 90 3D scenes instances then loads into the game but when i tried to load them at the same time it crashed and almost really burned my GPU to prevent this i added await 0.5s timer for each load and now it doesnt crash like come on loading almost a 32km by 30km world in 3d with almost Godot 4 looking graphics on godot 3 is already hard by its own
@GeneralMattimo
@GeneralMattimo 2 жыл бұрын
Forgetting that arrays and dictionaries are passed as references: A = [1,2,3] B = A B[0] = "hello" Print(A) Output ["hello",2,3] The cause of so so many of my bugs by forgetting B = A.duplicate()
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Now that you mention it, that is really weird. I got used to that by now
@GeneralMattimo
@GeneralMattimo 2 жыл бұрын
@@PlayWithFurcifer I didn't think I had but then tried to learn a little GDnative C++ and bugged up the other way around because C++ doesn't pass them as references unless u tell it to.
@sheepcommander_
@sheepcommander_ 7 ай бұрын
Ah didn't realize that C++ doesn't pass as reference, huh
@GeneralMattimo
@GeneralMattimo 7 ай бұрын
@@sheepcommander_ moving from gdscript to c++ is an experience.
@Theraot
@Theraot 2 жыл бұрын
If you are still collecting GODOT tips, I have one more for you: You know there are numeric values that have an slider in the inspector and other don't? Well, even they don't have an slider you can click and drag the number left and right to smoothly change it. But that is not all: hold SHIFT to make change slower, which is useful when you need more precision, and hold CTRL to snap the value to an integer. I did know I can drag the numbers, but not that SHIFT and CTRL had an effect while doing it, until very recently.
@coreyaruecker
@coreyaruecker Жыл бұрын
Just started using Godot and this little tip is something most blender users will intuit. That’s so far, one of my favourite things about Godot. I hated navigation and that in Unity. But Godot is identical in terms of viewport controls and little things like this which I love to see
@ItsMeAndru
@ItsMeAndru 5 ай бұрын
This is a very good tip. Thank you!
@Gdquest
@Gdquest 2 жыл бұрын
These tips videos are really nice! Would you like to do a KZbin collab with us on some Godot 4 tut or tips or something? For tweens, I'd expect remove_all() to work moving forward because it deletes the registered tween animations, so it shouldn't be able to continue the animation once the data got deleted. But that's definitely been a little confusing, and I've made the mistake of calling stop_all() over remove_all(). Thanks for the video!
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Sounds great! :) Let's talk on discord?
@Gdquest
@Gdquest 2 жыл бұрын
@@PlayWithFurcifer Sure! I'll email you my Discord ID through your KZbin email.
@robertonome2448
@robertonome2448 2 жыл бұрын
top 10 most awaited crossovers
@luisces
@luisces 2 жыл бұрын
My favorite godot KZbinrs together, sign me up
@Nero-hi3zf
@Nero-hi3zf 2 жыл бұрын
Here are some mistakes I used to make: 1. Signals + Multi-Threading = no no 2. Forgetting to free a Thread with 'wait_to_finish()' 3. Setting materials on a mesh resource instead on the MeshInstance. 4. Setting velocities (or even worse positions) directly on rigid physics bodies. 5. Using bodies instead of areas for bullet hit detection. 6. Removing a node from scene tree without calling queue_free() 7. Statically typing arrays as function parameters can cause funny lines like 'Cannot convert argument from Array to Array'. 8. Not understanding that 'await' is in NO way or form multi-threaded but a coroutine instead! 9. Setting values of locals within a lambda which have the same name as a variable in an outside (global) scope has no impact on the values of the variables within the outside (global) scope! (Note: 'global' means something different here than member) 10. Placing a GIProbe (it was Godot 3) not into the geometry 3d-node-based part of the scene tree, which causes the probe to have no effect at all.
@shinjite06
@shinjite06 Жыл бұрын
Tried this but now the ColorRect will stretch the pixels if you don't have a 1:1 ratio sized window.
@krzysztofswierzy4226
@krzysztofswierzy4226 2 жыл бұрын
There is one other error I see at least once per every page on Godots Q & A Forums : forgetting about mouse filter set to stop of overlaying control nodes :)
@beidero
@beidero 2 жыл бұрын
That one has gotten me countless times in the past, after about the 20th time I think I finally learned to check for it but it can still be tricky to track down in dynamic UIs.
@graydwarf22
@graydwarf22 2 жыл бұрын
@@beidero Just dealing with that today actually. Working on a card game framework and mouse events for overlaying cards is harder than expected. I played around with visual click tracking (everything is pure Area2D) or control based click tracking (treenode traversal with dead-ends) . The latter of the two took a bit to figure out.
@Theraot
@Theraot 2 жыл бұрын
That is a very common one, yes. Although it is usually something easy to spot (like a background element), for those cases where it is really hard to find, here is an extra tip: With the game running, open the debugger panel on the bottom, and then go to the Misc tab, it will show you the last control you clicked. You can then start clicking around and see there what is intercepting the clicks. You can double check with the Remote tab of the scene panel, also while the game is running.
@krzysztofswierzy4226
@krzysztofswierzy4226 2 жыл бұрын
@@Theraot A lot of people, me included, expand control nodes to fullscreen, while making visual changes only at the small part of it. That is why this problem is so hard to spot :)
@graydwarf22
@graydwarf22 2 жыл бұрын
@@Theraot WHAT!?!?! I never knew about that. That one is huge! Wish we had a tool/plugin/panel that would dump out all mouse input events.
@bengtstrand4476
@bengtstrand4476 2 жыл бұрын
"Make unique" has a cousin in "Local To Scene", a property (found under Resource in the inspector) that makes the resource unique when you instance scenes dynamically.
@Portponky
@Portponky 2 жыл бұрын
You're a real youtuber now that you're sponsored by Raid: Shadow Legends.
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Finally :D
@ReleeSquirrel
@ReleeSquirrel 2 жыл бұрын
That was great! Also that's the only Raid Shadow Legends ad I've ever seen that tells the story of that game. And you told it in a funny way! Way to go.
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Thanks :D
@2kReels
@2kReels 2 жыл бұрын
You have easily become my favorite godot channel after only watching 3 videos of you. Looking forward to go through the shader tutorials. Up until now, I never got into it ;)
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Thank you very much :) And have fun with the shaders! They are a bit weird at first, but not that hard
@pyryzer5324
@pyryzer5324 2 жыл бұрын
For some reason, if make an one-shot animation with 100% explosiveness, it has a massive delay before it can emit again. Meaning, if you want to make these kinds of particle effects often from a single source, like a cloud of particles when you jump, you should spawn a new particle object each time instead. (and delete it afterwards of course)
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Try calling the function restart() on the particle system!
@unfa00
@unfa00 2 жыл бұрын
Thanks for explaining the execution flow with await. It's indeed quite mind-melting.
@kunai9809
@kunai9809 Жыл бұрын
8:47 I thought it does NOT support mp3? As it's also not listed on the image you show
@keithwinget6521
@keithwinget6521 2 жыл бұрын
"Not making stuff unique". This has given me such a headache that I now frequently make any node's script a tool script and include a setter for resource exports that uses duplicate() to set the resource variable to a new unique instance of the resource automatically. This has been saving me the headache of making them unique every time, AND I can filter from the setter function and include whatever other conditions I need/want.
@GDScriptDude
@GDScriptDude 2 жыл бұрын
I recently had fun debugging material shaders (Godot v3.5) that should be unique since they would have different input parameters. Looking at the tscn file code shows the ids for them in the scene tree to see that they are not made unique. In my case I was setting the next_pass property of a material to the shader. Another debugging trick is to print the name of the material or shader instance, this prints its reference id to check if the same ones are being used. To make them unique I ended up duplicating a master version of my material in code.
@JosephCatrambone
@JosephCatrambone 2 жыл бұрын
`is_instance_valid()` is something I wish I knew about when I was first starting. Solid advice.
@CoreFlux
@CoreFlux 2 жыл бұрын
Holy S. I'm implementing this is_instance_valid() throughout my code immediately. I had some edge case problems with checking for null and didn't know why that was. THANKS!
@Smaxx
@Smaxx 2 жыл бұрын
Wait, does this make taking a Raid Shadow Legends sponsorship a mistake, too? Are we even the target audience for that game?😉
@a98k
@a98k 2 жыл бұрын
one more godot channel i enjoy, subscribing and excited for future content
@WIZUWIZUvik
@WIZUWIZUvik Жыл бұрын
hello, i have a problem my game keeps crashing with "all memory pool allocations are in use" error. How can I fix this?
@Roleplay78
@Roleplay78 2 жыл бұрын
Nice! I am surprised about the yield/await call used in such a way.
@DustinTjäder
@DustinTjäder Жыл бұрын
I loved the .ogg tip. Thanks 🙏
@bubblemage
@bubblemage 2 жыл бұрын
I wonder if there's an easier way to make a "player limited vision" without having to use light2d and lightoccluder2d? Like, the player not being able to see through walls and instead just see darkness on the other side.
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Pretty much sounds like the main application for light 2d. Maybe you can build the occluders programmatically from collision shapes? Someone might have solved this already
@bubblemage
@bubblemage 2 жыл бұрын
@@PlayWithFurcifer I've checked and tried with light2D on the player and the occluder on the wall tile in my top view 2d game, but the "darkness" gets rendered on top of the tile so I can't see the wall's sprite, meaning I can't make 1 tile walls for example, because they'll just be completely black and it looks bad :(
@faeandmagicka
@faeandmagicka 2 жыл бұрын
just beca a subscriber keep up the good work Sir.
@tonymorgan602
@tonymorgan602 2 жыл бұрын
Love you gorgeous people! These types of videos are worth their weight in uranium. When you just can't fix that error, this video is like a bar of chocolate, delivered by a cute bunny, on a sunny day, whilst wearing new shoes, smelling freshly baked doughnuts, with all your loved ones cheering you, and you find out that Furcifer's Fungeon gets a release date :)
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Awwww
@Theraot
@Theraot 2 жыл бұрын
So that is what physical keys are for!
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
I was wondering for a while before we found out :D
@AussieBazzo
@AussieBazzo 2 жыл бұрын
The 3d framebuffer allocation will slow down a 2d game on mobile significantly, but on newer devices it is still unnoticeable, also, can I ask what software you fella's use for video editing,? Thanks.☺
@WindBendsSteel
@WindBendsSteel 2 жыл бұрын
You must know how and when to use yield(). Although, you can't tell people not to use it just because you haven't found a good use for it.
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
But who will stop me?
@WindBendsSteel
@WindBendsSteel 2 жыл бұрын
@@PlayWithFurcifer no one
@graydwarf22
@graydwarf22 2 жыл бұрын
Good tips. Yield is a monster in the closet. Glad to see you guys working on something new.
@asthalis
@asthalis 2 жыл бұрын
A reeeaally useful video for cases every Godot developer has already had !
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Thank you very much :)
@Galomortalbr
@Galomortalbr 2 жыл бұрын
be careful with yields with objects outside of the main tree
@Theraot
@Theraot 2 жыл бұрын
I had slow load times with mp3 and even crashes (my guess is that something odd with the encoder caused an edge case in Godot), in particular in web exports. Ogg is much better. Although my experience is that Ogg is slightly larger (you say it is smaller?), it loads faster (it seems that with mp3 Godot takes a little longer to fill audio buffers).
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
OGG is a bit larger with same bitrate, but with a slightly lower bitrate it is both smaller and better quality (as far is my research goes, i dont have the ears to confirm that)
@asthalis
@asthalis 2 жыл бұрын
I started my own game with MP3 files and I quickly changed them into OGG files. By lowering the quality setting a bit (I use audacity to convert them), they're really smaller in my project and I could not notice any audio quality loss even with a headset.
@Niknokinater
@Niknokinater Жыл бұрын
'Await' is so backward coming from gsc where every called function must return before proceeding. It's nice using actual results & not function states. If one needs to run a function simultaneously for whatever reason, just gotta specify it with a single keyword without the need to inherently proof any other relevant script. It's irritating at times calling functions in Godot with seemingly no absolute guarantee of a timely return & having to proof stuff when I just want to expect a result first.
@ShakyDawn
@ShakyDawn 2 жыл бұрын
Well guys, I owe you a tank of *well.. something to drink that the algorithm dont like me to post*... That "is instance valid" literally took me out of a month long suffering spiral... Thanx a ton!!!!!! (And awesome video as always!!)
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Glad it was helpfull! :D Thanks
@intrusivethoughts3601
@intrusivethoughts3601 Жыл бұрын
Spent 3 hours trying to fix a problem godot engine made up, yes, made up, since the issue doesn't exist. The only solution for it would be to clean missing files, does godot have this cleaning option? The issue is missing index h frames times v frames, on animation player
@taoliu7312
@taoliu7312 2 жыл бұрын
1:19 Is that an @? What does @onready mean? 👀
@Theraot
@Theraot 2 жыл бұрын
That is an annotation. Which are part of GDScript 2.0 new syntax, which Godot 4 uses. @onready is what onready was for Godot 3.x.
@taoliu7312
@taoliu7312 2 жыл бұрын
@@Theraot 👍
@lawgyan2729
@lawgyan2729 2 жыл бұрын
Everything works, especially free, use until it is too late!Cool! Downloaded))
@saulnores3477
@saulnores3477 2 жыл бұрын
So. If my code in Godot 3.xx said yield, it means it won't work in Godot 4? That's dissapointing.
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
Yup it was renamed. You can find more info about GDScript 2.0 here: github.com/godotengine/godot/pull/39093 There are quite a few converters in the works. The Godot 4 Beta comes with a converter integrated. Haven't tested it yet though.
@saulnores3477
@saulnores3477 2 жыл бұрын
@@PlayWithFurcifer Thank you. I don't like this change. The word yield is used hundreds of times in my projects. I hate this change. Now I'll have to change this word hundreds of times. Just nonsense. By the way, your video is great and very informative.
@Theraot
@Theraot 2 жыл бұрын
@@saulnores3477 Godot 4 will convert those for you the first time you open a project made with Godot 3.x - There will still be things to change, but yield and a lot of the API renames won't be among those. Except when you yield on something Godot can't figure out. --- I have notes on what you will have to look for: - Now there are two typed version of min, max, clamp, sign and abs. One works with int and the other with float. You might need to figure out which you need on a case by case basis. - Some APIs now use StringName when they used String before. Godot will convert between them with no problem, but some things you may have to change some declaration from String to StringName to match what Godot uses. - There is no subarray, now it is slice, and be careful with the upper bound. - Tweens are no longer nodes. Which also means you should not add_child them, but you still need to keep a reference… It is better to migrate to the new API. - You need to copy the bodies of getters and setters manually. - Warning suppression are not migrated. Also Godot 4 defaults are more strict than Godot 3.x defaults. Plus there is an open issue on the suppression of the unused_parameter warning. - As I said, if Godot can't figure out what you are yielding on, you will have to write the await yourself. - Remember to Configure Blender and FBX2gltf - Some EditorPlugin API changes still need to be done manually, in particular renamed virtual functions. - Pay attention to the changes to the button pressed state and signal names. - You need to update exported variables that have an enumeration manually - It is now _get_configuration_warnings and returns a PackedStringArray, Godot won't upgrade this for you. - You need to specify class icons with @icon
@Theraot
@Theraot 2 жыл бұрын
@@saulnores3477 To clarify, on yield, Godot expect the signal name to be a string literal, or a variable identifier. If you have there something more complex (e.g. a ternary expression, or you do some string concatenation) then Godot won't be able to convert it to the new syntax.
@saulnores3477
@saulnores3477 2 жыл бұрын
@@Theraot Hi Alfonso. Thank you for your detailed explanation. You have been very polite. I learned many things with your answer. Thank you very much.
@maxg5196
@maxg5196 2 жыл бұрын
I'm curious, how much did Raid Shadow Legends pay you?
@leo_mars
@leo_mars 2 жыл бұрын
It is based on downloads. So probably $0 so far, some if they get downloads. kzbin.info/www/bejne/rYTQaaOgeLCigKs
@ArabGameDev
@ArabGameDev 2 жыл бұрын
glow on android has low fps :(
@holleey
@holleey 2 жыл бұрын
huh. OGG smaller than MP3? that's news to me. I went from OGG to MP3 because of size. quality is generally fine.
@Kenneth_Lo
@Kenneth_Lo 2 жыл бұрын
ogg is better quality in same bitrate compare to mp3, so you can use lower bitrate (size) in same quality of mp3.
@soran2290
@soran2290 2 жыл бұрын
Tutorials for godot 4 please
@pipeliner8969
@pipeliner8969 2 жыл бұрын
Please bring your videos to Odysee as well!
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
I have no experience with that platform, what is it for?
@pipeliner8969
@pipeliner8969 2 жыл бұрын
@@PlayWithFurcifer it's a great video platform and you can sync automatically to Odysee from KZbin. The amount of ads is getting annoying on KZbin unfortunately
@ltecheroffical
@ltecheroffical Жыл бұрын
Raid shadow legends 💀
@neilwalker4277
@neilwalker4277 2 жыл бұрын
Wav is better for sfx as it's less resource hungry and easier to stream. Great video as usual, but you've pretty much ruined it with a two minute advert. I've literally never seen an ad this long before, ever. I've think they have taken advantage of you . All it will do is result it lost viewers and every single viewer will skip the entire section so for this advertiser I've no idea what they were thinking, they have a zero result.
@PlayWithFurcifer
@PlayWithFurcifer 2 жыл бұрын
I really don't think the (90s) advert ruined the video, people can skip it and it performs well. You simply have no insight into the deal we made, so I do not understand how you can judge if it was a good one...
@neilwalker4277
@neilwalker4277 2 жыл бұрын
@@PlayWithFurcifer I'm glad you have sponsors, really am, and anything is better than being forced two unstoppable 20 second ads at the star 😉 Just commenting on the extent of it, feel free to ignore me. But yes, I skipped it all, that was my point.
@GDScriptDude
@GDScriptDude 2 жыл бұрын
I'm not a fan of Ads but I watched this one since it was fun.
@visibleshow
@visibleshow 2 жыл бұрын
First
5 INVALUABLE Godot 4 Code Patterns (feat. @Gdquest )
11:39
PlayWithFurcifer
Рет қаралды 73 М.
I Used Godot For 100 Hours, Here’s What I Learned
35:09
LazyAlarm
Рет қаралды 1,3 МЛН
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
Mom Hack for Cooking Solo with a Little One! 🍳👶
00:15
5-Minute Crafts HOUSE
Рет қаралды 23 МЛН
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН
You're missing out if you don't use these in Godot 4
10:49
MrElipteach
Рет қаралды 10 М.
How To Shader. (using Godot Engine)
7:28
PlayWithFurcifer
Рет қаралды 53 М.
We made Vampire Survivors BUT in 10 Lines of Code
7:08
PlayWithFurcifer
Рет қаралды 1 МЛН
Why I failed at creating a video game
16:20
Horse Dev
Рет қаралды 79 М.
25 Gamedev Tips for Everyone
15:00
PlayWithFurcifer
Рет қаралды 13 М.
AI Will Make Better Games Than Me One Day
1:07:14
Jonas Tyroller
Рет қаралды 60 М.
How Games Make VFX (Demonstrated in Godot 4)
5:46
PlayWithFurcifer
Рет қаралды 366 М.
Do THIS Before You Publish Your Godot Game
3:33
StayAtHomeDev
Рет қаралды 191 М.
Dear Game Developers, Stop Messing This Up!
22:19
Jonas Tyroller
Рет қаралды 762 М.
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН