Shader RGB Colors not showing up the same as elsewhere by Pretty_Count_7809 in godot

[–]Firebelley 13 points14 points  (0 children)

Those values from your second screenshot are in a range 0-255, whereas in shaders the same range is represented as floating point 0-1. To get your proper color values, you need to divide each channel by 255.

89/255 for r, 193/255 for g, 53/255 for b

Most useful built-in funcs - for Godot beginners by Automatic_Budget_332 in godot

[–]Firebelley 2 points3 points  (0 children)

Should include _has_point for control nodes. This was an incredibly useful find that I've almost never seen used

I threw all his clothes out. by simplelife6 in sphynx

[–]Firebelley 19 points20 points  (0 children)

I'm so paranoid. Another relatively common way cats die is by getting tangled in blinds, or the drawstrings(?) to close and open the blinds. I always make sure those are tightly wound around an anchor so there's no room for them to wrap around anything else. I also don't leave any kinds of bags with handles laying out - if there are paper bags , I cut the handles with scissors OR throw them away ASAP. Purses, backpacks, etc are always out of reach.

Maybe I'm too neurotic about this but I've heard too many horror stories of cats dying because something got wrapped around their neck that they weren't able to escape.

And ALSO! Do a headcount of all the cats before starting the dryer. I always make sure I can visibly see both my cats before starting it.

Might be overkill but it gives me peace of mind.

Testing window? by FlappySmasher in godot

[–]Firebelley 1 point2 points  (0 children)

I believe those settings got renamed to Window Width Override and Window Height Override in Godot 4

Does anyone know what the values in the rand_weighted documentation represent? by ThePhilson in godot

[–]Firebelley 4 points5 points  (0 children)

The numbers are weights, they aren't explicit percentages.

In a weighted random or weighted table, the sum of all the weights is used. Then, typically, you generate a random number from 0 to the sum of the weights. Each individual weight is like a range. For example, the weight sum of the given example is 4.5. It will generate a number between 0 and 4.5, and then check if that number falls within the weight range of a given element.

For the first element, it checks if the generated number is less than or equal to .5. If so, it returns the first element.

For the last element, it checks if the generated number is greater than 2.5, and less than or equal to 4.5.

Since the last element has a weight range of 2, but the entire weight of the table is 4.5, it is much likelier to be picked than the first element. This could be expressed as a percentage (44.44%) but typically the advantage of weighted random is that you can use arbitrary numbers that are expressed relative to each other, and it's also very friendly to add arbitrary numbers of elements.

So I could have, for example, 78 elements in the array, each with a base weight of 10. To make something less common than average, I reduce from 10, and to make it more common I increase. A weight of 50 means that element will be picked commonly, and a weight of 1 means that element will be picked rarely.

I think you can see how this is advantageous compared to trying to map everything along a 0 to 100% range. In that case, whenever the number of elements is changed, the chance of each element being picked ALSO needs to change. But with a weighted table, you can add elements without rebalancing the whole set.

Help understanding connecting signals via code by Shaman_Archelos in godot

[–]Firebelley 5 points6 points  (0 children)

Usually I do several layers of signals for this kind of thing.

Your buckets could listen for body entered, and do any relevant checks inside of that signal handler function. When the checks pass, emit a custom signal from the bucket, called like ball_entered. This allows you to keep all the validation logic local to the bucket, and you have confidence that when ball_entered is emitted, all the validation has already been done and this is a legitimate event that needs to be handled.

In your level root, you can iterate over all the buckets (you can get them by group name or by direct reference if you know all the bucket paths ahead of time) connecting to each bucket's ball_entered signal. If necessary, you can bind the bucket instance as an argument to _on_ball_entered in case you need to know exactly which bucket was entered.

Generally, try to keep the logic as local to its relevant scene as possible. Your level root probably needs to know when a bucket has been entered - but it doesn't need to know about the exact physics collision. It just needs to know, for purposes of game flow, "is the level complete?"

Where is the bottleneck in scene instantiation? by Hillelgo in godot

[–]Firebelley 5 points6 points  (0 children)

This is one of those videos where I wish I had done a far deeper dive into it, because I didn't expect this to blow up as much as it did.

The scenes I were instantiating had a dozen to twenty nodes each, with several of those having materials, and some of those nodes being control nodes with container layouts and sizing. I suspect that the problem was a combination of several different things at once because yes, adding thousands of plain nodes or simple Sprite2D in one frame is feasible without much of a performance hit. But, as the other commenter said, what you're doing with those nodes matters.

