Download

[FEATURE REQUEST] A full rework of Blueprint system

Coming from development with Visual Studio (C++, C#, VB.NET), when I started working with UE4 a couple of years ago I was in the wrong idea that Blueprints where a kind of visual editor of C++ code, more or less the same as Visual Studio has visual editors for creating forms and user controls that convert internally the designs to code.

But the reality is that Blueprints and C++ are two different and very separate way of creating UE4 projects. C++ projects are much better in performance, as far as I know, but have the con that you have to deal with VS and constantly be between both tools. Blueprints are easy and fast to use as you remain on UE4 all the time, but clearly performance is penalized.

So here is my request: A new and improved system for Blueprints where them are just a visual editor for C++ code, so any time you can switch between blueprint editor or C++ code editor and without never leaving UE4. This means

  • a context menu options “Switch to code”/“Switch to editor” and an internal automatic conversion between changes in a blueprint and in the C++ code,
  • full support of any C++ class, enum, interface, etc in both code and blueprints (with no exception),
  • always save any class in common C++ files and save the blueprint graph in a secondary text file that describes the graph elements
  • a C++ simple editor with intellisense inside UE4 to avoid the need of and external tool (or the option to work with VS if is the desired selection of the dev),
  • an integrated compiler inside UE4, so no VS installation be needed

For me this colud be a new step in the Blueprints system, call it Blueprints 2.0, that would join performance (because you end compiling C++ always) with easiness (because you can code using BP and without the need of using an external dev tool).

Thanks for the attention. Anyway my congratulations for such an amazing tool as UE4.

Jan Herca

“Blueprints aren’t what I thought they were, so please redo them from the ground up, either breaking every existing UE4 project in the process or creating a parallel codepath that will exponentially complicate the entire engine maintenance”

Also, google is your friend: Nativizing Blueprints | Unreal Engine Documentation

PS. If I sound like a jerk, good. Requests like these are inane, have no place in what is presumably supposed to be a community of intelligent, mature developers; and are probably in large part to blame for Epic developers not being as active on the forums as before. I wouldn’t want to explain why there can’t be a “make an MMO” button for the umpteenth time either.

You could implement it yourself it it’s as easy as you say… Or maybe you could pay for development if doing it yourself is outside of your scope of knowledge…

Some visual tools for Unity on their asset store work exactly as described… and they have a ton of issues because of the way they are designed.
The first huge problem is, by using a tool built that way, your whole game is automatically forced to run based on reflection;
Reflection is slow af when you have to use it everywhere.

If performance is slow, then you can restructure BP in many ways eg dont include a lot of bp in tick, or it may be suffice to run at 10fps? (not every tick). Nativize the offending BP, or convert to C++. With BP, you trade performance with ease way of coding.

Is it true that using the blueprint to c++ converter often never works and gives many problems ? I’m so attached to blueprints, but I need (working)performance gains!

They’re few issues blocking nativization of the entire blueprint codebase.

But they’re fixed lot of them recently.
Let’s take this one: Unreal Engine Issues and Bug Tracker (UE-42614)

Still some issues waiting in line, but it looks like they really want to finish this up. It’s possible they would do it by 4.20 or 4.21. If you’re not releasing game soon, you could benefit from it from Day 0 :slight_smile:

DamirH you sound a bit rude in your answer. I am requesting something I think is pretty reasonable. Sequencer is a new rework of Matinee and the Audio system is being reworked. Of course I am not asking for a new Blueprint system that makes old unusable, just a new system that brings easiness for the C++ part. Perhaps I haven’t explained it clearly, but the idea is to have an integrated code editor inside Unreal (there are a lot of C++ opensource editors), and a tool to make C++ programming in the visual style Blueprints work but with an interanl and automatic conversion to C++ that you can see anytime.

Of course I see my suggestion is not the typical “small feature add” to the engine. This is more a kind of “big feature suggestion” for the future.

Thanks for the opinion anyway.

I’d love to have an in-editor C++ Editor that compiles as soon as I click on Play.
As a single developer, C++ is a pain in the ***. Even if you create a single class, compiling always takes atleast 10-20 seconds for me.
I can condone the long compile times if I wouldn’t have to switch between VS and Unreal. Automatic compiling would be great, too(and also compiling on a separate thread of course).

That was the intent. Neither Sequencer nor the Audio system even come close to the complexity and depth of integration that BPs have in UE4. You’re asking for an entire engine rewrite. Blueprint nativization is already a thing I linked you to and you can inspect the generated C++ code after it nativizes.

Having the convenience of compiling when you click “Play” (BPs do that) wouldn’t change the fact that compiling would still take just as long because of the nature of C++, the compiling of which already uses all your CPU cores so the “compiling on a separate thread” remark is just silly.You don’t have to switch between VS and Unreal, there’s a “Compile” button right next to the Play button, you can technically edit your code in Notepad and compile from the editor all the time.

Honestly, most of the people here talk about things they barely have any understanding about. I’ll just step back and ignore… silly threads like these from now on.

That’s @DamirH - no prisoners! :stuck_out_tongue: … He’s happy with the way things are and if he scares away a few devs, then good! You were lucky imo, Damir actually read your post. Didn’t feel he really read mine. Just unloaded all weapons and exited the game! :smiley:

Anyway, I agree its good to ask about the state of BP. Overall blueprints are magical and brilliant for prototyping games. But can they be improved? Definitely! Once nativization is rock solid and once Epic continues to add more functionality. Often to make a finished game you need 3rd-Party plugins. That means C++, even if its someone else’s code. But if the plugin author finds the product too much to maintain versus the revenue, what then…???

Can you get away without any plugins at all? BP is still missing some surprisingly simple things. Random examples: Datatable-Saves / Split-screen helpers etc. You can’t make runtime changes to Datatables and save out to a simple database format like CSV/Excel, or alter split-screen from horizontal to vertical at runtime etc etc. Those kinds of things should be built-in without needing plugins imho.

So, does it make sense to build another layer on top of C++ that’s also Node based? Well, even if Epic saw merit in the idea, I can imagine how long that would take and how error prone it would be in the early days, just like BP was. Development takes a lot of incubation time… Even for the next iteration of the engine it would be very risky. But here’s a thought, why not hit up the Lumberyard forums and see what they think of the idea, as their node solution is younger iirc. Its not a bad idea to explore at least. If LY did do something similar and it worked, others would sit up and take notice. And if it failed, at least it would make an interesting case study! :slight_smile:

Sorry man, I must’ve missed it, sometimes I leave long posts for later and it slips my mind! I’ll rectify right away. :smiley:

Edit: Eh, don’t want to necro an old thread, but yeah I used a bit of a hard terminology there, with “complaints” etc… my bad!

@DamirH - No worries dude! :slight_smile:

TL;DR
Adding text editor to Unreal’s editor won’t solve any of C++ issues! It would use the very same compilers, linkers and everything that comes with C++.

  1. Blueprints compile so fast because compiler speed truly depends on how many blueprints you changed. This is kind of blueprint-only magic. C++ compilers (or C# in Unity) also try to do this, it’s optimized well - from like 2 minutes of full rebuild to just 7 seconds. Still it’s not instant “compile & play” experience. Integrating text editor and compiler into editor won’t change it.
  2. And if you would integrate IDE with editor you’d rely on hardcore version of code hot reload. 4 years passed and still hot reload in UE4 doesn’t work flawlessly. I often end up with throwing few bad words, closing editor and compile project normal way.
  3. C++ and tools like VS are with us for decades. Developed for Epic and us “for free”. Still, it takes time to “only” improve UHT, UBT, support for different IDEs.

And comparing it with Sequencer or Audio engine doesn’t make any sense. These are kind of tools which need to be integrated into the engine. Old versions of these systems couldn’t be developed further without writing it from scratch. And Sequencer is kind of unique tool.
Writing new text editor while there are many of them out there? It’s reinventing the wheel. It wouldn’t help you write code faster.

EDIT

Cannot be done. Blueprint-generated code isn’t ready to be further edited by human :wink:

You already have full support for any C++ class, enum and interface in… C++. Adding C++ editor to the editor’s UI won’t improve anything in BP.

And that’s exactly what we’re doing today: combining C++ with BP. Source code for blueprint is a huge and messy text file. That’s why you can copy-paste part of blueprints.

Well, if somebody ever used Intellisense with huge codebase (i.e. Unreal’s source code) - he knows it works like a ****, terribly slow. Meanwhile, Blueprint’s context menu works instantly.

But this is Blueprint exactly… You already have it…

Wrong. Blueprints get compiled automatically, C++ not. Not to mention that Hot Reload sometimes (more often actually) doesn’t work. As I said, I can overlook the long compile time if I have the lazyness of skipping that compile button and clicking Play directly and having my new changes after compiling.

€dit: Checking if there are any changed files in the sources (Makefiles do that) and compiling on demand would make C++ in my case much more appealing.
Thinking about it, why not letting the Editor check every X timeunits for changed files and compiling automatically? Does UE even compile only files that have changed? To me it always looks like it compiles everything, even with incremental build.

Because it would try to compile unfinished code/features most of the times?
I do save edited files all the time, but it doesn’t mean I’m ready to compile. It would actually increase the time needed to get the job done.
It would be annoying even with blueprints - interrupting work for a moment and then complaining about half-finished code…

…this is exactly what I said:

True, which is a feature that’s been in active development for a long while. Should give people asking for this an idea just what the scope of the thing they’re asking for actually is.

So effectively, you want the Play button to double as the Compile button and run the game afterwards? Considering you’d be saving the <1s it takes to click on the Play button after compiling, I am not quite convinced of the “time invested to develop / time saved” ratio.

I am not even going to bother with this, [USER=“69”]Just Krishna[/USER] already explained it far more succint and polite than I ever could hope for.

Yes it does to the extent that a reflectionless programming language allows: Configuring Unreal Build System | Unreal Engine Documentation <—Look for bUseUnityBuild.

So close your mind and shy away from answering a simple question? Not simple to make, yes. But… I take this “request” as an idea. An idea that asks if implementation is possible. That’s a question that any level of developer may ask. Can we implement “y” to improve “x”? I feel that’s a bit different than “make MMO button”. Your response falls in line with the ■■■■■■ responses posted for the umpteenth time.

Cool it guys.

To put it plainly, everything OP bullet-pointed is impossible. Take it from people who use the engine everyday and understand how it works on a fundamental level. I understand DamirH’s frustration, because people who claim to have used programming languages and IDE’s should easily be able to understand why that is, or at least know where to look to and work it out on their own.

Blueprint is not, and was never supposed to be a replacement for C++. Both have their own merits and have distinct, unique purposes in the UE4 workflow.

All this aside - why on earth would we want Epic spending their time and resources developing a C++ IDE? They are making a game engine, and there are plenty of perfectly suitable IDE’s out there already. This falls into the same line of questioning as “why can’t I create art assets in UE4”.

People are unreasonably terrified of using C++ as if it’s some kind of dark art. It really isn’t.