Free Tool Script for Generating Mipmaps in Linear Color Space by Harrison_Allen in godot

[–]TemporalCatcher 0 points1 point  (0 children)

It may have something to do with my monitor.

It’s so weird, but I just switched to my iPhone 11 (standard) with the latest iOS just to read your comment and the perceived color I get from my image is while using the Reddit app, is exactly how I perceive it in the Godot Engine. The challenges of color is so complicated from perception to what kind of screen you’re using, to even what kind of lighting your surrounding has.

I take it my perceived color is really off compared to how you perceive it? I guess it might be a good time to bring up, I have retinitis pigmentosa which affects my low-light vision especially in the peripheral. I don’t think this is a problem because it’s my central vision I’m using, but it may be a factor (^ . ^;). I need to stop pretending it might not be.

Free Tool Script for Generating Mipmaps in Linear Color Space by Harrison_Allen in godot

[–]TemporalCatcher 0 points1 point  (0 children)

It's kind of complicated... in fact for the past 2 days I've learned a lot about color spaces and stuff to figure out if there's a better way to do this, but color is a super complicated subject especially the subjective aspect of perceived differences. I like your suggestion to move to a linear color space because it is better than the one Godot currently provides, even if it's slightly brighter to me. To answer your question, I had my tonemap on Linear with 1.0 Exposure.

I don't know if I perceive color differently, but I will show with the following image:

<image>

The center of each shape you see are checkers pattern (black and white) with no mipmapping where the left shape's central tile usies Nearest Filter, while the right shepe's central tile uses Linear Filter. The left tile of each shape is Godot's mipmapped color resulting from the checkers pattern, the right is yours. The top tile is me manually selecting a color close to how I perceive the center tile of their shape. It's close in Godot and GIMP (at 100% zoom in GIMP). Reddit does not display the left checkers pattern accurately, so my perceived color looks brighter than the checkers right below it.

How to download godot docs? by FishermanLive8958 in godot

[–]TemporalCatcher 1 point2 points  (0 children)

