Pyxus / fray

Fray – Godot Combat Framework
https://fray.pyxus.dev
MIT License
252 stars 11 forks source link

Better support (or documentation?) for local multiplayer controllers #90

Open endorphins opened 3 months ago

endorphins commented 3 months ago

I'd like to request better support for local multiplayer. As far as I can tell, it's not possible for me to define fray inputs for a particular device. I see that the FrayController class exists which seems useful for this, but my issue is that any action registered with the FrayInputMap will output for all connected devices, despite being pressed by only a single device.

I've tried specifying separate actions for each player (e.g., "punch_p1" and "punch_p2") to different buttons and different devices, and then binding those actions with the FrayInputMap. However, this still causes the the fray input event to be emitted for both devices.

I think ideally I would be able to define the action once (e.g., "punch"), and then it would only be emitted for the device that pressed the mapped button.

There doesn't seem to be any connection between the device used in the FrayController and the inputs being emitted from FrayInput.input_detected. It's unclear to me if something is wrong with my setup, or the framework doesn't support this use case. Any help would be appreciated.

endorphins commented 2 months ago

IIUC, this is likely because Godot's actions don't actually let you query which device is triggering the action, so you can't check it as part of the FrayInputBindAction (here)?

Perhaps my solution is to not register actions, but keep track of button presses per device manually?