-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce a generic Finite State Machine graph type #94
Comments
Hi @tarragonfly, I think, in general, this sounds like an elegant idea. It would simplify our internal process, where we use another tool for Behavior Trees for enemy AI, and we certainly wanted to combine this technique somehow. To provide some context on our internal process, we generally do this using Scene Node composition where we have a high-level scene node type that acts as our "AI" node that holds a blackboard, etc. Then as children of this node, we add and organize various control nodes like "Sequence" that then has a set of child behaviors. There is a core FSM in the "AI" node, but it's more defined around the notion of behavior trees. So I want to clarify a few points to make sure I understand your point of view. A new graph type, That said, what isn't immediately apparent to me from the description is how would the FSM ultimately be called from the outset. Would you expect that an Orchestration Script (.os file) either be based on an Since it seemed that your description indicates that an |
I completely agree. With this in mind, we've designed the UI to have a specific GraphEdit layout for when you want to create Macro Libraries and Function Libraries, so this would just be one additional layout. I think this should be relatively easy to manage with the existing tab infrastructure.
That sounds fair and definitely less confusing for the end user.
I also think that its more plausible for state and transitions to interact with functions and macros than they would with an event graph primarily on the basis that the interaction with Godot function overrides and callbacks are entirely abstracted away from the user in a StateGraph to guarantee the deterministic nature of the flow into and out of a state.
Absolutely, though I think I would like to see that GDC talk to gain some insight nonetheless. Thanks for the tidbit. |
For sure, sounds good.
Here's the talk: https://youtu.be/G8W7EQKBgcg?t=500 Although, they might not have used actual graphs but conceptually had FSM on the top level determine behaviours for Behaviour Trees. Node Canvas is a tool for Unity that does this with graphs, where you can nest behavior trees inside FSM. |
There are two different FSM officially in Unreal, yet also tonnes of branching "dialogue/quest" plug-ins in the market place which all do something very similar to FSM. And in my (Unreal) game I wanted again a similar functionality to drive my menus. Wouldn't it be a USP for Orchestrator to have such a general FSM implementation that it can cover all of these cases? For example, I can't speak for dialog/quest implementations, but to have it work in a menu system the way I want, I'd need a transition node which has more than one exit point (ie one for each menu option in the current menu) so I can keep things tight and organized (having one transition node for each menu option in each menu will quickly become too large and unwieldly). |
Description
Visual scripting is particularly well geared towards finite state machine visualisation, so I think this would be a good fit for Orchestrator to handle use cases where EventGraph doesn't always make as much sense as an FSM. For example, when developing enemy AI, a custom animation state machine, a structured player controller or just the state of random doors - open, locked, closed, etc.
Implementation ideas
No response
The text was updated successfully, but these errors were encountered: