Blueprints are a toy. Which serious Unity dev would use UE4 without C#/F# or UnrealScript!?

I made a crude first concept with Photoshop for a custom language. I hope there are no mistakes in there. It’s a text based language but it also allows to make use of that what node graphs do well: Visualizing the execution flow.

This is a normal Blueprint graph. Some old stuff I did for prototyping some time ago.

This is a text based language that is also able to make use of the execution pins in node signatures. Functions like “ConsumeEnergy”, are divided into execution blocks which are text based code parts.

Another look without all the red. I just go ahead and give this concept of a custom language for UE4, the name Blackprint.

So far, I can see how Blackprint can actually even take the best of both worlds, node graphs and source text. Of course it’s too early to say if this really could work out this way, however.

  1. First advantage over nodes are the comments. Just type the comments down, the execution blocks are all text. No eventual readjusting of the comment background if nodes are added or removed.
  2. Like node graphs, Blackprint also does visualize executions. Every time you call a function, or even macro with multiple exe pins, after the execution block the function was called in, more empty execution blocks will appear automatically. Invalided execution blocks that got their calling function deleted, are put on a list so that their code ain’t lost and can be reattach to another execution block entry point. Marked by the arrow.
  3. Like with source code where one would just type down a variable’s name to access it, you can do the same . So no extras dragging of connections lines to another node which can result in Spaghetti.
  4. Obviously since this is text based, you won’t have to drag around nodes to layout if any nodes are added or removed.
  5. Text is far more compact than a node. And compared to C#, Blackprint does have code noise reduction.

In case it ain’t obvious. That green “ClampFloat” is a pure function. So, the input comes in front of it, and the output comes after it. Just like with nodes. Also, since in a node graph, a pin can have a default value, a keyword like “def” to use a pin’s default value, also should be introduced.

In my free time or on weekends, I will do more side by side comparisons to see if my idea is worth it, or can be done. Flow control is unexplored so far. But events should work fine. Every execution block entry point, which is the arrow, is a spot where also an event should be able to tap in. I mouse click on a fat arrow, could show a list of possible events that could fire the execution block.