Tick() is called before BeginPlay() on Client's PlayerControllers (i.e. bAllowTickBeforeBeginPlay == TRUE by default)

Hi all, I’ve run into an interesting (i.e. been trying debug this for the last three days) behavior with a REPLICATED PlayerController. That is, this behavior only shows up on the Client side.

I’ll start with the behavior itself: bAllowTickBeforeBeginPlay is set to TRUE by default on the Client side. I’ve also checked that it’s defaulted to false in the local/server side, so this behavior seems isolated only to networked environments.

My question is, is this a bug or intended behavior? I ask because I’m trying to decide whether to remember to code around this for all Client-side PCs or just wait for this to be “fixed” later.

Also, to be clear, I’m not necessarily asking for this to be changed. Rather, I want to know if this was set to TRUE by default on the Clients’ side on purpose (i.e. for some under-the-hood concerns). And if it’s not, I guess I should simply set bAllowTickBeforeBeginPlay to FALSE at the contructor from now?

1 Like

Okay, so I think this is intended behavior. Turns out this is set to TRUE on the BP object.
Still not sure what the reason for this is, but at least it’s not a bug from what I can tell.

217776-capture.png

Additional observation: even if the C++ code sets bAllowTickBeforeBeginPlay to FALSE, once you convert it into a BP, the default TRUE setting on the BP object overrides the C++ constructor setting.