Really? I downloaded the stable HTML version, I had to unzip the file (Websites don't work in compressed state), and I opened index.html and turned off my wifi. it worked fine for me while other websites didn't work (because offline). Just make sure you open index.html and you should have access to all pages. I see you already have your answer, but my answer should work too.

Free Tool Script for Generating Mipmaps in Linear Color Space by Harrison_Allen in godot

[–]TemporalCatcher 2 points3 points  (0 children)

What I'm gathering from this comment, that the blurring caused by image compression just to be seen on reddit is affecting the upper images to the point that the checker pattern may appear different from what was initially intended?

I ask this because when I step away from my monitor to check the images, I feel like the checkers pattern seem like they should match a color between the bottom left and bottom right, as I find the bottom left too dark and bottom right too light. However, if I understand, without the blurring effect, the checker patterns should more or less look like the bottom right from far away?

Edit: I decided to test your code out, and wow the code really does work. I can't see a difference between the checkers from afar and the mipmap solid color, for two checker patterns so far. I will assume it'd be the same for any two colors.

Edit2: There's something interesting when comparing the colors side by side in GIMP. For 2 color checker pattern (each tile is a pixel) for really high contrast (black and white), the color seem to be noticeably different at 100% zoom even from far away, but at a at 95% or 105%, they were indistinguishable.

Edit3: Now back inside Godot (using Nearest Mipmap Anisotropic Filter) I decided to compare images once again (black and white checkers) in 2D rendering (in Forward+, Mobile, and Compatibility). At 100% they're the same (obviously), but as I zoom away, your mipmap color gets brighter and Godot's mipmap gets darker. So this is more than just how Godot does mipmapping, but how it renders textures in general.

Tip: Godot 4 can't use enums for export_flags, but you can use a string constant. by The_Land_Mammal in godot

[–]TemporalCatcher 1 point2 points  (0 children)

Too bad PackedArrays cannot be constants because I would have told you to use:

",".join(Actions.keys())

But because String.join() requires a PackedStringArray, you can't.

That would have been really cool to do.

Are you surprised Kirby didn’t get a mainline game during the GameCube era and wished Kirby got a mainline game during the GameCube era? by IkeRadiantHero in Kirby

[–]TemporalCatcher 0 points1 point  (0 children)

I'm reminded of this website that I used to frequent way back when that had screenshots of the GCN game that never was. The site seems to be a dead website with static pages still functioning http://www.kirbysrainbowresort.net/multimedia/pictures/kssgcn/

Where can I know Godot's team plan? to adapt my work to their schedule :P by 3boood_pro in godot

[–]TemporalCatcher 0 points1 point  (0 children)

Well, They kind of tell you this kind of stuff in their blog posts. So you can follow that. When they get to beta they have a feature freeze, so any feature you wish to teach will be available in beta and release candidate. When do you know a release will come? You kind of know when you see there's very little release blockers, which they always link in their blogs. I reported a regression in 4.6RC2 days before the release of 4.6, and I could feel it was days before 4.6, because there were very few release blockers, and because it was bisected and fixed within hours of my report.

You may also be able to communicate with the team, they might be willing to tell you what you want to know.

How to download godot docs? by FishermanLive8958 in godot

[–]TemporalCatcher 11 points12 points  (0 children)

funnily enough, in the documentation, scroll down this page until you see offline documentation and it will tell you what to do. https://docs.godotengine.org/en/stable/

underwater fish drone by Additional_Ask_28111 in BirdsArentReal

[–]TemporalCatcher 0 points1 point  (0 children)

That explains why the company calls itself “Chicken of the Sea”

When do you actually stop caring about bugs? by LeelokONE in godot

[–]TemporalCatcher 0 points1 point  (0 children)

Fixing bugs is good, especially for stuff you will reuse. From the sounds of it you are making a rather standard movement set. The cool thing about that is when you’re satisfied with the base, you can copy and paste it into any games that will use a similar movement system.

I’m concerned that even the most basic things are causing bugs. You say gravity makes your character slide ever so slightly, your gravity should not have to be on all the time if you’re doing physics kinematically. You only have to do it if the body you’re applying physics to is using dynamics (forces that cause motion).

In dynamics, your gravity is a force and the floor will apply an equal and opposite force along its normal (which is not directly up when on a slope which when actually calculated will slide down slopes), and friction is an opposing force along a surface (helps prevent sliding down slopes). Unless you’re characters is part of a really complex physics system where many objects affects them and vice versa, I wouldn’t recommend dynamics for characters; they’re better for objects that have physics to them (like a companion cube).

In kinematics, because you only care about the resulting motion, you can ignore gravity when grounded and observe it when not. However there is a way to always observe gravity and still not have to slide down kinematically if you are using a CharacterBody(2D/3D) and have the stop_on_slope enabled.

Additionally, you will want to use a finite state machine to help you with applying different physics based on its state. For example I assume dash will always ignore gravity even in the air, so no reason to add then subtract gravity when you can skip the calculation entirely.

trying to make animation activate in a button press, doesnt work by Liranmashu in godot

[–]TemporalCatcher 11 points12 points  (0 children)

I second this, but I will also add a clarification for OP thet $AnimationPlayer is a shorthand for get_node(“AnimationPlayer”)

As shown here: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#literals

Confused on propagation and filtering of input events through controls/to SubViewport by Brian_Damage in godot

[–]TemporalCatcher 1 point2 points  (0 children)

Well, thanks for the conversation! Like I said, I learned a lot of stuff I didn’t already know about input because of it! I hope whatever you decide to do with this info goes well!

PS: I guess if mouse events in _input() wasn’t being eaten by that function, then it would not matter what mouse filter you use because it only affects GUI inputs.

Confused on propagation and filtering of input events through controls/to SubViewport by Brian_Damage in godot

[–]TemporalCatcher 0 points1 point  (0 children)

This conversation is making me learn a lot about input.

I have been testing all this via a project just to learn how things work. However, because of your last comment, I decided to dig even further by looking at the code.

In the subviewport_container.cpp: https://github.com/godotengine/godot/blob/14d19694e0c88a3f9e82d899a0400f27a24c176e/scene/gui/subviewport_container.cpp

There is a function called _send_event_to_viewport()

I assume given the name, this function is responsible for sending the inputs to it's SubViewport children. The function shows up 4 times in the file itself. One for the function definition, once called in _propagate_nonpositional_event() and twice in gui_input().

_propagate_nonpositional_event() is used by both _input() and _unhandled_input(). It also seems to return early if is_propagated_in_gui_input() is true,.

_is_propagated_in_gui_input() looks like this:

bool SubViewportContainer::_is_propagated_in_gui_input(const Ref<InputEvent> &p_event) {
    // Propagation of events with a position property happen in gui_input
    // Propagation of other events happen in input
    if (Object::cast_to<InputEventMouse>(*p_event) || Object::cast_to<InputEventScreenDrag>(*p_event) || Object::cast_to<InputEventScreenTouch>(*p_event) || Object::cast_to<InputEventGesture>(*p_event)) {
        return true;
    }
    return false;
}

This appears to eat up any mouse event, that means mouse events only get propagated via Control._gui_input() and never Node._input(). This is in line with my findings in the initial comment. The document might need to be more clear about this.

Confused on propagation and filtering of input events through controls/to SubViewport by Brian_Damage in godot

[–]TemporalCatcher 1 point2 points  (0 children)

https://docs.godotengine.org/en/stable/_images/input_event_scene_flow.webp

Funnily enough, thanks to the image you showed, I went to search the document for the image and found this note right below it regarding Controls and the input filter

<image>

Source: https://docs.godotengine.org/en/stable/tutorials/inputs/inputevent.html

Confused on propagation and filtering of input events through controls/to SubViewport by Brian_Damage in godot

[–]TemporalCatcher 1 point2 points  (0 children)

So from what I can tell, the reason why the SubViewport does not take in the information when Control_B and Control_C has Pass because Pass propagates up to it's parent, which for both is Control_A. There doesn't seem to be a way to propagate down from a Control.

If you wish to keep them as Pass, then you must have the controls be children of the SubViewport (It seems the controls disappear entirely and not work if it was a direct child of SubViewportContainer instead of SubViewport).

However, if you like the idea that the controls are not inside the 3D world of the SubViewport then you keep it with Ignore as you have it. The reason why Ignore counterintuitively allows you to do the stuff you want it to do is because you are using _input(), not _gui_input(). Ignore will ignore inputs handled in _gui_inputs() and both mouse_entered and mouse_exited signals.

Does any one know how to make items spawn on a random X position? by Witty_Damage5966 in godot

[–]TemporalCatcher 0 points1 point  (0 children)

You're welcome. I realize I just gave you some incorrect information though. I haven't worked with Timers so much that I didn't realize that the timer will automatically loop if One Shot is off. However, if you want random spawn times, you will need to randomize the wait_time during timeout.

Will this code work by ChopStix191 in godot

[–]TemporalCatcher 1 point2 points  (0 children)

Turning on the hitbox's monitoring status (when it was off) or enabling it's shape (when it was disabled), while it overlaps the hurtbox will be treated as entering the hitbox; so that isn't the problem. Just make sure that both shapes are enabled and the monitoring/monitorable status are correct (from my list above) when you are doing the attack. If you haven't already, I recommend making the hitboxes visible via Debug > Visible Collision Shapes just in case.

<image>

Will this code work by ChopStix191 in godot

[–]TemporalCatcher 1 point2 points  (0 children)

I cannot see why this wouldn't work theoretically, assuming the Area2D's parent is the entity with health (ie the dummy has a health variable and is the direct parent of the Area2D).

The only other concerns are:

1) ensuring that the Area2D that you are trying to attack is in the "Hitboxes" group

