Тёмный

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

PlayWithFurcifer
Подписаться 42 тыс.
Просмотров 29 тыс.
50% 1

Install Raid for Free ✅ IOS/ANDROID/PC: clcr.me/mbqaDe and get a special starter pack 💥 Available only for the next 30 days
Wishlist Super Kill-BOI 9000 and play the demo: store.steampowered.com/app/21...
Wishlist Furcifer's Fungeon:
store.steampowered.com/app/17...
Join our discord server: / discord
Follow us on twitter to stay updated on Furcifer news and tutorials:
/ tweetfurcifer
--
0:00 Mistakes!
1:56 Sponsoring!
3:33 Mistakes again!

Опубликовано:

 

26 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 95   
@PlayWithFurcifer
@PlayWithFurcifer Год назад
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 6 месяцев назад
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
@Gdquest
@Gdquest Год назад
These tips videos are really nice! Would you like to do a RU-vid 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 Год назад
Sounds great! :) Let's talk on discord?
@Gdquest
@Gdquest Год назад
@@PlayWithFurcifer Sure! I'll email you my Discord ID through your RU-vid email.
@robertonome2448
@robertonome2448 Год назад
top 10 most awaited crossovers
@luisces
@luisces Год назад
My favorite godot RU-vidrs together, sign me up
@GeneralMattimo
@GeneralMattimo Год назад
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 Год назад
Now that you mention it, that is really weird. I got used to that by now
@GeneralMattimo
@GeneralMattimo Год назад
@@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_ 2 месяца назад
Ah didn't realize that C++ doesn't pass as reference, huh
@GeneralMattimo
@GeneralMattimo 2 месяца назад
@@sheepcommander_ moving from gdscript to c++ is an experience.
@Theraot
@Theraot Год назад
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 27 дней назад
This is a very good tip. Thank you!
@Portponky
@Portponky Год назад
You're a real youtuber now that you're sponsored by Raid: Shadow Legends.
@PlayWithFurcifer
@PlayWithFurcifer Год назад
Finally :D
@Nero-hi3zf
@Nero-hi3zf Год назад
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 7 месяцев назад
Tried this but now the ColorRect will stretch the pixels if you don't have a 1:1 ratio sized window.
@krzysztofswierzy4226
@krzysztofswierzy4226 Год назад
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 Год назад
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 Год назад
@@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 Год назад
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 Год назад
@@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 Год назад
@@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 Год назад
"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.
@2kReels
@2kReels Год назад
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 Год назад
Thank you very much :) And have fun with the shaders! They are a bit weird at first, but not that hard
@ReleeSquirrel
@ReleeSquirrel Год назад
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 Год назад
Thanks :D
@pyryzer5324
@pyryzer5324 Год назад
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 Год назад
Try calling the function restart() on the particle system!
@Roleplay78
@Roleplay78 Год назад
Nice! I am surprised about the yield/await call used in such a way.
@unfa00
@unfa00 Год назад
Thanks for explaining the execution flow with await. It's indeed quite mind-melting.
@Smaxx
@Smaxx Год назад
Wait, does this make taking a Raid Shadow Legends sponsorship a mistake, too? Are we even the target audience for that game?😉
@a98k
@a98k Год назад
one more godot channel i enjoy, subscribing and excited for future content
@faeriemagicka
@faeriemagicka Год назад
just beca a subscriber keep up the good work Sir.
@DG-hw5zy
@DG-hw5zy Год назад
I loved the .ogg tip. Thanks 🙏
@keithwinget6521
@keithwinget6521 Год назад
"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.
@graydwarf22
@graydwarf22 Год назад
Good tips. Yield is a monster in the closet. Glad to see you guys working on something new.
@CoreFlux
@CoreFlux Год назад
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!
@GDScriptDude
@GDScriptDude Год назад
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 Год назад
`is_instance_valid()` is something I wish I knew about when I was first starting. Solid advice.
@Theraot
@Theraot Год назад
So that is what physical keys are for!
@PlayWithFurcifer
@PlayWithFurcifer Год назад
I was wondering for a while before we found out :D
@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?
@AussieBazzo
@AussieBazzo Год назад
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.☺
@kunai9809
@kunai9809 Год назад
8:47 I thought it does NOT support mp3? As it's also not listed on the image you show
@soran2290
@soran2290 Год назад
Tutorials for godot 4 please
@asthalis
@asthalis Год назад
A reeeaally useful video for cases every Godot developer has already had !
@PlayWithFurcifer
@PlayWithFurcifer Год назад
Thank you very much :)
@tonymorgan602
@tonymorgan602 Год назад
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 Год назад
Awwww
@lawgyan2729
@lawgyan2729 Год назад
Everything works, especially free, use until it is too late!Cool! Downloaded))
@Theraot
@Theraot Год назад
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 Год назад
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 Год назад
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.
@bubblemage
@bubblemage Год назад
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 Год назад
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 Год назад
@@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 :(
@Galomortalbr
@Galomortalbr Год назад
be careful with yields with objects outside of the main tree
@WindBendsSteel
@WindBendsSteel Год назад
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 Год назад
But who will stop me?
@WindBendsSteel
@WindBendsSteel Год назад
@@PlayWithFurcifer no one
@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.
@holleey
@holleey Год назад
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 Год назад
ogg is better quality in same bitrate compare to mp3, so you can use lower bitrate (size) in same quality of mp3.
@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
@ShakyDawn
@ShakyDawn Год назад
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 Год назад
Glad it was helpfull! :D Thanks
@saulnores3477
@saulnores3477 Год назад
So. If my code in Godot 3.xx said yield, it means it won't work in Godot 4? That's dissapointing.
@PlayWithFurcifer
@PlayWithFurcifer Год назад
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 Год назад
@@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 Год назад
@@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 Год назад
@@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 Год назад
@@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.
@ArabGameDev
@ArabGameDev Год назад
glow on android has low fps :(
@maxg5196
@maxg5196 Год назад
I'm curious, how much did Raid Shadow Legends pay you?
@luism9886
@luism9886 Год назад
It is based on downloads. So probably $0 so far, some if they get downloads. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-wSm8pjCKoJI.html
@taoliu7312
@taoliu7312 Год назад
1:19 Is that an @? What does @onready mean? 👀
@Theraot
@Theraot Год назад
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 Год назад
@@Theraot 👍
@pipeliner8969
@pipeliner8969 Год назад
Please bring your videos to Odysee as well!
@PlayWithFurcifer
@PlayWithFurcifer Год назад
I have no experience with that platform, what is it for?
@pipeliner8969
@pipeliner8969 Год назад
@@PlayWithFurcifer it's a great video platform and you can sync automatically to Odysee from RU-vid. The amount of ads is getting annoying on RU-vid unfortunately
@ltecheroffical
@ltecheroffical 8 месяцев назад
Raid shadow legends 💀
@neilwalker4277
@neilwalker4277 Год назад
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 Год назад
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 Год назад
@@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 Год назад
I'm not a fan of Ads but I watched this one since it was fun.
@visibleshow
@visibleshow Год назад
First
@guywithknife
@guywithknife 4 месяца назад
Stopped watching at the advertisement for that exploitative garbage raid shadow legends. My ethics don’t allow me to support channels that chill trash that exploits its users
@PlayWithFurcifer
@PlayWithFurcifer 4 месяца назад
Oh no, how will I live without you specifically watching this tutorial? :( Understand that you not watching a tutorial is your loss, not mine lol
Далее
How To Shader. (using Godot Engine)
7:28
Просмотров 49 тыс.
AI Will Make Better Games Than Me One Day
1:07:14
Просмотров 56 тыс.
Why GODOT 4.3 is going to be wild!
9:50
Просмотров 120 тыс.
10+3 Tricks We Wish We Knew Earlier | Godot Engine
7:54
10+2 AWESOME ADDONS for GODOT 4
8:36
Просмотров 132 тыс.
choosing a game engine is easy, actually
15:08
Просмотров 363 тыс.
25 Gamedev Tips for Everyone
15:00
Просмотров 11 тыс.
5 Common Godot Mistakes That You Could Be Making.
5:31
Why You Should Not Use Godot: 5 Reasons
7:38
Просмотров 223 тыс.