chocolate-doom / chocolate-doom

Chocolate Doom is a Doom source port that is minimalist and historically accurate.
https://www.chocolate-doom.org/
GNU General Public License v2.0
1.94k stars 572 forks source link

Problems w/ 360 Controller While Exiting Dialogue in Strife #768

Open ghost opened 8 years ago

ghost commented 8 years ago

Howdy y'all, this is my first time ever posting anything like this, but I'll try my best to communicate clearly and usefully. I exchanged some tweets yesterday with the official Chocolate Doom twitter account, but it was difficult to communicate in 140 characters, and it turns out I actually seemed mistaken about the nature of the problem.

I'm using Fedora 24 as my operating system.

I'm experiencing odd behavior in Chocolate Strife. Pushing the 'A' button to exit dialogue causes the dialogue to immediately be re-initiated, which can lead to infinite loops of being "stuck" in dialogue. After tinkering with my settings, I theorized that pushing the 'A' button is causing some sort of "hard-coded" behavior independent of the input configuration the user specifies in the chocolate-strife-setup utility. Using the external program antimicro to map button presses to keystrokes, I am able to map the 'B' button to the action "Activate menu item", and can work around the issue by using this button in dialogue. However, this solution seems somewhat inelegant.

This problem only seems to affect exiting dialogue in Strife. I can't confirm, but I seem to remember bugs when I first set up Doom -- pressing 'A' would seemingly send two signals to the "Activate menu item" function; for example, "Start Game" would be selected and then Episode 2 would immediately be selected, making it impossible to play a different episode -- however I was able to work around this completely through clever use of antimicro. I can't remember everything I did, but I am attaching all my config files for Doom and Strife as well as my config file for antimicro (which I will walk through here) in case others want to examine my setup.

My antimicro setup is as follows:

Using a PS3 controller mimicking a 360 controller through xboxdrv --

'A' button - 'A' key (mapped to "Use" in chocolate-strife-setup) 'B' button - 'N' key (mapped to "Activate menu item" -- this is the workaround. Previously, I remember "Use" seeming to work in all places "Activate menu item" was needed) 'X' button - 'X' key (mapped to "Show mission") 'Y' button - 'Y' key (used to exit the game) 'Select / Back' - Tab (used to view the map)

It occured to me as I've written this that my configuration has problems besides the one I'm describing in this post -- I only hastily implemented my "workaround" yesterday. In Doom (which, of course, has a seperate config file) I am able to press 'B' to navigate to the previous menu, but I have broken that functionality in Strife by mapping the button to "Activate menu item". I could probably try using 'Y' for "Activate menu item" instead since the only thing I seem to otherwise be using it for is exiting the game.

On a broader note, I'd like to see more functionality in Chocolate Doom's built-in gamepad configuration tool -- ideally, I'd like to not need to use antimicro at all. In particular, accessing the map is a function I can think of that I often use and isn't currently configurable to a gamepad button without an external program.

Doom is a lot of fun to play with a controller, so I'd love to see them supported more robustly.

Anyway, I think I've covered everything in this post -- it took me kind of a long time to write! Please let me know if anything needs clarification.

-Mike DeRoitr

chocolate-mike-8.6.2016.zip

jmtd commented 8 years ago

Thanks for the great bug report. Fraggle has a wish list bug open to have more game pad auto configuration so hopefully we will do that soon. I'd thought of adding automap button configuration myself, your report is further data to say that's a good idea!

fragglet commented 8 years ago

Hi Mike - thanks for filing the bug with more info. Is it possible the issue with the menus is because there are shortcut accelerator keys on the menus? For example, if you press "Q" while on the main menu it will jump to the "Quit Game" option. If you're using the alphabetic keys for your gamepad button bindings then maybe that's conflicting.

It seems like the real solution here would be to add more action bindings so you don't need to use antimicro. The non-Doom games (Heretic, Hexen, Strife) in particular are missing some keybindings. With that in mind, considering your configuration:

ghost commented 8 years ago

I'll try to do some more in-depth experimenting in the coming days -- I'll try playing the game without antimicro, for instance. I seem to remember having issues without it, but I might be mistaken, and with my configuration as I posted it, Doom runs perfectly. The problem is Strife -- exiting dialogue with NPCs is impossible by pressing 'A' (by which I mean the gamepad button, which also maps to the key 'A', which is bound to "Use") -- I have to push the 'B' gamepad button under the configuration I posted, though I realized afterwards that the 'Y' button would be a preferable binding. And yes, I use 'Y' to answer the questions the menu asks me.

ghost commented 8 years ago

Hey guys, it's a month later & I just wanted to let y'all know that I haven't forgotten about this thread. School started & my life has been totally crazy, & I used to be an artist before doing the tech thing so I'm not used to thinking this hard.

What I planned on doing before I got distracted was offering further input by testing the game(s) WITHOUT my antimicro workaround -- just Chocolate DOOM / Strife & my naked controller the way God intended. I will re-read this thread when I have a good chunk of spare time, do some testing, & update you on what I've figured out.

ghost commented 7 years ago

Ah-HA! Months later, I return!

I tested Doom & Strife without antimicro, and have determined that this is a real weird problem I'm experiencing that likely is actually an issue with antimicro and not Chocolate Doom (maybe? The more I think about it the more confused I get). With my current setup, I do not have the 'A' button mapped to anything in either antimicro or Chocolate Doom, but it still mysteriously works to activate menu items. Without antimicro and without mapping the 'A' button to anything in chocolate-doom-setup/chocolate-strife-setup, the button does nothing.

What's really mysterious is that it ONLY works to activate menu items. It doesn't also work as a "use" or "fire" button (I have "use" mapped to 'X'). So maybe there is something really arcane happening here related to the Chocolate Doom code? My not-very-knowledgeable theory is that antimicro is sending out some kind of signal when the 'A' button is pressed, even though it's not mapped to anything, and Chocolate Doom is picking up that signal and interpreting it as an "activate menu item" command. I don't know. It's super weird!

I can post my config files (for both Chocolate Doom and antimicro) if you need them -- I changed my setup since I originally posted -- but since this may not entirely have anything to do with Chocolate Doom, I have not. If anyone has any theories what's causing this bizarre interaction, I'd love to hear!

ghost commented 7 years ago

Forgot to mention that a possible solution that CAN be achieved by Chocolate Doom is adding enough keybindings that I don't need to use antimicro anymore. If you need me to, I can figure out exactly how many / which actions I've configured through antimicro to produce a list of keybindings I consider necessary.

ghost commented 7 years ago

Me again -- I just bought Heretic & Hexen -- they DON'T have the weird issue of the 'A' button activating menu items when using antimicro! Something very spooky seems to be going on here. My current setup is Ubuntu 16.10, using all chocolate-X packages from the official repositories.