Home

Projects

Posts

About

Contact

Hey! Just a note, this has been pulled from my old site so, while this site is being built, some things may not work correctly.


How To Make Custom Unreal Engine Nodes Easily

17/09/2021

Making custom nodes for Unreal is pretty easy when you know how to. You may be wanting to add some new functionality, make new features for your game or, simply, expose something to blueprints in the editor. I'll show you how to make them but I'll only be showing the Header file, the Cpp file isn't needed right now. So let's go over how to make some nodes!





The Types of Custom Nodes




Types of Blueprint Nodes





There are three main types of node you can create but all three have the same customisations, to an extent.
You have:





  • Normal - This is a normal node with it's execution pins. This one has a blue header and is the most basic of nodes.
  • Pure - This one shows up with a green header, you'll notice it doesn't have it's execution pins.
  • Compact - This one is the smaller one without a header.




A Basic Node





Unreal Node Made in C++




Basic nodes are pretty basic which is why I call them basic...or normal. These are the ones with the blue header bar. They're pretty simple to make. Mine doesn't show the owning class below the header since I'm using a Function Library.





The C++ behind a normal Blueprint node




So, as you can see, this is pretty easy but let's break it down anyway.





First, you, hopefully, know that anything being exposed to Unreal needs to have the UFUNCTION macro, for functions. This is so Unreal knows how to read it when compiling.





After that we have the node details, this is telling Unreal how to handle the node. Most of this is just cosmetic and most of it is optional.





Digging into the UFUNCTION, we have BlueprintCallable. This is telling Unreal we want to be able to call this function from Blueprints, pretty simple, isn't it?
And we also have Category, which allows you to organise the node in any menu it may be in.





Then we have "meta". Let's go over what meta is. Anything within meta defines how the UFUNCTION interacts with the engine and editor but game logic cannot access the metadata, it's purely visual in the editor.





As you can see, I can set a DisplayName which appears in the editor, along with Keywords to make it easier to find from search.





A Pure Node





A Blueprint Pure Node




As you may be able to tell, the main difference between this node and the normal one is the lack of execution pins and that's about it for that one and there's not much else to say about this node.





A Pure Blueprint Node




To have a Pure node, just go ahead and change BlueprintCallable to BlueprintPure.





A Compact Node





Compact Blueprint Node




Compact nodes are compact, hence the name. They lack a header bar and tend to be smaller. They usually rely on a single word or symbol to tell you what they do. If you look at any maths nodes, you'll see what I'm talking about. The maths nodes only use tend to use a single symbol which makes the compact nodes the way to go!





The C++ behind a Compact Blueprint Node




If you look at the meta, you'll notice a new specifier called CompactNodeTitle. This tells Unreal to make the node Compact and that's all you have to do, it's pretty simple.











So lets go over some more specific stuff





Hiding The Input Of A Node





An Unreal Blueprint Node with a hidden Input Variable




So you may notice some nodes have hidden input pins, like this one, and you want to know how to do this sorcery? Well, it's pretty simple.





This is great as it cleans up the node slightly and you can just pass a variable in by reference. I left one input visible for reference.





The C++ behind hiding a Blueprint Nodes input variable




To achieve this you first need to set the variable to be a const and add a & after the type, to define it as a reference parameter.





Custom Outputs





The C++ Behind Custom Outputs in Unreal Nodes




Lastly, I want to go over adding custom outputs to your nodes. Unfortunately, I only added a single output for my node but this method enables you to add as many as you want. First, let's make the function return void, we can keep it as float but void will keep it neat for now. All you need to do is pass whatever variable you want to be an output as a reference, using &, and you'll be good to go.





Custom Output pins on Unreal Nodes








And that's about it for now, you can read more about UFUNCTIONs and their properties here: https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/GameplayArchitecture/Functions/









If you're interested in some more C++ tutorials, maybe check out:
Controlling What Happens on Fell Out Of World
or
Taking In-Game Screenshots With UI in Shipping builds of UE4 Games.
You can also support me on Ko-Fi at https://ko-fi.com/rhyce