As a teacher on a game development module I have usually insisted that users use C++, because it is a more sought-after skill in industry, but online support and information on C++ in Unreal Engine 4 seems to be relatively weak. Are professionals now using Blueprints as well, or not?
-
11\$\begingroup\$ Documentation isn't going to be a good gauge of how much something is used. \$\endgroup\$– HouseDec 10, 2018 at 18:22
-
1\$\begingroup\$ Documentation on Unreal Engine 4 C++ is lacking because you go and read the code yourself. You don't strictly need documentation if you can access the source code. It'd be nice to have it, though. \$\endgroup\$– OxyDec 11, 2018 at 9:11
-
1\$\begingroup\$ @Oxy The source code is not a substitute for documentation. Period. The source is much harder to read than documentation, by definition, because the point of documentation is to distill what a function does into a readable format. This is doubly true of high-performance, extremely capable code, like Unreal. \$\endgroup\$– anonDec 11, 2018 at 22:13
-
1\$\begingroup\$ I'm explaining what happens, not justifying. "It'd be nice to have it, though." And you better read the code of the functions you use, even the documented ones, because some important ones have golden nuggets as "foo(x){/* foo Not implemented, doing instead bar(x) because usually acts like foo(x) was done */ bar(x);}. I've yet have to see a documentation system in action that keeps pace with code evolution. Other than automated documentation that does nothing more than spew the parameter types and return types, just like reading a header does. \$\endgroup\$– OxyDec 12, 2018 at 8:31
2 Answers
Yes, professional games use Blueprints.
Some use a mix of C++ and Blueprints. We use both on Dead by Daylight.
One of the great things about Blueprints is that non-programmers can get access to the ability to script behaviors. Not every project will use them this way, but it's one of the reasons they were designed. They replaced UnrealScript as the means of altering behaviors without hitting the C++, and they also replaced Kismet which was Unreal 3's visual scripting system.
-
\$\begingroup\$ Can you expand? Do only the programmers use Blueprints, or only the "non-technical" staff, or a bit of both? Is it used for specific purposes, or for just about anything? \$\endgroup\$ Dec 10, 2018 at 20:33
-
7\$\begingroup\$ @KABoissonneault It's very much a mix. Most of the time there's no easy way to clearly delineate between what programmers work on versus what non-programmers work on. That's especially true if you have a designer, who will likely want tweaks all over the code. Blueprints also get used a lot for rapid prototyping, and they're not necessarily converted to C++ if the performance doesn't require it. It'll also vary a lot by studio and project, so there's no one answer. \$\endgroup\$– anonDec 11, 2018 at 0:17
A little anecdote from outside the games industry: We use UE4 for architecture visualization in VR.
While I'd rather have most things built in C++, we also use Blueprints heavily for all kinds of "additional logic" like light switches, doors, etc.
It's been this way for a little over two years now and I was the only programmer at the start of this endeavor. So here are my observations:
- It's astounding what non-programmers can do with Blueprints!
- I can be horrifying what novice programmers do with Blueprints ;)
- Even if I convert it to C++ in the end, Blueprints are nice for a quick RnD phase
And the biggest one for me: In a lot of conversations, it became clear to me that Blueprints have invoked the desire to become programmers in my non-tech colleagues. The main reason this happened is that they could implement quite complex logic while being able to debug it visually.
They actually learned some hard lessons about software architecture and the pitfalls (or rather nightmares) of huge spaghetti blueprints. But only after having felt a ton of little successes along the way! So they weren't discouraged at all but rather motivated to do better and find out how to do so all by themselves.
They've since taken courses in C++, Python, and C#, the overall quality of our Blueprints became way better, but most of all: I now have some help when developing our core libs :)
TLDR;
Yes, we're using Blueprints and they even made my initially non-tech peers better coders.
-
2\$\begingroup\$ One of the nice things about visual languages like Blueprints is that you don't need to worry about syntax, and they're generally so abstracted that you can do a lot with very little boilerplate. They make it easy to learn how to code without being bogged down by syntax. They're also normally too high-level do do any wizardry, but, y'know, that's a tradeoff I'm willing to make to let non-coders have a direct impact on the game's behavior. \$\endgroup\$– anonDec 11, 2018 at 17:58
-
1\$\begingroup\$ @Almo I'm about 90% sure that's possible, unless you really really want it to be one "line". Just
(get myVector x) (get otherVector x) -> (+) -> (assign myVector x)
(wow, it's hard to write out Blueprints in text...). I don't have a copy of Unreal to test with, though. Or, if vectors are immutable, then just make a new one,(myVector.x + otherVector.x, myVector.y, myVector.z)
\$\endgroup\$– anonDec 11, 2018 at 19:28 -
2\$\begingroup\$ It's definitely possible, but it's messy. Vector line into a Break box, which has x, y, z outputs. Do that twice, one to get myVector.x and another to get otherVector.x, add those and route it to an assign box. \$\endgroup\$– Almo ♦Dec 11, 2018 at 19:40
-
1\$\begingroup\$ I've seen complex vector and quaternion math in blueprints. Yes I want it in C++, yes it's far easier in C++ (imho), but you can absolutely do it \$\endgroup\$– XcenoDec 11, 2018 at 19:40
-
2\$\begingroup\$ I did not say you couldn't. Just that it's hideous. \$\endgroup\$– Almo ♦Dec 11, 2018 at 19:40