FindPlayerStart() "Incoming Name" parameter can't be specified in Blueprints

Steps to Reproduce

  1. Create a game mode class.

  2. Create a Blueprint function override for FindPlayerStart().

  3. Note how there are two input nodes inside the function, “Player” (Controller Reference), and “Incoming Name” (String).

  4. Add the FindPlayerStart function in your Event Graph.

Expected Result: Both “Player” and “Incoming Name” can be passed in to FindPlayerStart()

Actual Result: Only “Player” can be passed in to FindPlayerStart()

I could be missing something obvious here, please let me know if that’s the case.

Hey Punitiate,

This is actually not a bug, and I can explain why:

What’s happening here is you’re actually calling the Blueprint Pure function in your event graph, which in GameMode.h looks like this:

UFUNCTION(BlueprintPure, Category=Game, meta=(DisplayName="FindPlayerStart"))
AActor* K2_FindPlayerStart(AController* Player);

When you are overriding the function, you are actually overriding the BlueprintNativeEvent, which looks like this in GameMode.h:

UFUNCTION(BlueprintNativeEvent, Category="Game")
class AActor* FindPlayerStart( AController* Player, const FString& IncomingName = TEXT("") );

The Native Event is something that is handled automatically and is called whenever a player is created. Overriding it allows you to change the functionality of the function itself, but when you are calling it in your event graph you are actually calling the blueprint pure function instead of what you have overridden.

As a result, this seems to be working as intended.

If there is something specific you’d like to accomplish, feel free to let me know and I’ll be glad to offer some alternatives.

Have a great day