This helps a lot. Thanks, Gavalakis! It’s such a thorough response indicating the advantages and disadvantages to the different methods for doing what I’d like to do.
The main reason I didn’t want to attach an FSMOwner and Blackboard to the prefab, is that I get extremely frustrated when I have missing scripts on my objects, and I can’t find out where they are coming from. This would be the case if I say, opened my project on my laptop, and haven’t installed NodeCanvas yet. There’s no way for me to know that those missing scripts are NodeCanvas scripts. I wish Unity was a little better with this, and at least store a string type somewhere so that users can easily know what scripts are missing…
Your answers to Blackboard population are good too. It would make sense that CreateDefinedParameterVariables() would not be performant, as it would need to traverse the entire FSM. Though, I could see this being less of a problem the smaller the graph, no?
Ultimately, it would be ideal to keep the BB on the owning game object, because if I also needed to keep default BB values, I could. But the “missing component” problem is such a sticking point for me, I wanted to weigh out all my options.