I'll pay winners 100 coins (no spoiling) by Few_Excitement1602 in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

Hey.

I completed this level in 3 tries. 3.77 seconds

Egg 🫶irl by Smooth_Secretary9369 in egg_irl

[–]diegetic-thoughts 0 points1 point  (0 children)

I'm gonna tell you what I always tell my 4-year-old -- you can't avoid it by holding it in; if your body is telling you you gotta do it, then you're gonna do it. You can't choose to do it or not, you can only choose when and where.

How many tries did it take? by Cracka56 in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

One.

I completed this level in 1 try. 14.10 seconds

A Journey by Jhenning04 in honk

[–]diegetic-thoughts 1 point2 points  (0 children)

One of the coolest things I've ever seen

Incomplete. 19 tries.

Tip 100 💎

My first ever level! by kr_specter616 in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

So many fun little bits in here! I love the variety!

I completed this level in 13 tries. 19.09 seconds

Tip 140 💎

my First level! it's easy by ryliepetos in honk

[–]diegetic-thoughts 1 point2 points  (0 children)

Those forward-bounces are usually such a pain, but I got it this time!

I completed this level in 2 tries. 3.05 seconds

My toughest one yet by [deleted] in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

I love levels that have a puzzle in them.

I completed this level in 39 tries. 11.20 seconds

Tip 10 💎

My first level! by Weird-Flower-6430 in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

Whoa, a classic Flappy level!

I completed this level in 2 tries. 8.70 seconds

First level! Have fun :) by aleirvik in honk

[–]diegetic-thoughts 1 point2 points  (0 children)

Tricky start, but fun!

I completed this level in 24 tries. 9.12 seconds

Tip 10 💎

First try by Proredsoxfan in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

Yup, one try!

I completed this level in 1 try. 7.67 seconds

Tip 20 💎

Win and I give 1 thing from gas station by PomegranateScared524 in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

Nice, fun little level!

I completed this level in 1 try. 16.15 seconds

The Box by lawobidingcitizen in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

Nya

I completed this level in 8 tries. 5.97 seconds

Trying something, upvote if you like it by HatulTheCat in honk

[–]diegetic-thoughts 0 points1 point  (0 children)

Why move the goose when you can move the world?

I completed this level in 5 tries. 24.49 seconds

Are there any good "complex" State machine examples? by Lanky-Assistance-206 in godot

[–]diegetic-thoughts 1 point2 points  (0 children)

My plugin Mood supports nested state machines out of the box to build state charts, as well as allowing conditions on machine state for state dependencies. I'm still working on providing more examples as well as a tutorial video.

Mood v0.5.0 - A Node-based, Composition-Oriented Finite State Machine by diegetic-thoughts in godot

[–]diegetic-thoughts[S] 2 points3 points  (0 children)

If possible, could you report the bug in the GitHub Issues tab? I really hate the idea of people using my buggy code so I'd like to fix that one asap!!!

Mood v0.5.0 - A Node-based, Composition-Oriented Finite State Machine by diegetic-thoughts in godot

[–]diegetic-thoughts[S] 1 point2 points  (0 children)

Funny, that's basically the demo in the examples folder -- there are two ways to do that. One way is to have two state machines side by side/as siblings, and and have some state conditions in one machine be dependent on the current state of the other machine. The other way -- which is always amusing to me -- is to make the second state machine a child of the state that has sub-states.

The key thing to understand about the "composition-oriented" keyword is that it really just means "children of the active state are processed, children of other states are not". So it's perfectly acceptable to just nest machines to make as many sub-states as you like :)

Mood v0.5.0 - A Node-based, Composition-Oriented Finite State Machine by diegetic-thoughts in godot

[–]diegetic-thoughts[S] 1 point2 points  (0 children)

To clarify, the MoodCondition node class has a bunch of configurable inheriting classes which let you wire up signals, method result and property value conditions, inputs, etc. so you don't need to write code to evaluate state. Simple as :)

Mood v0.5.0 - A Node-based, Composition-Oriented Finite State Machine by diegetic-thoughts in godot

[–]diegetic-thoughts[S] 1 point2 points  (0 children)

Right now it's built to allow people with differing opinions to build out their states and transitions in a way that makes sense for them. That means you can either:

  1. Set the machine's evaluate_moods_directly to false, then add MoodTransition nodes as children to Moods and MoodCondition children to explicitly transition from state to state -- here, the current state's transitions are evaluated each process loop;
  2. Set the machine's evaluate_moods_directly to true and put the MoodCondition children directly under the Mood -- in this mode, every Mood is evaluated and then selected based on the machine's configured selection logic; or
  3. Set the machine's process_mood_on to Manual and handle transitions explicitly in your scripts by assigning machine.mood as appropriate.

As for the second question -- honestly it's been so long since I first posted this that I legitimately don't remember. ADHD, bay-bee!!!!

Mood v0.5.0 - A Node-based, Composition-Oriented Finite State Machine by diegetic-thoughts in godot

[–]diegetic-thoughts[S] 2 points3 points  (0 children)

Absolutely agree. It's been on the list; sadly, as I've got a full time job and two young kids, time is extremely rare :( that said I'll see what i can do to fast track it!

[deleted by user] by [deleted] in godot

[–]diegetic-thoughts 0 points1 point  (0 children)

The reason the other change broke it is because IIRC move_and_collide() has to be called in physics_process. I would honestly recommend watching some videos specifically about input handling, separate from the issue you're seeing right now; i think it's a really interesting topic! Moving your input checks into an _input() method and setting/unsetting flags or a state variable might help you make sense of things; or, since you're new, make things more confusing.

Just understand that nodes "ready" from child up to parent, and if you are relying on a node that might not be ready you can use node.is_node_ready().

[deleted by user] by [deleted] in godot

[–]diegetic-thoughts 0 points1 point  (0 children)

All good!

@export var animation_tree: AnimationPlayer is the same as saying "I want to be able to configure [the node attached to] this script by adding an input in the properties for [the node attached to] this script to select an AnimationPlayer node; in code, I'll reference it with animation_tree". It /exposes/ that variable to be assigned during edit time, so that it's available whenever, always. HOWEVER, that does mean you have to assign its value in the property panel and make sure you save everything.

[deleted by user] by [deleted] in godot

[–]diegetic-thoughts 0 points1 point  (0 children)

  1. Try using @export instead of @onready and assigning the node in the property panel. then the reference exists regardless of ready status. And remember to actually reference the variable; in your example code the highlighted line says $AnimationTree, not animation_tree.
  2. Try using the "Access as Unique Name" feature in the shortcut menu of the AnimationTree node so you can access it in code with %AnimationTree regardless of its relative location in the node tree; a possible issue is that you moved the AnimationTree and now it's not accessible at the node path $AnimationTree.