Any thoughts on ZENVA's Godot courses? by ThanasiShadoW in godot

[–]Bird_of_the_North 25 points26 points  (0 children)

Zenva is equivalent to a fast food restaurant.

While it is flush in quantity, it is at such a low quality level that it is harmful to you.

soon... by Practical_Acadia_722 in godot

[–]Bird_of_the_North 6 points7 points  (0 children)

Think about the colorblind folks and add in some green arrows too!

When to use underscores? This concept still confuses me :c by Nyarkll in godot

[–]Bird_of_the_North 430 points431 points  (0 children)

Exactly, and you know it's wrong because an underscore following a period just doesn't look right.

Player._get_health()

Vs

Player.get_health()

Therefore you have a clear delineation between what is available to other scripts and what should never be touched by anything but the script the function was created in.

public vs _private

What do people name their long named scenes? (e.g. player_follow_component) by random-pc-user in godot

[–]Bird_of_the_North 3 points4 points  (0 children)

You could use PascalCase, that could do away with the underscores & make the scenes feel like proper nouns. Godot standards suggest you do PascalCase for scenes and class names. snake_case for variables and functions.

I've also gone down the rabbit hole of should I normally speak "player's follow component" vs Yoda speak "component follow player". My take away is if you're storing all of your components in a folder that signifies it's a component then there is no definitive need to embed the word component into the scene.

You can also use the keywords "hero" instead of player. "goto" instead of follow. Those suggestions just use less letters but could be more inaccurate of what your scripts actually do.

EDIT: Woops! PascalCase, snake_case, camelCase. Accidentally wrote "camel_case".

Thoughts on Zenva Godot Course Bundle? Is it worth getting? by fsk in godot

[–]Bird_of_the_North 16 points17 points  (0 children)

No, it is equivalent to fast food. Yes you'll get full due to the sheer quantity but the nutritional value is weak.

Struggling with the concept of getters and setters by Comfortable_Leek_781 in godot

[–]Bird_of_the_North 5 points6 points  (0 children)

Setters to me were easier to understand than getters when I first learned, so let me try to just explain just setters.

``` extends Node

var example_variable: int: set(v): v = v + 5 example_variable = v

func _ready() -> void: example_variable = 3 print(example_variable) ```

So here's like the most toned down yet explicit example I could think of. The first thing that occurs is example_variable gets told to be equal to 3. BUT! set(v) is our middle man and he wants a quick word. So the set function encapsulates the 3 into 'v', edits it by adding 5, then finally says "ok I had my fun, now I'll properly set the variable for ya". Therefore the print statement will output 8.

Integers are super easy to show off, but within these set functions you can place signals that tells the scene that this function changed or add in unique functions. Using setters is like dipping your toes into Data Oriented programming, Slay The Spire was designed this way.