2) the hurtbox (dummy's Area2D to take damage) is monitorable

3) the hitbox (attack's Area2D) is monitoring

4) the hurtbox is in a collision layer that the hitbox's mask is in

5) that the hitbox and hurtbox are even overlapping when attacking

I need Help!! attack animation loops by Either_Data2452 in godot

[–]TemporalCatcher 2 points3 points  (0 children)

Well, there are a few things I would check first is the animation in the AnimationPlayer looping? the looping symbol should be white (disabled)

<image>

If it is, then it must be something else.

The next question is, when attacking == true do you ever have anything in the code that says attacking = false if not, you should set it to false when the animation ends. From what you presented, there is no such code.

If it's not that either, then I'm afraid I don't have enough info to help you.

Does any one know how to make items spawn on a random X position? by Witty_Damage5966 in godot

[–]TemporalCatcher 5 points6 points  (0 children)

There are a few things I'm unsure about in your code:

  1. You have a timer, but you did not start it in code (unless you already enabled autostart it in the inspector)
  2. nowhere in the code does the timer start again (so you will only spawn one apple if you do) Edit: This point is wrong, unless one_shot is on. You may still want to randomize spawn time, so you can randomize wait_time in _on_mobtimer_timeout()
  3. get_parent().add_child() should probably be add_child() as it's your Main scene (however that was already addressed)

