Search Unity

Question When Input Manager (old) will be deprecated?

Discussion in 'Input System' started by makaka-org, Dec 1, 2023.

  1. makaka-org

    makaka-org

    Joined:
    Dec 1, 2013
    Posts:
    1,024
    Does Unity have plans to completely abandon the old Input Manager?
    Maybe in the Unity 6 we will only have a New Input System?

    P.S. Input Manager is pretty enough for my needs for now and for my current projects (although sometimes I use both the systems in the same project), so I need to understand: when this "transition period" ends to prepare in time.
     
  2. rdjadu

    rdjadu

    Joined:
    May 9, 2022
    Posts:
    116
    I'm pretty sure the practical answer has to be... never.

    Input's in a worse bind than Mecanim vs legacy animation.

    The UnityEngine.Input API pretty much can't go away. Everything out there would break if it does. IMO there's basically only three ways a transition could be achieved:
    1. Old input system use is reduced over time to close to nothing. This won't happen as long as the old system is doing the trick for the majority of projects and while it is the default -- and it (probably) can't not be the default while everyone is still using it.
    2. The old API is implemented on top of the new system and the old system is cut. There were efforts to do this but they've sadly been abandoned.
    3. An automatic migration is achieved. For some APIs this could be fairly straightforward and handled by Unity's API updater. But there's a significant chunk of APIs that are non-trivial to migrate. This could be alleviated to some extent with a dedicated layer that eases the transition and then maybe an automatic migration could happen.
    IMO, out of the three, #3 is the most viable path at this point, though #2 probably would have been the most desirable one. But #3 is still hard.

    UnityEngine.Input is pretty much like one of those really old Windows APIs that no one at Microsoft ever wants to see again but that also no one can touch because there'd be a storm out there (heya XInput, how you doing these days? And how's your old pal DirectInput?).

    The input system should have never grown as a completely new thing but rather should have evolved out of UnityEngine.Input. It would have been equally capable but would have more smoothly brought users along while also giving more opportunity for deprecation along the way. Hard earned lessons.
     
  3. spiney199

    spiney199

    Joined:
    Feb 11, 2021
    Posts:
    7,899
    The only way the new input system would replace the old one is if it became integrated into the core engine, rather than as a package.

    I could only see that happening if we saw a Unity engine version that didn't care about backwards compatibility. However a lot of systems across Unity still use the old system (Unity.UI for example) so they would all need to be updated to make use of the updated system.

    I disagree with this. If you've ever had a large system in place that no longer was fit for purpose, it's an absolute nightmare to rewrite the existing system. I've always found it to be drastically better to write a new replacement system from scratch and move all the API usages over from old to new. Saying this from experience.

    Though I feel like the new Input System should've been made a core Unity module so the old system could be slowly deprecated.