Copilot Mode: N* Players, 1 Pawn, Multiple Controller Mappings

[TABLE=“align: left, border: 0, cellpadding: 1”]
If you’re not familiar with the concept of Copilot Mode, this is a Controller feature popularized by the XBox, allowing two players to share the same controller. I can see the control scheme being useful in many game genres, especially Horror Games. Ultimately, I think its a quick way to get a local coop multiplayer experience operational with nearly no effort, allowing two or more players control a single character. I’m interested in a Copilot Remapping Blueprint Module similar to this, if its already available. I plan to implement Team Copilot mode for both local and remote multiplayer.

As Unreal maps different gamepads to different player controllers, the easiest way would be to control one pawn from different controllers. But you will need to store pawn references yourself.

Similar to the illustration below?

My current train of thought is Player Controller Manager that the Player Controllers send inputs to control a single Pawn.

Yes, you think in right direction, but you will need not a Player Controller Manager, but a Proxy Pawns, so they will route player input to your main pawn.


To make things easier you can make main Player Controller using proxy pawn too.

Hi Yata,

Thank you for your recommendations. My goal is to support both local and networked copilot and I think the Proxy Pawn will work great. I just need to work out the assignment of the Proxy Pawns to the Character’s movement component. I visualize a input mapper component of some sort between proxy pawns and character to handle it. It will require some R & D. Soon as I get character customization replication functioning properly, I start up some testing.

Thanks Again!

Had a discussion with a good friend about the value of Copiloting and how it improves the Coop experience. He suggested that with more controllers, one could increase the number of inputs for a single Character/UI two fold. My first thought was that this could create a dependency for more than one player. My second thought was to solve this dependency, Copilot B controller could be assigned to a Bot or Player 1 can toggle between Copilot A, B, C etc.

Recently pondering over this concept. Considering an implementation in which Player’s posses a Spectator which are attached to specified location/bone/socketon a Singular Pawn Body and subscribes to the Pawn’s InputRouteManager as form of Virtual Possession. Players maintain control over the rotation of their camera sending Input notifications to the Pawn’s InputRouteManager. The InputRouteManager filters Input by-player, directing notifications to input notification queues (events), and process Inputs (animBP). The Player Input filter can be reconfigured at run-time. Players unpossess by detaching and unsubscribing to Pawns InputRouteManager.