Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

Controlify 2.0.0-beta.1+1.20.4

Changelog

Known bugs

  • DualSense HD haptics are reported as working for macOS and Linux, but does not do anything.

Overview

Rewritten controller backend

Every feature of a controller has now been turned into a modular component, each being optional and provided by the underlying driver. For example, the SDL gamepad driver will add a rumble component, which contains all the logic for rumble, but GLFW won't.

As well as all that, the way inputs (buttons, axes, hats) are programmed has been completely rewritten to allow for an extremely modular system, each input has its own identifier, like controlify:button/south. This means custom mappings are not restricted to using only the hardcoded gamepad inputs. Generic joystick inputs slot into this system nicely using identifiers like controlify:axis/0/negative. Then, you can layer input mappings on top of the driver provided inputs like controlify:axis/0/negative -> controlify:axis/left_stick_up. Or, make your own inputs like mypack:button/paddle_left powered by only resource packs! This mapping process has been greatly simplified with an in-game mapping wizard that can walk you through creating a mapping (currently only to map to gamepads).

Controller Mapping Wizard

If your controller is not detected as a gamepad, and instead a regular joystick (either by a driver issue, or you really are using something like a flight-stick), you will be given the opportunity to easily map your controller to a regular gamepad layout to allow for the default binds to work and to get button textures. In the future, I hope to create a platform to automatically share your controller mappings to be used by other people. You can even create your own resource pack that includes these mappings, and even custom button textures. If you'd like help on how to do this, join my discord server

SDL3

With 2.0, Controlify now utilises SDL3, the new in-development version of SDL that powers the advanced controller features. Hopefully, this should mean compatibility for more controllers. However, I regret to say that Steam Deck users will have to continue waiting for native support for back buttons and gyro. After heavy research and collaboration with the SDL team, we've concluded that due to the nature of Steam Input, it's impossible to bypass it unless on a driver level, which is happening. A kernel driver for Steam Deck is in the works.

DualSense HD Haptics

Controlify now has basic support for DualSense controller HD haptics. You will feel subtle vibrations when interacting with menus throughout the game. There is currently no support for adaptive triggers but this is trivial to add in the future. No haptic effects yet exist for gameplay, this involves sound design which I am not very good at. You can disable HD haptics in the vibration group in the settings menu.

Changelog

  • Add checksums to controller natives to prevent crashing when the SDL download was aborted, then tried to load next launch
  • Fix virtual mouse being jittery
  • New rumble effect for landing in water
  • Reduce the amount of rumble sources into simpler categories
  • Reimplemented controller type default mapping with the new system
  • Add a bluetooth warning screen that appears on first launch to suggest using USB for features such as HD haptics. This only appears on controllers where a feature is limited by bluetooth. For now, just DualSense.
  • Add HD haptic support for navigating through gui elements
  • Refactor of look input code
  • Add deadzone visualizer into the deadzone settings
  • Rewrite controller code completely
  • Increase unknown controller submission name to 64 chars
  • Adjust way controller UIDs are created to prevent same controllers being identified differently between launches
  • Add an option to adjust the radial menu timeout (#254)
  • Fix range of chat keyboard height being 800%
  • More resilient bind rendering to prevent seeing missing textures

Files

Controlify-2.0.0-beta.1+1.20.4.jar(1.99 MiB) Primary Download

External resources



Project members

isxander

Owner


Technical information

License
LGPL-3.0-or-later
Client side
required
Server side
unsupported
Project ID