Skip to content

Multiple Controller Support [SYNTH-151] - #1436

Open
RoushilS wants to merge 19 commits into
devfrom
roushils/151/multi-controller-support
Open

Multiple Controller Support [SYNTH-151]#1436
RoushilS wants to merge 19 commits into
devfrom
roushils/151/multi-controller-support

Conversation

@RoushilS

Copy link
Copy Markdown
Contributor

Task

SYNTH-151

Allow multiple gamepads to each control individual robots

Symptom

Situation: User wants to simulate full FRC match (six robots) on one computer, not online multiplayer. They discover that Synthesis has a limit of one gamepad, which can only control one robot (theoretically more robots but would be poor ux). They also find that the alternative, having five robots controlled on one keyboard, is infeasible. With this new feature, a computer like a large gaming laptop to a PC with sufficient ports could allow for six controllers.

Solution

Reworked Input and InputSystem's gamepad support to have an array of gamepads that accepts playerSlotss. Additionally updated all used gamepad methods to accept a playerSlot. Updated defaultInputs to also have a playerSlot parameter, and implemented custom scheme logic. In the EditInputInterface, add a simple dropdown for a user to customize gamepad slot, as well as syncing logic. Touched InputSystemTest as it was throwing an error.

Verification

Note

I have one gamepad to lend to testers, and can find one more, so you don't necessarily need a gamepad of your own to test.

  • Multiple gamepads can be used to control different robots
  • Schemes can be customized and created
  • No unintended functionality is introduced
  • Existing gamepad functionality is not harmed

Before merging, ensure the following criteria are met:

  • All acceptance criteria outlined in the ticket are met.
  • Necessary test cases have been added and updated.
  • A feature toggle or safe disable path has been added (if applicable).
  • User-facing polish:
    • Ask: "Is this ready-looking?"
  • Cross-linking between Jira and GitHub:
    • PR links to the relevant Jira issue.
    • Jira ticket has a comment referencing this PR.

@RoushilS RoushilS self-assigned this Jul 22, 2026
@RoushilS
RoushilS marked this pull request as ready for review July 22, 2026 21:00
@RoushilS
RoushilS requested review from a team as code owners July 22, 2026 21:00
@RoushilS RoushilS changed the title Multiple Controller Support Multiple Controller Support [SYNTH-151] Jul 22, 2026
@PepperLola PepperLola added ui/ux Relating to user interface, or in general, user experience gameplay Relating to the playability of Synthesis labels Jul 24, 2026

@AlexD717 AlexD717 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While the core functionality is now implemented, I feel like the UI can still be significantly improved.

Having the toggle in the Configure -> Inputs panel is good, but there should also be one in the Spawn Asset panel, alongside the input selection.

Additionally, instead of a simple dropdown, we should use a separate panel or modal to select and easily identify controllers. For example, it could highlight the controller when an input is received. With the current dropdown, I can't tell Controller 1 from Controller 2 without testing them, a problem that gets much worse if you scale up to 6 controllers.

Finally, with the current input selection, if I spawn a robot and assign it the "Jax" input layout (or any other controller layout), it flags an interference, assuming someone else is already using it. As a result, I can't assign that same "Jax" layout to a second controller.

@RoushilS
RoushilS requested a review from AlexD717 July 28, 2026 23:42

@AlexD717 AlexD717 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks a lot better, but there a few more minor requests I have.

If I am trying to spawn a robot that already has a controller assigned, the other controller inputs that have interferences should be shown in a darker green

Image

Comment thread fission/src/ui/panels/configuring/initial-config/InputSchemeSelection.tsx Outdated
@RoushilS
RoushilS requested a review from AlexD717 August 4, 2026 20:19
@rutmanz
rutmanz removed their request for review August 5, 2026 18:40
@rutmanz

rutmanz commented Aug 5, 2026

Copy link
Copy Markdown
Member

(I don't have any controllers to test with)

@rutmanz rutmanz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image Two robots with same scheme on different controllers should probably have different names

If you can call them something other than controller 1 and controller 2 (like maybe more specifically with the name descriptor of possible)

—-

It looks like it only detects controllers after they give an input, is there a way to query them without this? (other joystick tester sites do this)

@RoushilS
RoushilS requested a review from rutmanz August 5, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gameplay Relating to the playability of Synthesis ui/ux Relating to user interface, or in general, user experience

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants