Unreal Blueprints Visual Scripting
I've had the opportunity to use UE-4 for a few months and I can report a little more information:
The Blueprint runtime is currently implemented with an interpreter written in C++ - and so probably 1 or 2 orders of magnitude slower than C++. From what I can tell it wouldn't be too hard to generate C++ source code as an alternative, however, since the type system is essentially a subset of C++.
One-shot continuations, i.e Futures are supported (Unreal calls these "Latent actions"), which however have to be implemented in C++. The overall nomenclature is sadly C-like. They distinguish Blueprint "Functions" and "Macros". It seems Functions are callable from C++ and must return synchronously (can't contain "latent actions"), whereas Macros can only be called from their interpreter.
The Unreal Editor is almost certainly the coolest IDE every created. The blueprint editor itself is pretty cool, and is stable and usable (I haven't lost any work yet). Blueprint debugging, breakpoints, and watchpoints work. Auto-completion works well. Type-checking is decent - errors are placed on nodes in the graph as well as listed. Searching and navigation (find references) and refactoring (renaming) works reasonably well.
Although they don't have first class sum types, they do generate graphical "switch on X" nodes for C++ enumerations (which again have to be defined in C++ and with additional preprocessor boilerplate), which have outputs for each alternative. In addition, they have a "switch on String" node to which you can add cases in the editor. For product types, which are C++ structs that you must annotate with additional preprocessor boilerplate, they generate "break struct" nodes which have outputs for each factor.
Higher-order functions aren't supported. Concurrency aspects seem to be undocumented but the reality is obvious - blueprints aren't thread-safe and everything must occur on the main thread. Generics aren't supported in general in blueprints, however they are supported for arrays - which correspond to the Unreal C++ class template TArray<>.
Active forum topics
New forum topics