I’m a teacher, so I know a bit about introducing people to new systems and making it understandable.
For a lot of people code is a wall. They need some help to get over it. Visual programming is useful as a ladder, so that you can learn the basics of game design (there’s actually a lot to learn without adding code to the problem), and then once you know what you’re doing you can start doing it more efficiently with code.
One of the best things about the BGE is that you can learn how to move a character around in an afternoon using logic bricks. After a week you can have a rigged character walking and jumping. Getting beyond that stage takes a long time, because logic bricks are not very good with dealing with instances. They are no use for passing data like targets or distances. You spend more time trying to work around the limitations of the system than you would just bypassing it and getting on with learning code.
I think any visual programming system for blender game engine either needs to be deliberately bare bones (just enough to get you in to moving a character around, playing animations, registering collisions etc…) or it has to have better ability to pass data between the various elements of the system.
In the first situation, you’d be forced to move on to scripting and not waste your time with convoluted work-arounds. In the second situation, there wouldn’t be a need for it since the system would be better able to do the things you need.
Example:
Your character picks up a sword and the sword goes in to the inventory.
You drop the sword and it falls on the floor.
Easy in logic bricks, you have an overlay which gets a message from the player when the sword is picked up and deleted. Clicking on an icon in the overlay sends a message back to the player and the sword is deposited back in to the game world.
However, this required a single set of logic bricks for one item, in this case a sword. What if you have 20 different kinds of swords? What if your game has over 100 different inventory items? You’d need a set of logic bricks for every one.
The visual scripting system needs to be able to receive a message and get data from it. Then it needs to use that data to set the element which handles the data.
In a kind of pseudo code:
if self.message_received:
if self.message_received.contents in valid_objects:
self.add_object.object = self.message_received.contents
self.add_object.activate()
So there needs to be a way of actuators using the result of sensors. In other words sensors need to return something other than True/False and actuators need to take arguments beyond just activate()
I guess in a logic nodes type system nodes need more than just one socket.