Shattered Pixel Dungeon

Shattered Pixel Dungeon

View Stats:
FlyinJ Dec 18, 2024 @ 1:51pm
Controller support is pretty bad
Using an analog stick for step by step movement that includes diagonals never works right as it constantly registers the wrong direction (press diagonal up right and more than half the time it goes up or right instead). And here it is even worse as the game constantly registers double presses. Look to Caves of Qud on how to design this correctly (pressing the analog stick in a direction shows an arrow, pressing trigger moves)

Everything else is just dragging a cursor around straight up emulating a mouse.

The entire implementation could have just been done through Steam input, there was very little effort done to make this controller friendly
Last edited by FlyinJ; Dec 18, 2024 @ 3:10pm
< >
Showing 1-4 of 4 comments
00-Evan  [developer] Dec 20, 2024 @ 9:19am 
Yeah I do agree that controller support needs to be improved, but it's difficult to prioritize that vs. adding content to the game. The game is fully playable with controller though, and I have added features like radial menus for inventory and quickslots to try and make most common actions faster. Fundamentally though the game was initially designed for a pointing device (finger on a touchscreen), and more work is needed to make controller users feel like first class players I'll admit. Mouse and keyboard don't have this issue as the mouse is a pointing device itself.

Regarding moving in particular, this may be due to whatever specific controller you're using, I tried to make each direction easy to trigger while developing and testing this, and diagonals are actually a bit more sensitive that cardinal directions specifically because of this. I don't think that making the player confirm on each movement action is a great solution here either, as that would get tedious very quickly.

As for Steam input, I'm not entirely sure what you mean. Steam input is primarily a translation layer and a set of UI hotkeys, like radial menus. I can't use steam input and expect the actual game's controller logic to work any better than it does currently. Tieing the game's controller functionality to Steam input would also mean making it unusable on controller for players who aren't on Steam, and I'd prefer to not do that.
FlyinJ Dec 20, 2024 @ 9:58am 
Originally posted by 00-Evan:
Yeah I do agree that controller support needs to be improved, but it's difficult to prioritize that vs. adding content to the game. The game is fully playable with controller though, and I have added features like radial menus for inventory and quickslots to try and make most common actions faster. Fundamentally though the game was initially designed for a pointing device (finger on a touchscreen), and more work is needed to make controller users feel like first class players I'll admit. Mouse and keyboard don't have this issue as the mouse is a pointing device itself.

Regarding moving in particular, this may be due to whatever specific controller you're using, I tried to make each direction easy to trigger while developing and testing this, and diagonals are actually a bit more sensitive that cardinal directions specifically because of this. I don't think that making the player confirm on each movement action is a great solution here either, as that would get tedious very quickly.

As for Steam input, I'm not entirely sure what you mean. Steam input is primarily a translation layer and a set of UI hotkeys, like radial menus. I can't use steam input and expect the actual game's controller logic to work any better than it does currently. Tieing the game's controller functionality to Steam input would also mean making it unusable on controller for players who aren't on Steam, and I'd prefer to not do that.

I'm using a standard Xbox Series controller. I also tried using my 8 Bit Do Pro as well.

On both controllers I was getting a lot of false reads on diagonals. I was also getting a lot of double presses on a single stick movement which was also very problematic (player moves two spaces when giving a single quick push on the stick)

In Caves of Qud having movement confirmation on trigger actually works very well as you only have to slightly pull the trigger for each confirmation. I strongly suggest you give that game a play as it has absolutely fantastic controller implementation for a classic rogue-like.

As for the Steam Input comment, I meant that almost all of the code you have done for controller implementation could be done by anyone using Steam Input. Movement on the stick feels like just putting 8 digital movement inputs on the analog stick (granted you did try to customize the deadzone somewhat), the radials could all be set up and the the mouse cursor could be attached to a stick.
my butt is erect Dec 20, 2024 @ 1:49pm 
Frankly this game really isn't meant for controllers. Any solution is probably cumbersome compared to having a mouse.
00-Evan  [developer] Dec 22, 2024 @ 9:19am 
Originally posted by FlyinJ:
I'm using a standard Xbox Series controller. I also tried using my 8 Bit Do Pro as well.

On both controllers I was getting a lot of false reads on diagonals. I was also getting a lot of double presses on a single stick movement which was also very problematic (player moves two spaces when giving a single quick push on the stick)

In Caves of Qud having movement confirmation on trigger actually works very well as you only have to slightly pull the trigger for each confirmation. I strongly suggest you give that game a play as it has absolutely fantastic controller implementation for a classic rogue-like.

As for the Steam Input comment, I meant that almost all of the code you have done for controller implementation could be done by anyone using Steam Input. Movement on the stick feels like just putting 8 digital movement inputs on the analog stick (granted you did try to customize the deadzone somewhat), the radials could all be set up and the the mouse cursor could be attached to a stick.

Hm, I'll take another look at analog deadzones in a little bit then, afraid I don't have a series control but I do have plenty of other ones (mostly borrowed from my roommate =S).

Regarding multiple moves when you intended one, this is actually something that's customizable in the settings 'hold to move sensitivity'. This affects both controller and keyboard input, and essentially adds a slight pause before you begin moving when a key or analog stick is held, which both helps ensure that things like diagonal movement are registered properly and that single-tile moves are easier to perform. Of course it also makes the game less responsive, so you ideally want to have it set as low as you can before getting missed inputs. You can also turn it all the way up to remove hold to move entirely and do each tile move as a discreet action if you want.

As for steam input, the fact that some of the improvements I've added are similar to the ones Valve themselves did to help controller users doesn't really sound like a criticism to me. As mentioned before I have to make my own implementation of these as people play the game in other places than Steam.
< >
Showing 1-4 of 4 comments
Per page: 1530 50