Blackboard with DialogueTree

NodeCanvas Forums General Discussion Blackboard with DialogueTree

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #13496
    lutz89
    Participant

    Hi there,

    I’m new to Flow- and NodeCanvas and I want to say that both assets are really great.
    Now I’m trying to play a bit with the DialogueTree and wonder why they can just use local blackboards?
    I know you can assign and use global BB variables for a scene but this feels a little bit overheaded.

    My dialogues should contain dynamic behaviors, based on the progress of the game or of a single object in diffrent scenes.
    So it is a lot of work to assign and synchronize the diffrent variables of all global BB’s.

    Is this just my problem (e.g. caused by bad usage) or is there any good reason to disallow Blackboard components?
    And are there any future plan to change this or did I miss any problems with custom Blackboards?

    Cheers,
    Lutz

    #13502
    Gavalakis
    Keymaster

    Hello Lutz and welcome to the forums!

    Thanks a lot for your positive feedback on the assets. I am really glad you like them so far 🙂

    There is indeed an inconsistency right now between Blackboard usage in Dialogue Trees in comparison with all other type of graphs (BT, FSM, FlowScripts) and is something that I would of course like to change in the future so that Dialogue Trees also work the same way as all the other type of graphs do, blackboard-wise. The reasons behind this inconsistency, is a bit of a long story to be honest 🙂

    Right now, if you want to use scene object references for blackboard variables to be used in a Dialogue Tree, there are really two options:
    – The first one is the just like to stated, to use a Scene Global Blackboard indeed.
    – The other option is to use Bound Dialogue Trees instead of Asset Dialogue Trees. If you are using a Bound Dialogue Tree, then scene object references would be no problem.

    Other than the differences in the ability to use scene object references, the local blackboard that the Dialogue Trees are currently using, versus using a Blackboard Component are pretty much equivalent. You can still for example access the Blackboard variables either through actions, conditions or even through code.

    Unless I misunderstood something, can you please explain in a bit more details what you would like to do that is not possible by using the local blackboard, that would otherwise be by using a Blackboard component like the other graphs systems do.

    Please let me know.
    Thank you!

    Join us on Discord: https://discord.gg/97q2Rjh

    #13505
    lutz89
    Participant

    Hello Gavalakis,

    thanks for the fast and detailed explanation of the current state.

    I have not thought about it yet to use scene references in the Dialogue Tree, maybe I was to focused on the BB variables 😉
    So I will definitely try this way or maybe I try access the local BB and change the needed variables manually.

    Here some details of my plans:
    I have implemented a simple persistence manager which allows me to define, use and save global variables (for the whole game, not just for a scene). Additionally scene objects can save and load some of their values with callbacks to it too.

    I managed to use this variables using the blackboard, so I can access and change them in any other flow- or behavior graph.
    Now I want to use this variables with the Dialogue Tree and BB’s too. For example I want one Dialogue Tree for an NPC which will give different answers or options based on the game progress. And this is the point where my current solution fails, because I can’t access my custom variables of the persistence manager without the blackboard.

    Maybe an other way is a custom node to get or set the variables of my persistence manager and skip the usage of the Blackboard variables for this particular case. This could make thinks easier with the other graphs to, because I can skip the binding to the diffrent blackboards and just adress the persistence manager directly.

    What do you think? I know it’s not easy to give recommendations without any code here, but maybe you have any other idea 🙂

    One other question:
    Since I’m creating a 2D game, which also uses the PolyNav asset, are there any plans for more 2D actions for NodeCanvas?
    This would be great 🙂

    Thanks you very much!

    Cheers,
    Lutz

    #13510
    Gavalakis
    Keymaster

    Hello again and sorry for the late reply.

    I am not exactly sure I understood everything, but considering I understand enough :), another solution for properly communicating data, would be to use Bound Blackboard Variables. What I mean, is that you can create Variables in the Local Dialogue Tree Blackboard, and instead of manually setting/getting those BB variables all the time, bind them to some public static property of one of your classes.

    So for example, in your persistence manager, you could create some public static properties, and then create property bound variables in the local dialogue tree blackboard, that would read/write those properties directly, without the need of any extra node or action doing that manually.
    I hope that solution is relevant and that I did indeed understand correctly 🙂

    Regarding PolyNav actions, I don’t have any actions to create in mind right now, but if you let me know some ideas or requests, I would gladly do so.

    Thanks!

    Join us on Discord: https://discord.gg/97q2Rjh

    #13558
    lutz89
    Participant

    Hello Gavalakis,

    sorry for the late response, I was on holyday for 2 weeks.
    Good idea, it worked with the bounded variables so I can create my dialogues with my wanted behavior. Thank you!

    Regarding to the actions, for 3D there are actions like patrol, wander, in view, etc, which are missing for 2D.
    I have created some of these by my own, based on the original ones 😉
    But maybe there are plans to add more of them.

    Thanks,
    Lutz

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