What is practically going on when a player wants to start playing the game when the game is checking if the controller is not equal to nullptr? Why can’t we just set the movement functions for the character without checking this first?
Basically - there may also be other times it is null for code error reasons etc. It’s always good practice to check if pointers are null, it’s not slow…
In the perfect world you should always check if pointer != nullptr before calling any function of that pointer.
In this case, e.g.: Axis value runs on tick, it means that it starts executing as soon as game starts. Controller value must be assigned too, I suspect it happens around BeginPlay(). So it’s quite possible that the first tick of the axis input can happen before Controller value is assigned, and without this check your game will crash, but with it the axis tick is ignored and it starts working as soon as Controller is valid.