I wanted to start a new discussion on this topic, since existing threads on the subject are generally full or arguments or people being quite silly… In particular, I want to draw attention to an idea I’ve had for a while about improving the productivity and speed of Blueprinting - which I think benefits everybody while still staying in line with UE4’s existing practices.
Unless you’ve been living under a rock, you know that there have been plenty of discussions and cases for bringing a third programming language into Unreal. Most commonly, the go-to for this is C#. 99% of the time, the only argument for doing so is productivity.
Now, I don’t support the idea of bringing in a third language. I don’t think the solution to the problem is to ask Epic to essentially create and fully support a new first-class feature, which will ultimately only end up segregating the programming community and bring issues and caveats of it’s own. Even if this was possible, you still don’t get the flexibility and power of C++ - and you don’t get the visual interface of Blueprints. The solution isn’t to add a new tool, it’s to find a way to improve the existing ones.
I’m primarily a C++ enthusiast. I personally don’t struggle with or find the workflow frustrating and I’ve been doing it long enough to know where the caveats are. I started with Blueprint, Blueprint gave me enough knowledge of the underlying API that allowed me to start using C++ at all, so for that I’m grateful.
However - I’ve now reached a point in which I can actually prototype and test an idea faster in C++ than I can in Blueprint, which seems very backwards to me. Visual Scripting is fantastic for readability, but the process of creating and linking up nodes is extremely slow in the grand scheme of things. With Visual Assist installed, using C++ in Unreal is a blur of keyboard strokes. The best way to come up with and refine an idea IMO would be getting the best of both worlds, being able to type commands with minimal effort and have it displayed in both a text and node-based format - and have both of those things be coupled to each other.
This image should better explain what I mean. My suggestion is still just an early prototype idea, but I think there’s something to work with and I think it stays in line with what the engine already does, and should be far less complex than adding a new language.
The idea is to add a new window to the Blueprint editor, which displays a human-readable text interpretation of that Blueprint and whatever lies inside it. As you type, the nodes are actually created and linked up in the graph right in front of you.
This also works the other way, as you create nodes, the text editor fills up with the according text. Highlighting / clicking on nodes is also coupled together, and you get auto-complete in the text editor too, to speed up the workflow.
The key is that both the text editor and the visual graph are linked to one another. You can just create nodes like you usually would by clicking, dragging, connecting pins etc - or you can save hand movements and time by typing the ‘connections’ into the text editor, with auto-complete. The example image is an idea of what the Synxtax ‘could’ look like.
So, thoughts?
EDIT: Just a short one, I want to clarify that the extra window there would be optional, just like a details panel. It would be totally seamless with the existing editor and automatically fill as you create nodes, and vice-versa.
EDIT 2: Streamlined list of goals for this idea:
- Reduce the time the user spends creating and linking BP nodes.
- Keep the system contained in the BP editor, avoid creating new tools.
- Stay in line and coupled with the existing tools.
- VAX-Style auto-completion for fast prototyping speed.
- Nodes and Text must be generated in tandem, no disjointed-ness between the two.
- Text language should be basic enough to NOT require additional time spent learning it.
- Text editor is completely optional and doesn’t become a requirement to create Blueprints.