Handling all inputs through a central manager script, good or bad idea?

So I had an idea, possibly inspired by another game, of making a centralized “input manager” script, this would look for inputs and send out signals accordingly to the things those inputs would affect.

In theory this would allow for a much more modular and flexible way of handling player input that would make it much easier to work with other platforms in the future, and allow for input remapping much more easily.

For example, if I wanted sprinting as an activated feature, I could run through the manager to check for a certain key, controller button, or mobile UI button, unified under a “sprint activation signal”, and then run it to the sprint script itself.

Why not? If you prefer it that way and don’t mind having a centralized script, I’d say there is nothing wrong with it.

Personally with things like input, ContextActionService is already pretty powerful, as it allows you to sink or pass inputs with priority anyways, meaning all your other code variables and conditions can be on an isolated script if you really wanted to.

Was mainly wanting to make sure there wasn’t some surprise downside to this, I always run into weird quirks with how Roblox works.

Also neat, I didn’t realize this was a thing.

I have a script called Input.

It captures most of the Client input including their Mouse info.

I did it because I felt like it would be easier to keep track of all the quick keys and buttons.

I have a separate script for GUI input because it is a mess to try and blend them together.

Yeah that’s pretty much what Im doing, and centralized server->client and client->server communication as well.