Hey guys,
Engine version: 4.18.3 (vanilla).
I’ve given up debugging my multiplayer game as a dedicated server and client(s) in PIE due to various strange replication issues and have opted to follow Ramma’s setup with batch files (see this link: A new, community-hosted Unreal Engine Wiki - Announcements - Unreal Engine Forums ); and that’s how I used to develop in UDK3 as well so it just works for me. Just recently I’ve run into a problem with a Blueprint not calling a function in the owning player controller so I created a new dummy function called StupidTestFunc. The StupidTestFunc BP node just takes an FString from the HUD and in the local player controller, prints a message to the log. This is called from a UMG HUD Widget owned by that local player. The odd thing is, this works in PIE but I get the following error when I launch a Standalone server and Client (both throw the error below).
"The Setup"
UE415HUD_WBP - A Blueprint widget that extends from User Widget. It is instantiated by my HUD class in BeginPlay and added to the viewport. This works flawlessly (as other HUD widgets on it are visible, work, etc.). Note that “Existing” Blueprint functionality works in this, player controller and otherwise, as well (I click buttons and images update in my HUD which reference data in the owning local player controller, etc.).
Here’s a code snippet showing the definition of function and body. They happily compile in VS. It’s properly connected in Blueprints and it happily compiles the Blueprints in the editor.
StupidTestFunc is defined as:
// UE415NetGamePlayerController.h
public:
UFUNCTION(BlueprintCallable, Category = "Debugging")
void StupidTestFunc(FString TestString);
// UE415NetGamePlayerController.cpp
void AUE415NetPlayerController::StupidTestFunc(FString TestString)
{
UE415LogWarn("======= String value: %s", *TestString);
}
"The Error"
LogBlueprint: Error: [Compiler UE415HUD_WBP] In use pin no longer exists on node StupidTestFunc . Please refresh node
or break links to remove pin.
LogBlueprint: Error: [Compiler UE415HUD_WBP] In use pin no longer exists on node StupidTestFunc . Please refresh node
or break links to remove pin.
LogBlueprint: Error: [Compiler UE415HUD_WBP] In use pin Target no longer exists on node StupidTestFunc . Please refresh node or
break links to remove pin.
LogBlueprint: Error: [Compiler UE415HUD_WBP] In use pin TestString no longer exists on node StupidTestFunc . Please refresh nod
e or break links to remove pin.
LogBlueprint: Error: [Compiler UE415HUD_WBP] Could not find a function named “StupidTestFunc” in ‘UE415NetPlayerController’.
Make sure ‘UE415NetPlayerController’ has been compiled for StupidTestFunc
I’ve cleaned and rebuilt my solution in VS, refreshed my Visual Studio project from the editor and I’m out of ideas. Anyone have any suggestions? I fear this might be a case of either my blueprint somehow being corrupted or something else I’m missing. This is basically a “throw away” project for me; something to play around with and experiment with but I’m quite concerned by this behaviour as I have no explanation for this.
Cheers,
-Nate
Update:
Things I’ve tried to fix it:
- Opening the Blueprint and pressing
Refresh All Nodes. (Yes, it saves
after a successful compile but I
click Save anyway.) - Opening the
Blueprint and pressing F7. (Same as
above: Yes, it saves after a
successful compile but I click Save
anyway.) - Creating a brand new widget
that extends from User Widget, copy
and paste everything from the
original widget into the new one
(including the Blueprint script “back
end” of the UI) with no success- The
exact same results as the reported
issue down to the errors in the log.
It would be really cool if someone more knowledgeable than I or from Epic would chime in; this isn’t great if I can’t run the game outside of the editor. I spoke with some friends who’ve had this happen and they had to restore the Blueprint from source control because it was their last option and it worked for them. I -might- have the option to do that.
Edit: Updated.