Best Practices
Controller Mapping:
- Always make a mapping for the Gamepad Template. The vast majority of players using controllers will be using a gamepad. To save time, map for the Gamepad Template and all gamepads recognized by Rewired will just work.
- Always make a mapping for the Unknown Controller. If a player uses a controller that isn't recognized, they can at least have some kind of input without manual mapping. Please see this for more information and recommended mapping guidelines.
- Always provide some means for your users to remap their controls. Many controllers cannot ever be recognized by Rewired due to bad practices by manufacturers. To support these controllers properly and give your users the best experience, you must provide them a way to remap their controls. You can either include Control Mapper directly in your game or create your own control remapping system.
Controller Assignment:
- Always provide some means for your users to change controller assignments. It is especially important if you are making a multi-player game. You cannot know what devices, physical or virtual, will be present on a user's system, appear as Joysticks to Rewired, and be assigned to a Player. Device emulation software (VJoy, DS4Win, SCPToolkit, etc.) and certain device drivers can and frequently do cause problems by creating extra, non-functional virtual devices. Allowing the user to make their own controller assignments solves this issue as well as making it possible for users to swap controllers, etc. You can either include Control Mapper directly in your game or create your own system.
- If your game is 1-Player: Set Max Joysticks Per Player to 100 so all controllers attached to the system may be used by the player.
Windows Standalone Platform:
- Always enable Use XInput (enabled by default). XInput provides automatic controller comaptibility with all XInput-compatible controllers such as Xbox controllers and clones. It also provides support for vibration and independent triggers on these controllers. There are many problems your players will encounter if you disable XInput. Most problematic is Steam which relies on creating emulated XInput devices for the Steam Controller, Steam Streaming, Steam Link, and controller remapping through Steam Big Picture mode. With XInput disabled, the Steam Controller, Steam Streaming, and Steam Link cannot be supported.
Steam:
- Always initialize Rewired before intializing Steam to avoid potential exceptions being thrown (at least on Windows.) See this for more information on this issue.
- For the best controller support, it is recommended that you disable Steam's PS4, Xbox, and Generic Gamepad Configuration Support in the Steam developer back-end as well as informing your users to disable these settings in their Steam Big Picture controller configuration settings. See this for more information on this issue. Note that doing this has some tradeoffs which are addressed in the previous link.
- Windows requires that you enable XInput or use Direct Input as the primary input source in order to support the Steam Controller, Steam Streaming, and Steam Link. The recommended primary input source setting is Raw Input + Use XInput.
- OSX should be set to Native for the primary input source. Steam Controller, Steam Streaming, and Steam Link work using the Native input source. (See this for known issues on OSX with Steam emulated controllers.)
- Linux should be set to Native for the primary input source. Steam Controller, Steam Streaming, and Steam Link work using the Native input source. (See this for known issues on Linux with Steam emulated controllers.)
See these Troubleshooting topics for more information on Steam issues.
