i finally decided to open this discussion to share some thoughts about all the nice plugins that fortunally many of you are contributing. …really thanks for that :)
I’m not a code writer but i’m quite experienced in vvvv patching; i spent some time in building node branches with our belovvvved tool, trying to figuring out the best logical organization of all the parts of software i was developing.
the nice thing of vvvv simple nodes is basically they are simple but highly modular.
eg. take the “+” value node:
it does a simple operation but the great thing about it is the input/output pin connection, so that you can insert in any data flow of your patch.
i think the greatest thing of vvvv is the branching system, i mean the possibility to organize data flow in branches of operators (nodes) and get a result.
to maximize the efficency of this approach, the best way to write a node is:
-it must be simplest as possible: it does just the specific operation that caracterize it. if it does different things i thik is better to split these different functions in different nodes, so you can decide what to use/ in wich order…all the freedom we have in vvvv…
-it must be open to input/output as much as possible: it will be highly configurable and will be build thinking at maximum integration possibilities inside vvvv environment (i’ll make examples later).
sometime you’ll find the first one more handy/easy/confortable, but logically it offers much less possibilities of the second approach.
using modular simple nodes you can configure and customize your branch flow in soooo different ways, just byepassing one node, adding another one, connecting in different ways…
this example shows a chain of simple operation but imagine if they are complex functions… the advantage of having them separate would be great, allowing you to use them individually in different scenarios.
let’s make another example:
there is a huge difference between the two plugins.
-the first one is “indipendent”: it’s autonomous and just provide the final position of the particles with a floacking behaviour.
-the second plugin is dependent: it depends from the position data arriving from the framedelay position cycle and it just gives the velocity that boids should have accordly to the floacking behaviour.
writing the plugin with the dipendent approach allow you to combine it with other behaviours and create a complex final particle system.
instead having a super huge complex plugin (like: "floacking-predator-obstacles-food-… plugin), imagine another approach:
-the floacking plugin it’s simplest as possible: it just provides Cohesion-Align-Desire behaviour.
-then it could be another plugin called “predator”: it provides the velocity of boids escaping the predator. the inputs could be “XYZ boids”, “XYZ predator”, “minimum distance from predator”, “wethever…”
-another plugin could be “obstacles”, that provides velocity of boids avoiding obstacles you set in the plugin.
-and soo on with other features…
you can imagine the patch like this:
in this way you can use these plugins in a modula way, using for example just the “predator” plugin in another particle system.
i think this is the way to go for best user experience in building patches.
in the end the main things to consider when writing a plugin are:
-what should this plugin do?
-what is the best way to write it and integrate it in the vvvv style flow?
-can i separate different “steps” in this complex function and make them separate plugins in order to increase their versatility?
…these are few of the things that come in my mind…
i already spoke with some of you.
foe example, in our first italian Patcher kucha event i spoke with fibo about his super nice chaos toys.
they have amazing potential but in the current plugin implementation they are limited to few uses and can’t be easily integrated in any vvvv patch.
as i said to fibo, these chaos toys would be amazing builded as super semplified nodes, like the perlin node: you give them a value and they returned the chaos value given by the specific chaos behaviour.
in this way they could be used in any possible way, just as “filters” to give randomness and organical behaviour to many many patches…
as i said i’m not a code programmer, but hope that what i’m trying to say will make kind of sense for you coders…
what do you think about this topic?
hope was not toooooo boring… :)