Multiplayer game with different logic for each player

The question is indeed quite interesting. I honestly have no idea how Unreal would behave with different types of player controllers in one multiplayer game but from all I know so far it should be very much possible.

When opening a new level (or connecting to a server via console commands) you have a few additional options. Finding out the parameters is a bit tricky but it’s possible to select the game mode via those. I’m not entirely sure if you can do the same for HUD and Player Controller. It really comes down to how Unreal handles the whole structure in each level. Since you always have to cast your playercontroller from everywhere you get it, the changes for such a thing in BP would be minimal. This is pretty much up for testing.

If this should happen to not work out properly you have a possible fix via your controlled pawn. It’s possible to simply use your controller as input receiver and directly forward controls to your character. You can set your camera behavior and everything in your pawn BP which means for a Top Down commander you could simply do an empty pawn with no collision and only the camera which uses the inputs to do the commander stuff and fps controls and camera via your other characters which are set up as usual. This would also allow hotswapping (changing the controls form commander to fps player during runtime in the middle of your level) which is not really possible if you do it via the player controller as you can’t swap that out via Native Blueprint and even C++ gives you some trouble there.

I am aware that this is not a nice workaround but it will certainly give you the intended result.