Hey guys, I may have found a solution to this problem.
A friend of mine contacted me today for this exact problem. Since I stumbled upon this post during my research, I thought I’d share and explain my solution to help others out. Please note that I am a software developer that has not actively worked in Unreal Engine for the past 2 years and was simply helping out a friend, so I am not up to date with everything new in ue5.
When hearing this problem I realised this might be some sort of order of execution problem where the players gets initialized faster than the controls can be set up. This is probably why adding a delay fixes the problem for some of you, but this is far from ideal. F.E. if the initilazation is pooled or threaded, slower systems might still not be ready after the delay and once again fail to initialize properly. This is why I started looking for ways to force the controls initilazation to happen after the player was set up. This is possible by making a custom GameMode and overriding the HandleStartingNewPlayer event to force Unreal to first initialize the player and then do the controls. An example in the image below (Note that the InitialiseControls event is a custom event on the player BP where my friend manages all his input related stuff):
Boom, that’s it. Everything input related works for my friend’s project and he can play with as many keyboards/controllers he likes (max 4 ofc due to local multiplayer). This approach also does not rely on time related code, making it more reliable. Hope this helps somebody out ![]()
