Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(+1)

I tested gamepad support in 1892. I'm not a gamepad player but I can give you some feedback for that. I'm sure you are making many couch players very happy with that functionality.

For the moment I still see some work to do. It's not always picking the right controller.

I'm using (newest gen) XBox Controller and have two paired, but only one was connected ("switched on")  and I had NO working gamepad in the game. Second try I connected both controllers and the other which was switched off before worked. Next time I started the game, the other one worked.

I think it is complety ok to automatically pick one controller if more than one is connected but you seem to pick just "controller 0" if it is connected or not.  I'm not sure how a connection is detected but the axis should have valued around 32k when on and 0 if off.

Another problem is with looking, it is splitted between the wrong axis on the right stick and the trigger buttons:

right stick up looks to the left
right stick down looks to the right
left trigger looks down
right trigger looks up

I can also see it in the config, that the rigth stick only moves left/right. About the naming:  XY nub and ZR nub sound odd to me, it should be named "right stick" and "left stick": https://gameuxmasterguide.com/2019-04-18-DesignSenses/

So for the moment I cannot test how it really feels in the gameplay but I will do that, when the axis are fixed.

(1 edit)

thank you for taking a look!
but it was only included because it is what I'm working on now (and that is why I didn't mention it):
my XBox controller is only arriving on wednesday (earliest)
and so far it was only tested with a PS1 controller I had lying around
alas it looks like I'm far from finished 😔

(+1)

I'm sure these are minor problems to solve but maybe there is some fine tuning needed after that for response, dead zone handling etc and people would appreciate if the can use the menu with gamepad. So you have no keyboard input for the menu but a gamepad mouse-cursor control would do it.

indeed - for now I'd like to not think about how much work is still ahead 😔

If it helps you, you've already written a piece of video game history that will live on. Next milestone: 500 reviews on steam to archive

"overwhelmingly positive"

I updated Patches.zip with Build 1903
it has an improved support XBox controllers (if you are interested)

it finally arrived today:  turns out both shoulders use the Z axis
still needs some adjusting  and I still need to account for possibly multiple controllers ones plugged in
but at least now you can move and aim at the same time

of course I'm assuming that all XBox controllers use the same input setup 🤔

Great work, I think this can be productive used by any user!  it was a good idea to handle the triggers as buttons and not as axis. I am not the right person to tell you the best (most common) defaults but it seems to work very well.

In my opinion the assignable actions are complete but maybe someone could wish quicksave/load
D-Pad diagonal does nothing, doing both would be better at least if you move with it
I would call the "nubs" left and right stick

To name the buttons 1-12 is safe but which controllers for Windows really exist which have a complete other button layout than XBox? For me it would be nice to call them what they are: X, Y, A, B, shoulder, menu, start,...

I searched for my "gamepad mouse" code for cursor movement in the menu, it's in a very odd Basic dialect but should be readable as pseudo code.

Proc Joy_StickMouse
  parameters device&, axis1&, axis2&
  declare newx&,newy&,dist&
 
  'bring rest position from 32767 to 0
  joy_x_raw! = Joy(device&, axis1&) - 32767
  joy_y_raw! = Joy(device&, axis2&) - 32767

  '6,25% deadzone
  if (abs(joy_x_raw!) < 2048)
    joy_x_raw! = 0
  endif

  if (abs(joy_y_raw!) < 2048)
    joy_y_raw!= 0
  endif

  if (joy_x_raw! <> 0) OR  (joy_y_raw! <> 0)

    'set new cursor position
    newx& = %mousex + min(24,(joy_x_raw! * 0.0005 * (1 + joy_mouseacc!)))
    newy& = %mousey + min(24,(joy_y_raw! * 0.0005 * (1 + joy_mouseacc!)))
    SetCursorPos(newx&,newy&)

    'calculate acceleration based on "distance" last input
    joy_mouseacc! = joy_mouseacc! + sqrt(abs(int(joy_x_raw!)*int(joy_x_raw!)) + abs(int(joy_y_raw!)*int(joy_y_raw!))) * 0.0000025
  else

    'no input? reset acceleation to stop movement immediately
    joy_mouseacc! = 0

  endif
EndProc