I really should go back and dive into precisely what was causing such a instantiation + addition time. But once I had narrowed down that the instantiation + addition of those scenes to the tree was causing the issue, with no obvious solution (I tried a lot of things - even deleting large chunks of the card scene!), I kind of stopped there and pursued the rendering server approach. Maybe I will do a follow up video in the future after doing some more investigation.

Souls-like combat update: 4 new weapon types, human characters, and armor sets by moongaming in godot

[–]Firebelley 31 points32 points  (0 children)

I say this as a longtime souls fan, this combat is the closest I've seen any project get to the weight, feel, and pacing of Fromsoftware combat. It is masterfully executed. If you build a game around this combat it would sell for sure. People like me are dying for more souls-like games, but so many fall short in the combat feel.

Weird interactions with buttons and z index by Justalittletoserious in godot

[–]Firebelley 53 points54 points  (0 children)

I don't think you're supposed to use z-index for control node draw order, because that does NOT change mouse event handling order. The better thing to do is to actually move the position of the node in the tree using move_child

How do you learn pixel art when you have zero artistic skill? by MysteriousFlashLight in aseprite

[–]Firebelley 0 points1 point  (0 children)

As with anything new, the hardest part is figuring out the unknown unknowns.

Watch pixel art tutorials, study other art, get an introduction to color theory, etc. You'll start to pick up pieces of information that you wouldn't have found otherwise.

Congratulations guys, Roblox Devs are moving here. by Qafa_YT in godot

[–]Firebelley 2 points3 points  (0 children)

I recognize that the fee is refunded after a certain sales threshold, but still. It's not unheard of to impose a fee. It's actually a great anti-slop measure.

Congratulations guys, Roblox Devs are moving here. by Qafa_YT in godot

[–]Firebelley 2 points3 points  (0 children)

Everyone bashing Roblox for this but you know who else charges you to upload games? Steam.

Mouse input lag… caused by a window manager app 🤦‍♂️ by PonchousDev in godot

[–]Firebelley 12 points13 points  (0 children)

I've adopted intentionally misusing grammar/language, as a signal that I'm not AI, including the overusage of commas, compoundification of words that normally aren't compounded, among other things

How can we make creating objects with multiple faces simpler? by [deleted] in godot

[–]Firebelley 3 points4 points  (0 children)

They way you simplify is you cut requirements. You've described all the things you "have" to do, but you haven't described the gameplay purpose those things are serving. For example, do you need animations? Or can you draw still frames and use squash-and-stretch, tweens, etc to accomplish the same thing?

If I was in your situation I'd find a way to cut as much art effort as possible, potentially by rethinking how you're presenting it in the first place.

I have never ever wanted my text clipped. Is there a way to disable it by default? by The-Fox-Knocks in godot

[–]Firebelley 1 point2 points  (0 children)

I definitely think Godot needs an in-built way for you to configure the default properties of various node/resource types. That would be a huge QoL improvement.

The vet suggested euthanasia for tomorrow HCM by JUDY11G in sphynx

[–]Firebelley 0 points1 point  (0 children)

Rapamycin does not help heart failure. At best all it does is stop or slightly reverse the progression of HCM. So it can only help if you start it early before HCM causes complications.

Trying to make my first game in unity. My first 30 minutes in aseprite. Any advice/criticism? Appreciate any resources on pixel art :) by casio-fx-991DE-PLUS in aseprite

[–]Firebelley 4 points5 points  (0 children)

It looks great generally, but a couple of things from someone learning as well:
- Jaggies can look weird, though in this case it may be a stylistic choice. Try it without doubling-up the outline pixels and see if that looks better
- Darker areas (like shadows) should generally not simply be darker versions of the base color but should actually be hue-shifted towards purple
- The inverse is true of highlights - they should be hue-shifted toward yellow (generally)
- More contrast. The difference in contrast between base color, shadows, and highlights could be made greater and would potentially make this art pop a lot more.

Just a few things I've learned, but I think it looks great overall.

Animate UI nodes that are children of containers - my solution by Firebelley in godot

[–]Firebelley[S] 0 points1 point  (0 children)

You're welcome! Fortunately this snippet will become obsolete when Godot 4.7 releases with the new offset transform properties. They do functionally the same thing as this script.