The Legend of the Blueprint Icons

Anybody who has worked on an Unreal Engine 4 project has likely had to open the Blueprint Editor at one point or another. Now if you’re anything like me, I found most of the UI pretty straightforward and weirdly intuitive. But there’s one part of the UI that continues to baffle newbies as well as veteran developers: The icons that sometimes appear in the upper-right corner of the Blueprint nodes.

I spent some time sleuthing in an attempt to create a solid explanation for each of the seven icons that you might run into. I organized these in a kind of beginner-to-advanced order so hopefully your eyes won’t glaze over until at least halfway down the page. And without further ado I give you the…

Blueprint Icon Legend

Authority Only – Executes on the network authority. This simply means that the node will only execute on a Listen Server, Dedicated Server, or Standalone instance of the Engine.

UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly)
void DealDamage(float Damage);


Client Event – Executes on all instances of the Engine except Dedicated Servers.

UFUNCTION(BlueprintCallable, BlueprintCosmetic)
void PlayDamageEffects(float DamageCaused, bool bWasCriticalHit);

Replicated – This shows up on any Properties that are flagged as being Replicated.

UPROPERTY(BlueprintReadOnly, Replicated)
float Stamina;

UPROPERTY(BlueprintReadOnly, ReplicatedUsing=OnRep_CurrentHealth)
float CurrentHealth;

Latent – This shows up whenever a Blueprint node will take multiple frames to finish its execution. It will show up for any Blueprint node that has been identified as being an asynchronous task, or a function that has been marked as being Latent or a Blueprint Macro that contains at least one Latent node in it.


More Advanced Icons

I’m not going to discuss what Interfaces are or what IF_EDITORONLY_DATA means, but if you’ve ever come across any of the following icons and wondered what they were for, hopefully this helps.

Interface Event – This icon indicates that we are receiving the event through our implemented Interface (either a native Interface or a Blueprint Interface) and the Interface function declaration has no return value. Because there is no need to return a value, the Interface function is handled like any other Event in the Event Graph except that it will have this icon at the top-right corner.

/**
 * The native Interface declarations.
 */
class MYGAME_API IMyNativeInterface
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintImplementableEvent)
	void MyNativeInterfaceEvent(float FloatParam, FVector VectorParam);

	UFUNCTION(BlueprintImplementableEvent)
	FString MyNativeInterfaceFunction(float FloatParam, FVector VectorParam);
};
The native Interface event definition.
The native Interface function definition. There’s no need here for any special icon because the Interface function definitions show up in the “Interfaces” section of the “My Blueprint” tab, which makes them easy to identify.

For completeness here is the same example, but using a Blueprint Interface declaration instead of a native declaration:

The Blueprint Interface event declaration.
The Blueprint Interface function declaration.
The Blueprint Interface event definition.
The Blueprint Interface function definition. Again, there’s no need here for any special icon because the Interface function definitions show up in the “Interfaces” section of the “My Blueprint” tab.

Message – This icon shows up when attempting to call an Interface function on a UObject Target that may or may not implement the Interface that the function is a part of. The envelope is intended to represent a message (versus a direct function call), which may or may not cause the UObject Target instance to handle it depending on whether or not that UObject Target implements the Interface that the function is declared in. If the Blueprint already knows that the Target implements the Interface, there will not be a special icon since at that point it would behave like any normal function call.

Sending a Message to My Object containing a Float and Vector payload. If My Object implements the native Interface that can handle this Message, it will be called, otherwise it will not.
Sending a Message to My Object containing a Float and Vector payload. If My Object implements the native Interface that can handle this Message, it will be called and return the appropriate value, otherwise it will not get called.

For completeness here are the Blueprint Interface versions of sending a Message for an event as well as for a function.

Sending a Message to My Object containing a Float and Vector payload. If My Object implements the Blueprint Interface that can handle this Message, it will be called, otherwise it will not.
Sending a Message to My Object containing a Float and Vector payload. If My Object implements the Blueprint Interface that can handle this Message, it will be called and return the appropriate value, otherwise it will not get called.

Editor Only – This appears on Properties that are contingent on the WITH_EDITORONLY_DATA compiler directive.

#if WITH_EDITORONLY_DATA
	UPROPERTY(BlueprintReadOnly)
	float EditorZoom;
#endif

Happy Blueprinting

So I hope that at least sheds some light on the meaning of those icons. Feel free to comment, especially if you have something to add!

Advertisements