No announcement yet.

Let's talk about increasing speed & productivity in Blueprint.

  • Filter
  • Time
  • Show
Clear All
new posts

    [BLUEPRINT] Let's talk about increasing speed & productivity in Blueprint.

    Vote on Issues

    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 here 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.

    Click image for larger version

Name:	BPScripting.png
Views:	1
Size:	378.2 KB
ID:	1191730

    The key here 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.
    Last edited by TheJamsh; 08-15-2016, 01:28 PM.

    I would say this is a good idea but probably will be better is the maps, shaders and Blueprints can be editable as that type of code, I mean when you edit in visual editor you edit at the same time the code and the code can be opened out of the engine to edit it.

    I give a +1 to this, I want more clear work, probably slowdown the performance in the editor but I want this cause can help for script languages and help to corrupted files to edit it and figure where is the problem better.
    Hevedy - Instance Tools:
    Hevedy - Image Tools:


      This is an excellent idea and I believe one that Epic should strongly consider.
      This would leave the advantage of visual code for blueprints but allow for not only text people to see things at a glance but possibly even build text parsing tools on top of blueprints.
      We could see improvements in user made linters as a result of this.

      [MENTION=8]Alexander Paschall[/MENTION]
      A proud and noble software developer


        Just to clarify on this subject too, I think the way to make this a succesful idea is to ensure that the text-based 'language' doesn't need to be 'learned'. You should be able to easily infer whats going on in the BP from the text and vice-versa, and within a few hours both methods should come as naturally as the other.

        The idea at heart here really is 'Typing Out Visual Nodes' - This is about improving the tools, NOT adding a new language.


          Hey James, great write-up for your request. I've forwarded it over to support to get a request put in the system, but I'm also bringing it up in my reports to the lead devs for consideration. Thanks!
          Twitch /unrealalexander| Twitter @UnrealAlexander
          How to report a bug? | Installation & Setup issues?
          Call me to a thread by posting this: [MENTION]Alexander Paschall[/MENTION]


            Originally posted by Alexander Paschall View Post
            Hey James, great write-up for your request. I've forwarded it over to support to get a request put in the system, but I'm also bringing it up in my reports to the lead devs for consideration. Thanks!
            Boss! I'll be interested to hear what they say


              I actually suggested the same thing a few days ago ... meant it as a joke, since it was about C#. But it seems very productive either way to have code not only inside UE, but also inside the specific blueprint


                Love this idea. I think if I had this, I could efficiently work on blueprints and learn C++ at the same time since it's something that's definitely on my schedule of things to do.
                Lead Developer of Blades of Orterra | Facebook | Twitter | Official Website


                  Interesting thread... Long-time coming. A few simple BP tweaks would really help out users a lot.

                  Definitely think BP can be improved but not convinced about the text idea just yet (how useful it is).
                  I feel we need more visual control over Blueprints, such as user customization (optional user feature).
                  Add clarity to nodes by adding movable pins, user-based node-color-coding, flexible wire-style etc...

                  Kismet had the right idea: Keep variables small and insignificant & to the bottom of nodes not left to right...
                  Reserve execution pins for left to right 'code flow' and / or allow pins to be draggable anywhere on a node.
                  BP Variables often look too much like 'Code Nodes' as it is, & the spaghetti is impossible even with re-routing.

                  BP also introduced minimalism where some nodes aren't even titled. I think that's unnecessarily confusing.
                  If this sounds interesting but isn't clear let me know & I'll do examples. Otherwise I'll assume its just me

                  Here's a random sample of Kismet and Blueprints. Have we made progress or gone backwards: Kismet vs. BP...


                    Exactly my thinking. ++ for seamless conversion between nodes and text
                    Get your GAME done - Productivity Plugins for Unreal Engine.

                    My articles in Game Programming Gems:
                    Real Time Modular Audio Processing For Games
                    A Lightweight Generator for Real-Time Sound Effects
                    Controlling Real-Time Sound Synthesis from Game Physics


                      a script editor for BP could be interesting.
                      But to be honest I would prefer an improvement of the working flow with BP directely.

                      BP somehow remind me about mindmapping software, some have really tedious way of building the mindmap with ton of shiny visual list you need to scroll on and clic to select, open popup, forcing you to manually position every branch, note, etc...
                      while other just go straight with only keyboard solution, context shortcuts,dynamic hotkeys, personal favorite, custom snippet, default automatique positionning of every branch, node, with autorearanging.

                      Another idea of improvement, I'm thinking about how TheBrain handle the display of its nodes and how it can rearange the dispay of it dynamically, based on the active selected node.


                        Hey TheJamsh,

                        Thanks for the suggestions and for providing a solid, detailed explanation.

                        I've gone ahead and entered a feature request for discussion by the developers:

                        Have a great day!


                          I used to say somewhere back in 2014 that this is how Blueprints should work.
                          But after thinking more about it I understood that a gigantic amount of work on a very complex lexical parser is needed to make it possible.
                          | Savior | USQLite | FSM | Object Pool | Sound Occlusion | Property Transfer | Magic Nodes | MORE |


                            Yeah I think this might be more difficult to do than first appears. But, it seems to me that just adding more keyboard control options and making the context sensitive menu a lot smarter could go a long way to giving the functionality you want.

                            Through a combination of typing node names and control keys/shortcuts, it should be possible to build up a series of nodes, with connections, without taking fingers from the keyboard. It would take some smart design to make it natural to use, but would probably be a lot easier than a full on editable text representation.


                              Originally posted by franktech View Post
                              I feel we need more visual control over Blueprints, such as user customization (optional user feature).
                              Add clarity to nodes by adding movable pins
                              Not to derail the thread but wanted to throw my support in for being able to customize the order/placement of pins, if for nothing else than OCD reasons.
                              A proud and noble software developer