Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(4 edits) (+1)

Here are two that lack a Button 9 that I have at hand:

Those are officially-licensed, but I also have a couple of Chinese clones which skip Button 9, which I assume is what your code is looking for. There are also SNES-inspired controllers that might not map select to Button 9. Yes, Backspace with a controller just switches to keyboard mode, it doesn't clear the button binding.

By suggesting that you might use another button, you're still making some assumptions about what the button layout and mapping of the user's controller will be, and arbitrarily choosing a button that will be gated off. It would be better to have a universal key (such as Backspace) that will clear a button binding or a keyboard binding, and that all PCs are guaranteed to have.

The other option would be to overwrite an existing bind, possibly with the red text prompting for a second confirmation press, instead of simply refusing to remap.

For the record, local co-op and such is still a completely legitimate reason to have multiple controllers connected to a PC. Also, some disability controller setups might still use multiple controllers, although I don't expect indie games to support those out of the gate.

EDIT: Wrong pic for the Gen/MD controller, fixed. Also, I realize that historically, indie games' solution to controllers has been "just use Joy2Key", so I appreciate that you are actually supporting controllers. My suggestions are only intended as constructive criticism.

EDIT 2: Tried a couple of generic PSX controllers of different make/model, which have "Select" mapped to Button 9, and it still doesn't clear the binding. I've tried all of the buttons (including thumbsticks) on both, and none of them do. I'm not sure which button you're looking for in the code to clear the binding, but it doesn't appear to be working.

Huh, well, I never had anything Sega related so that explains that.


I'm not really looking for "button 9", I'm looking for a constant set by the engine I'm using. (which might be button 9 I have no idea)

And regarding backspace not clearing the controller keybind, I've now tested it and it actually does as long as you're in controller mode when pressing backspace, if you press a keyboard button other than backspace before pressing backspace, then it will clear the keyboard key instead.

So you have to press a controller button to enter controller mode and then press only backspace to clear a controller binding.

There is however some issue where "select" is not working as intended, it just gets detected as a menu button press instead of clearing a binding.

But both of these problems will be largely irrelevant after my intended fix listed below.


As for using another button to clear bindings, I'm just going to have backspace clear both the keyboard and the controller binding, that should solve the problem.


I'll be looking into changing how keybind conflicts work, it's probably either going to be the way you described or the way I mentioned in my previous comment.


Yeah you're right there, I didn't really think of local coop at all, probably because I don't really like multiplayer that much so I usually stay way from it.

And the disability point is also correct and for that reason I'll be looking into a setting like this: "Accept input from all connected controllers", therefore allowing input from all controllers without selecting one from a list.

This probably won't magically make all those non-standard controllers work though.

I'll also be looking into adding that list to be able to select controller if the above setting is turned off, which it would be by default.


And using "Joy2Key" is an option I guess but I'd rather just have it work in game.

And finally, for your second edit, refer to the "button 9" part of this post, there is an issue with select apparently.


Anyway, I appreciate the feedback, I'll be trying to add these new features and fix the issues.

I don't mean to be a pain, but I'm trying to use Backspace to clear a bind, and it doesn't seem to be working, even for keyboard bindings. Pressing Backspace just brings up the red-bordered keybinding screen, and the buttons/keys are still shown as being in use, with red error text.

To be clear, my expectation (based on other programs with remappable controls) is that pressing a "clear bind" key should stay on the same screen, and the bound entry would become blank, after which the user could select it to bind it.

Also, the demo shows a notification whenever it loses focus that the controller has been disconnected. Probably not critical, but odd.

I guess I'll just wait for the new version.

Okay I think I see what might have happened, is Backspace bound to any action?

This is the only case I've gotten it to behave as you explained, apparently I forgot to disable that as a key you can bind.. so this will be fixed as well.

To fix this you'd have to bind whatever action Backspace is bound to another key and then Backspace should behave as intended again.

And your expectation is correct, it's supposed to stay on the same screen and just set the action to "unbound".

That controller disconnection notification is normal, I'd have to rework aspects of my controller detection system to *maybe* get rid of that so that probably won't be fixed any time soon.

And yeah, you should probably wait for the next version, I'm on a bit of a break right now so I'll be getting back to work on this next monday.

(1 edit)

Yes, it was bound to "Jump". I don't recall setting that, because Backspace has been doing the same thing since I first launched the program.

Having un-bound it, it appears to be clearing binds both for keyboard and controller mappings. Perhaps it would be a good idea to prevent Backspace from ever being bound to an action, as you said.

EDIT: Also, having un-bound Backspace, now it appears that the demo is recognizing the X button on my knock-off Saturn controller as "Select". I can guarantee that this was not the case when I first launched the program.

(1 edit)

(this will be a somewhat lengthy reply)

Well, good to know that was the issue at least.

As for the second issue, it shouldn't be detected as a different button so not sure what happened there but here's some more in-depth info regarding button names:

There's only two ways for me to detect buttons being pressed, either I use the built in constant which is the only reason I can display a button name at all.

Or I loop through all buttons and then display a number, which is all a button really is.

So this naming issue is not really something I can do much about, I have no real way of knowing what button was pressed and this becomes even worse when different controllers have different button IDs, which is why "Select" might be "X" on another controller.

So all I can do is either display whatever button name was detected by the built in constant or I display what button ID was detected which is just a number, so I went with the constants because then I can at least display a name.


So, back to the original issue with the name being different on two occasions, this should not happen and I have no idea how this could happen at all since a button can only have one ID, unless that controller changes this ID somehow.

There's two things you can do to test this out:

1 - Use the in game "Reset Controls" option to reset all controls to default.

2 - Go to "C:\Users\YOUR_USERNAME\AppData\Local\Zordak" and delete "settings.ini" with the game turned off, this will reset all game settings to default.

Then after doing any of those you can check if the name ever changes when binding the same button.

This is pretty much all information I can give on this subject as of now.