Skip to content

Beta 6

Choose a tag to compare

@petergeneric petergeneric released this 11 Apr 13:14
· 50 commits to master since this release

This mod aims to provide native-feeling controller support for Thief 1, Thief 2, and all FMs.

Since I played Thief as a kid, my ability to use a keyboard+mouse for games has degraded to the point where I need to use a controller, and I wanted to replay the game (and The Black Parade) but the experience with using controller configs with external tools felt too complex for my simple brain: I wanted a simple "plug and play" option. This mod adds d-pad navigation to all menus right from game launch (except for the FMSel UI, obviously!)

Installing

Install the gamepad.zip mod with DMM, the Dark Engine Mod Manager.

Once installed, go to MODS/gamepad, and copy dinput.dll into your game folder.

By default, on launch the mod will enable joystick and set joybutton bindings in your user.bnd. If it makes a change it will make a backup of your old settings in user.bnd.bak.

Please make sure you're running the latest NewDark version, 1.28 v20250515.

Features

  • Analog movement with the left stick (with a custom curve that tries to make it easier to sneak very slowly)
  • Radial menu inventory selection by holding RB. Weapon wheel has a fixed layout (until you have more than 9 weapons). Items appear in the order they are in the inventory. My goal in the future is to improve the UI to allow adding favourites for quick-select.
  • World slows down while menu is up (on supported NewDark engine versions)
  • D-Pad navigation in all menus that describe their clickable areas. Remembers your button selection as you go back through the menus
  • A/B and both sticks work in all menus for mouse emulation
  • Customisation of button bindings (via gamepad.ini, not in-game: too many contextual actions for that)
  • Optional automatic unlocking of doors if you have the key (N.B. if you have J4FKeyring mod installed, this feature of my mod is disabled). Enable in MODS/gamepad/gamepad.ini

The beautiful pixel art icons for the core items in the radial menu was created by Plutonia, with some fallback on in-game assets for icons missing pixel art. Artwork is a work in progress. I am aiming to automatically render out inventory item images for all models, so that FM items will just work automatically (but this is very complicated)

There's a lot more that could be done better and more reliably with some support from NewDark if they are listening (especially around menu navigation and slowdown - I've had to do some reverse engineering and scanning/writing to engine memory directly, which is somewhat fragile!)

Wine

If you're playing Thief using Wine/Crossover Office, you'll likely need to mark dinput.dll as native, since I use this DLL to adapt DirectInput to modern XInput APIs, as well as to supply other core engine hook features.

Changelog

beta 6

  • Change hook from EndScene to Present so we only re-render once per frame
  • Fade in text/icons/glow along with smoke radial

beta 5

  • Redesigned radial menus using amazing animated smoke effect created by Gamophyte

beta 4

  • Change long-press Select (Back) to drop item

beta 3

  • Basic rumble support based on damage and physics collision reports
  • Adds GamepadConfig.exe to modify the mod's configuration
  • Adds a modinfo.ini, standing as a proposal for a public mod metadata schema
  • Adds alpha-quality experimental animated radial overlay (disabled by default)

beta 2

  • Fixed droppability logic (items now droppable if Junk or if missing NoDrop=1 property)
  • Tweaked art replacement rules:
    • Added [Gamepad] pixelart=false option in gamepad.ini to force use of game models instead of built-in pixel art
    • Tweaked rules for pixel art overrides to be more conservative
    • Do not replace Loot icons; only override Display Name for Loot if the engine name starts with @LOOT (since we already display loot amounts separately in radial)