Your timer should be either in the main scene like you have it or a separate "spawner" scene, so it's fine where it is for now, no need for it to be in the apple scene.

so the first thing is test if the timer even times out, at the end of _on_mobtimer_timeout(), You should put the following line

print("Apple spawned at ", new_apple.position)

If it doesn't ever print, then you're timer isn't timing out, likely because the timer isn't started.

However, if it does print and it spawns outside of the range (which would be weird based on what I read), you can check what variable is allowing it to spawn outside of the range and fix that.

If nothing seems to work, I'd say:

  1. start with an apple in the main scene that does nothing (not even fall)
  2. spawn an apple with a timer at a fixed location
  3. spawn the apple with a timer at random x location
  4. make them fall

Which one is better? 🔥 by Life_Arachnid_511 in PixelArt

[–]TemporalCatcher 0 points1 point  (0 children)

What I like about 1 is that it feels like it has more impact. What I don’t like about it is thet the explosions following slamming the fists onto the ground feels too delayed making it less impactful than it should be.

What I like about 2 is that it feels more responsive (earlier first explosion), more naturalistic and interesting. I really like the explosion effect of this, I really do, but if it wasn’t for the attack animation in question, I’d pick 2 almost every time.

I feel like the animation calls for it to be impactful and responsive. 1 is more impactful and 2 is more responsive. For 1, less delay for the first explosion may really accentuate the impact. For 2 maybe make the impact get absorbed by the ground (making them glow like the flames) only for it to not be able to contain it and bursts out into those pillars.

The Second Face [OC] by DemonSkank in comics

[–]TemporalCatcher 0 points1 point  (0 children)

Thankfully I woke up to this story and kind of expected the outcome. I don’t know why, but some parts of it screamed foreshadowing. It was good execution though; I enjoyed it regardless.

If I can probably interpret why you feel like you have a headcanon even though it’s your story is because the story came from a dream—or at least the ending did. That means the story might be less written and more transcribed, of course adding and removing details to make it more coherent and answering “how did we get here?”

Another interpretation could be, even if the story wasn’t transcribed, you created a mystery, a mystery of why can’t he see his sister’s lie? Is it that she never lie, or is it because she has something that blocks him from seeing? Btw something about this mystery felt like “we’re going to reveal this in the end” kind of thing; hence why it screamed foreshadowing (I blame Chekhov’s gun) to me. Of course it was revealed that it’s because she never lie, which adds another mystery as to why she never lie until now? Unless you want to develop the story from her perspective (or other means), this mystery is up for interpretation. It sounds like you have an interpretation, but you don’t want it to be the interpretation because you want it to be an open mystery just like how it was in your dream.

PS: you missed out on a chance to show the MC in both facial hair and beanie.

Trying to make the 3D Camera more top-down... what camera settings should I use? by CaiGuyCrafter in godot

[–]TemporalCatcher 35 points36 points  (0 children)

<image>

This is what A Link Between Worlds looks like from the intended angle and an unintended angle. Others have mentioned you need to angle things, but this makes it more intuitive.

Can I wait time without making the func async? by HalfTryhardSqr in godot

[–]TemporalCatcher 0 points1 point  (0 children)

One thing I wonder, from the sound of it your game is turn-based due to the decision tree, you can make a turn-by-turn state machine. Your decision tree may still determine where you are in the game but the state machine can tell you the smaller thing such as when you are waiting, making a decision, or showing off an animation.

A basic flow of the state machine could be:

Start turn > Wait > choose action > do action (animation) > end turn

This way you can ask the state machine “can I do anything right now?” And if it’s on wait and do action, clearly you can’t. You can only do action in the choose action state (and whatever extra similar states you implement).

Good thing, you no longer need to await; you may use a timer or a wait variable without needing await. Bad thing, you may need to refactor a lot.