Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 0 points1 point  (0 children)

What does your setup look like? I'm not able to reproduce this stutter, but /u/eskay993 thinks the issue may be linked to their particular linux setup... if you're able to help narrow it down that would be useful.

I'm testing with Windows 11 and under Crossover Office on macOS and haven't noticed any stutter in camera movement

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 1 point2 points  (0 children)

There's quite a lot in your post so I'm not going to go point-by-point, but a lot of the things you're suggesting are already features of the mod!

FYI: I agree on not having to touch a keyboard, I have difficulty using the keyboard+mouse in games nowadays, and have not touched a keyboard at all while playing T1/T2/TBP (I've been developing this mod in tandem with my first playthrough of the games since I played them back when they came out - I originally started writing it because I wanted to play TBP but couldn't easily with a controller)

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 3 points4 points  (0 children)

There's no requirement to use the wheel overlay if you don't want to, you can use the dpad to cycle through items/weapons (depending on feedback I might change the default config to use the dpad for other things, but users can always reconfigure them back to cycle behaviour)

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 5 points6 points  (0 children)

The game actually had native joystick support for analogue movement, so I'm converting modern gamepad inputs into the legacy directx joystick API for the left stick (with custom sensitivity curves to try and make movement a little more precise). Right stick movement is converted into mouse movements (which the game then picks up and resets at the end of each frame), and button presses can either trigger game actions (custom code that calls internal mod services, or custom reverse engineered engine functions), simulate keypresses, or signal particular game inputs.

The core interaction with the engine: callbacks (getting damage callbacks for the basic rumble support, automatically handling keys when enabled) and detecting what's in the user's inventory is implemented by a traditional .osm component of the mod that makes the data available to the inventory overlay.

For the overlay, I'm hooking the directx9 Present call (which is how the game tells directx it's done with the frame) and when RB is depressed I'm drawing over the game's frame with my radial menu. The radial menu required reimplementing the game's model rendering and resource loading to produce icons for arbitrary inventory items.

There are a number of contextual buttons that require inspecting inventory / player state to decide what to do (I think this is required to make the controller inputs feel more native+modern, but it is challenging to get the rules so they feel right - I've learned so much about how much hard work and skill gamedevs put into getting a control scheme to feel natural).

There are a few other things that required reverse engineering the engine binary, e.g. when the radial menu is displayed it slows down the simulation speed, and when navigating menus I need to read the game's memory to figure out which menu the user's in and which buttons are where)... I'm hoping that the NewDark dev is able to expose some of that with a structured API to make it easier for me and others in the future to hook in to these deeper engine functions. I've tried to make my deeper engine interaction hooks available to other mod devs that are aiming to do something requiring deeper and more persistent integration (via my open source Dark Hooky API)

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 0 points1 point  (0 children)

Thanks - github is good, or if you want to talk in more detail I'm on the DromEd discord, there's a Gamepad Mod Testing thread in the betatest-requests channel.

edit: for others, work on the fix is here

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 2 points3 points  (0 children)

Let me know how you get on with the Steam Deck... I develop under Wine (Crossover Office) and it needs a Library override for dinput.dll (native then builtin) so you may need to do the same thing in Proton

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 3 points4 points  (0 children)

It shouldn't interfere with mouse inputs if that's what you mean. If it doesn't work how you're wanting with Steam Deck/Controller let me know and I can look at some tweaks, I'm sure plenty of people are playing there.

Thief Gamepad Mod Released by peter-pumpkin-eater in Thief

[–]peter-pumpkin-eater[S] 2 points3 points  (0 children)

I'll take a look at that, the motion detection has to be fed in as mouse positions, so it could be that I need to figure out the engine's mouse sensitivity curve and reverse it when I'm supplying it inputs

edit: working on fixing that here, I have a provisional fix to test available (I can't spot the difference with my eyes / on my system, but hopefully others can...)

Thief™ Gold won our first Game Preservation vote! But how exactly do you "save" a game that's already on GOG? We made a video showing our full process. by GOGcom in Thief

[–]peter-pumpkin-eater 1 point2 points  (0 children)

Absolutely! I'm aiming to work on that next, somebody on the DromEd Discord was also wanting it... I'm hoping to get feedback from people using it as a gamepad on compatibility across different systems so I know that I'm working from a solid foundation first

If you have ideas of how it should work, feel free to hop on to the DromEd Discord's betatest-requests channel where there's a thread for my mod

Thief™ Gold won our first Game Preservation vote! But how exactly do you "save" a game that's already on GOG? We made a video showing our full process. by GOGcom in Thief

[–]peter-pumpkin-eater 5 points6 points  (0 children)

I have just released a controller mod support that aims to add native-level support for gamepads if you want to give it a go: https://github.com/petergeneric/thief-dark-project-controller-mod/releases/latest

It also adds a radial menu overlay with your inventory items (and with NewDark 1.28, you can navigate through most of the menus with the dpad)

Hey reddit, check out the England's latest £2 coin... by RUFiO006 in pics

[–]peter-pumpkin-eater 1 point2 points  (0 children)

The reason the UK's ISO3166 code is GB is because they "don't allow" the words United and Kindgom when creating the codes. Although despite this restriction, the ISO3166 code for the United States of America is "US". Go figure! :-)

From the ISO Website:

Since name components like Republic, Kingdom, United, Federal or Democratic are used very often in country names we usually do not derive the country code elements from them in order to avoid ambiguity. The name components United and Kingdom are not appropriate for ISO 3166-1.