There are two problems I have with the current node based visual programming.
First is, the manual lay-outing that is always needed and may even break (one node overlaps another). It’s always a click and drag fest. The layout can break when I remove one pin, at times the node can get larger because of that. Or when I add more elements to a struct/enum. Every other node placed below could get overlapped by the bigger switch node. And then another click and drag is required to fix the layout again. And of course, any name change of a variable or function/macro, could cause the same problem all over again.
Second is, the wired connections. It can leave a harder to read mess. Especially with the entry node of a function. Where the parameter variables wires may go through the entire graph and to the last node at the far right. It’s not always a problem, but node wires can get covered behind another node still far too often.
Bottom line seem to me, that the current node-based visual programming in Blueprint is a bit of a mess if I needed to make a bigger graph. The solution to the node-based system could be the block-based system! It seem to fix both of the mentioned problems.
The screenshots below are not a good example of the problems in Blueprint. But I still show it for some comparison with the blocked based system.
Here is the blocked based node system done with MIT App Inventor 2. Of course it’s not functional and a bit improvised since it even doesn’t support structs and enums.
The block based node system’s appearance does look familiar, doesn’t it? Yes it does! Unlike Blueprint, it isn’t like spaghetti, but more packed like a cheezeburger.
The code above is C#. Yes it possible to use local variables to avoid having to cramp everything into one line. But this also would require additional steps. And that’s where the block based system seem to have no problem with. Text based programming languages get usually all of their functions parameters in one line. The Block based system puts all parameters below each other like a list.
Unlike the node based visual programming, the block based system auto layouts itself. Just like a text based programming language where all is pushed automatically to the side or into the next line.
Regarding lay-outing, the block based system makes good use of both worlds, taking aspects from the text based programming languages and the visual based programming languages. The block graph I made with MIT App Inventor 2, takes a bit less space than Blueprint. And I think it still would be same if it actually was functional. Not to mention the that the font size of the block graph is bigger than the one in crude C# example. So, the block graph could get even more compact. It’s almost as slick as a C# code, but still being a visual programming language, not a text bases programming language for scripting in the Unreal Engine 4.
I would take this cheezburger!
UPDATE
I guess, it is time to quote myself:
Obviously I’m silently crying for C# support here. By the way, a blocked system would also remove the “hacking” aspect of a text based source (I’m not so font of hacking). Yet still being quite like a text based source after all.
No, I don’t struggle to comprehend C++. Yes, it is sorta “slick” inside UE4. Epic Games actually did a good job here. But there are still problems and hiccups with C++ that make me my head shake, and make me wonder how primitive humanity actually is. (Because “legendary” means “perfection” and not “fail”)
This is not a high priority suggestion, obviously. But also a thought about how one cold avoid that stitched monster called C++ (stitched literally). The other reason is that although visual programming ain’t new. Now there is an actual good way of applying visual programming. So even as a programmer myself, actually, especially since I’m a programmer, I’m very curios to see what a visual programming language really could do.
I think that Blox Visual Scripting for Unity is kinda silly. Because Unity does have C# already. Unreal though, doesn’t have a C#.
I don’t want to replace the current node system of Blueprints. But I would love see a block based addition to it. A block based system could already run on the code Blueprint nodes are based on. It should only be a matter of showing the graphs in a block based fashion?!
I was wondering if a blocked system could serve as an alternative to actual C# in UE4. That could do as a visual programming language a lot more than now Bluerpint could do with its fat nodes.
Maybe this could be a compromise for actual C# support?