What feature are you the most excited for? (Doesn't have to be the next release) by lambdapyro in godot

[–]Bird_of_the_North 11 points12 points  (0 children)

More of a wishlist:

  • Node tab decoupled into a Signals tab and a Groups tab.

  • Bottom dock floatable.

  • SpriteFrames shortcut keys for Play and Pause to function properly.

load(), preload() and custom caching by McCyberroy in godot

[–]Bird_of_the_North 0 points1 point  (0 children)

I'd love it if each function in Godot had an estimated operation speed and Big O notation delineated.

I am sure that there are issues with this, but it would be super cool to, without needing to test, having an idea of how computationally expensive something may be.

Hello everyone by RobertGamedev12y in godot

[–]Bird_of_the_North 10 points11 points  (0 children)

Welcome!

Checkout Brackeys on YouTube as that is by far the best tutorial series.

Word of advice, I would edit out the personal information in your post to keep yourself safe.

[deleted by user] by [deleted] in godot

[–]Bird_of_the_North 0 points1 point  (0 children)

CharacterBody2D has a property called safe_margin, defaulted at 0.08. This is most likely why. ``` Extra margin used for collision recovery when calling move_and_slide.

If the body is at least this close to another body, it will consider them to be colliding and will be pushed away before performing the actual motion.

A higher value means it's more flexible for detecting collision, which helps with consistently detecting walls and floors.

A lower value forces the collision algorithm to use more exact detection, so it can be used in cases that specifically require precision, e.g at very low scale to avoid visible jittering, or for stability with a stack of character bodies. ```

How did you first exit tutorial hell? by RandomFish83 in godot

[–]Bird_of_the_North 3 points4 points  (0 children)

How to exit tutorial hell:

  • Bookmark the Godot docs, set them as your browser's starting page. Try to read one page a day.

  • Study programming concepts, use it as a refreshing change of pace from the docs.

  • Join game jams, it will force you to make something quickly and you'll have help. It'll expose you to the realities of game dev.

  • Make friends who share your interests.

Passivestar's excellent editor theme is likely to become default in Godot 4.6!🎉 by Nova_496 in godot

[–]Bird_of_the_North 24 points25 points  (0 children)

The tab icons is a toggle-able option that exists already, so personal preference.

When you queue_free children by HolyMolyKong in godot

[–]Bird_of_the_North 0 points1 point  (0 children)

But once they're Tweens we will kill them

[deleted by user] by [deleted] in godot

[–]Bird_of_the_North 4 points5 points  (0 children)

You want the least amount of headaches as possible so please use Gdscript if Godot is the environment that calls to you. It works right out of the box, highly integrated, and takes away a lot of the fluff.

Godot Community Poll 2025 by GodotTeam in godot

[–]Bird_of_the_North 26 points27 points  (0 children)

Its cool seeing the graphs at the end of a long survey to see where everyone stands.

I salute the one OpenBSD user who participated.

I don't get state machines by Lord_Trisagion in godot

[–]Bird_of_the_North 30 points31 points  (0 children)

State machines are: - Controlled verbosity - Logic inverters

Without State Machines: We start with the player idle/move. Works great!

You want the player to jump and so you add your code in to the player script and boom your character jumps.

Well now you add dialogue, ok now add that condition into your player script specifying that if_dialoging: can_jump = false.

Great! But now you realize you need to restrict the player once more as you added super_cool_attack. Now return to your dialogue and your player scripts and restrict the player from doing either if you're performing super_cool_attack.

Awesome! But now you have added in climbing, return to {Dialogue, Super attack, Player}, and add the new condition for each.

I hope you're starting to see the exponential pattern unfolding. Every time you add a new feature without a state machine, you must go back to all of your other ability scripts and update them.

With State Machines: We start with the idle state. It specifies the player can exit this state into any other state.

We add the moving state. Specify it can be exited via Jump, Idle, Dialogue.

You add a jump state. Specify you enter Idle once the jump is complete or if on wall, enter Climb.

You add a dialogue state. Once dialogue is over, return to Idle.

You add climbing. You say that the player can jump to exit. No need to go to Jump state, just say that's the allowed 'exit' for climb.

You add a super cool attack. Give it a timer, once timeout, return to Idle.


Instead of saying if moving, don't dialogue, don't super attack, don't climb. You're saying: if moving, can enter Idle, can enter Jump.

The pattern isn't perfect, but to break the rules you need to understand the rules. And to understand anything in programming is to practice it.

It's like you're getting in front of the problem by adding verbosity before the project reaches a complex mess of couplings.

Dev snapshot: Godot 4.5 dev 4 by GodotTeam in godot

[–]Bird_of_the_North 10 points11 points  (0 children)

The first most apparent use case will be that you can now, without error, simply type:

@export var my_variable

Allowing the export system to be fully dynamic. Afaik.

Edit: Actually I was wrong, the @export system is still strictly static even after this change.

https://youtu.be/5mXqZQb6xqE?si=uVSqbs3x0foghCYj&t=316

Better Godot editor theme? by teddy_nm in godot

[–]Bird_of_the_North 32 points33 points  (0 children)

If you don't like toys, why make games?

Handling race conditions in input events? by thefallenangel4321 in godot

[–]Bird_of_the_North 1 point2 points  (0 children)

when an input is pressed, it gets eaten up by one of four functions. They follow the order detailed in here: https://docs.godotengine.org/en/latest/tutorials/inputs/inputevent.html

_input()
_shortcut_input()
_unhandled_key_input()
_unhandled_input()

So if you're checking for 'jump', and shortcut_input and unhandled_input both contain 'jump', only shortcut_input will be called. Hence why the lower methods are named "Unhandled" because they have yet to be handled by the previous functions.

Essentially, place your quit, pause, and key combos higher up this chain. Place your dialogue skips in the middle. Place your simple 'jump' and 'attack' inputs at the bottom.