[FEEDBACK] FSM Connection Create Friction

Forums 💬 NodeCanvas 🗨️ General Discussion [FEEDBACK] FSM Connection Create Friction

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #13187
    locutis
    Participant

      Hello!

      In our project I have mostly migrated away from FSM to Btree implementations for simple state control because I find authoring the connections in a FSM a bit cumbersome.

      Basically there is boilerplate when creating them and it would be great if you could “duplicate” entire connections or have template connections. Copy+pasting conditions for the connection is a great start!

      For BTrees the conditions are simpler to template and copy+paste and thus more manageable for me, but a btree seems overkill at times.

      See image for a comparison of same/similar logic flows in both btree and fsm form.

      So general feedback is that perhaps this is an area for improvement? I have provided a very simple example below that doesn’t look painful in a FSM, but it gives some visual context to what I am describing.

      Thanks!

      #13190
      Gavalakis
      Keymaster

        Hello there,

        I believe both have their uses accordingly. BT can sometimes look cleaner due to how they are structured, whereas FSMs don’t really have a definite structure visually. What kind of improvements would you like to see? Duplicate connections is not really something very feasible since a connection needs a parent and a child and duplication being a simple command doesn’t have the means to input the parent and child, unless of course a popup shows for example but in which case making a new connection would probably be faster anyways 🙂
        What do you mean by template connections? 🙂

        Thanks!

        #13189
        locutis
        Participant

          Hello.

          I’m in an awkward position because I do really believe in the value of a visual layout of the flow of a program because it allows you to see how spaghetti your code is, understand what is happening at a glance, and also visually see what went wrong with your logic very quickly … but it is difficult to convince a team of programmers as typing what you want to happen is usually less work and more resilient to change.

          A big pinch point for us has been refactoring. So in the case of a FSM when you have a repeated connection flow that needs a change you typically need to manually change each use of it. By “template connection” I meant having something like referenced action list that is stored as an asset. Similar to how you can nest graphs etc. That seems like a lot of work.

          Perhaps being able to copy+paste entire action lists instead of singular actions would help?

          I also started to look into adding “Replace Action” functionality but aborted due to time constraints on the project.

          Below are those ideas in a rough visual

          #13188
          Gavalakis
          Keymaster

            Hello again,
            I understand what you mean. Coding is faster I agree, The purpose of visual scripting tools in my opinion, is marrying he two not replace coding at all. So programmers make self-contained reusable blocks/tasks (action/conditions) and visual scripting is responsible for how those reusable blocks/tasks are actually put into use, thus designing the behaviour.

            Regarding templates, it is actually possible to save/load a list preset (as a file in project assets). This can be done through he “gear” menu of the Condition List found in a connection (or anywhere for that matter).
            [attachment file=”ListPresets.png”]

            You can also copy paste entire lists. This is done a bit differently and from the context menu of the node or the connection. For example right click on node or connection and choose “Copy Assigned Task”. Then right click on another node or connection and choose “Paste Assigned Task”. This will copy/past the entire list (or actions or conditions into the target node or connection).

            Also, if you copy a list (as described above) and then go to another list and hit “Assign XXX Task”, you will see a “Paste List”. Doing this will assign/insert the copied list into the target list.

            “Replace Action” is not currently supported, but I will take a look at that! 🙂

            Let me know what you think on the above.
            Thanks!

          Viewing 4 posts - 1 through 4 (of 4 total)
          • You must be logged in to reply to this topic.