Controller index never changes

Hi, I don’t know if what I am about to describe here is a bug or not but it is pretty strange.

I am doing a local multiplayer and I assign to each player a cursor color. To do so I get the spawned actor controller display name and compare to a list of names. Although this method doesn’t work, it revealed to me that my controllers always assume a sort of hierarchy, without me telling it to do so.

  • Controller A will always be Player 1
  • Controller B will always be Player 2

The problem with it is that even when Controller A is not connected, Controller B will be player 2 (or player 3 If I tick “skip assigning gamepad to player 1”). This is a problem when developing a local multiplayer because one of the controllers has to always be connected/in use.

So, In order to test it I created a new third person template and followed this [live training by epic][1] (until about 21 minutes) and just added a print node to player controller.

I would like to know why this happens and how can I solve it. Either by making the first player the controller from which the input came first or just making the controller B the first player when Ai is not connected (or something else.)

P.S.: Some local multiplayers recognize as the first player the controller from which the input came first. I don’t know if I have to do something with C++ in order for it to work on a similar manner.

Update:

I have noticed the controllers index/names will remain the same UNLESS I unplug every controller and plug them again in the order I want them to be.

So if I want controller B to be Player 1, I need to unplug controller A, unplug controller B and plug controller B again.

Why does this happen?

This might be an editor thing, Have you tried restarting the editor after you unplug a controller?

Have you tried it in a packaged build?

Yes, I have restarted the editor and it also happens on packaged builds.