Hi everybody.
I would like to add here that the joystick is the one thing that has stopped me from getting a couple of GP2Xs. Having read this discussion though, I feel a bit more favourable towards it, assuming that the issues can be worked around. I'll be getting a couple of these little joysticks on Monday so I can experiment.
The main problem seems to be that while the joystick is physically an 8-way unit, it is logically 16-way, as it is possible to get intermediate directions (as can be seen by looking at the switches in the test utility), in the same way that microswitched joysticks give the 8 directions from 4 switches.
Most of the software on the machine, including GPH's own menu (!) is not designed to take this into account. Up to now, programmers have only had to consider up, down, left and right, plus the diagonals formed by combining these 4 directions. Now we have 8 inputs instead of 4, giving us double the number of input conditions to test, N, NE, E, SE, S, SW, W and NW. In addition, there are 8 new 'soft' directions resulting from the combining of all the pairs of adjoining inputs, NNE, NEE, SEE, SSE, SSW, SWW, NWW and NNW. Messy, but hardly rocket science.
Part of the problem is that the internal workings of the joystick seem to use a floating circular contactor which moves over flat contacts, which add a whole level of inaccuracy in itself when you get down to those sizes.
As I see it, there are a couple of options.
- Software workarounds (i.e. DaveC's proposals). Any code designed to be run on the GP2X absolutely has to be aware of the joystick hardware, if only so that it can filter the directions in software. As far as I can see, this is the problem that's affecting a lot of the software in some way or another, e.g. when you have the stick pushed E, and it nudges NEE, the program takes that as a NE input, whereas it should still see it as E. For instance, I think Vektar suffers from this, in that it seems far too easy to unintentionally activate thrust.
Historically, most games work on the basis of getting 4 directional inputs and working everything out from that. I think a big improvement will come from programmers (myself included) taking into account the extra direction information. I'm going to go out on a limb here and say that in the long run, this might possibly become a positive feature of the GP2X, but there is going to be a lot of pain...
Perhaps the best thing would be to come up with some kind of a common joystick input routine which will allow for ORing and ANDing of the various inputs on some kind of hierarchical level, again similar to the diagrams and ideas put forward earlier (I will seriously think about this, and if anyone's interested I will post a proposal of how I think it might be implemented, plus some sample code and binaries if possible)
- Hardware modifications of the stick. Some people have suggested replacing the little plastic knob with something else. This may work for some people, but I think it's going to be a case of personal preference, as some people prefer a large dished thumbstick, whereas (personally) it seems to give a better feel by taking the plastic knob off altogether. This is a little hard on your thumb though. I'm going to try sticking a small toughened rubber cab on the brass stick to see if that helps. With a small contact area on the top, it seems to reduce the throw length considerably and feels a lot more accurate.
- Hardware modifications of the switch itself. There's been talk of soldering, shims, etc. One thing I don't think I saw mentioned (although I might have missed it) was the possibility of reshaping the internal circular contactor, to make it more of an octagonal shape perhaps, which would have the advantage of transferring some physical feedback through the stick as the contact moved around. This is one thing I want to experiement with. Another thing is making some kind of a film membrane to go between the internal contacts and the contactor, with slots cut out on the 8 directions. This should (in theory) have the effect of isolating the directions, which could be a disadvantage, because you don't necessarily want dead spaces between each compass point (it would certainly be unique in the field of joysticks). The positive aspect would be that the contactor (and by extension, the stick itself) should feel like it is dropping into the slots, giving valuable feedback through your thumb that you have selected a direction.
- Hardware modification of the GP2X or the switch enclosure. I think it might be possible to add a collar around the brass stick as a kind of guide. So, instead of the stick going around in a circular restraint as it does now, having something like an 8-pointed star shape (imagine a square laid on top of an identical one, but rotated 45 degrees) might get the stick to physically prefer the directions that are actually available.
None of this even takes into account the possibility of ditching the current joystick and putting something else in its place - Perhaps some kind of d-pad. Like the joystick, however, a d-pad can be next to useless, or extremely uncomfortable if it's poorly designed.
After all of that, however, the main problem is that the joystick was not designed for games, and it was an extremely poor design decision on GPH's part to even put it in without seriously considering the implications.
Hopefully GP2X game porters & designers will seriously think about how they implement their control schemes, and will do some critical playtesting before they release. This, coupled with redefinable controls, will help the GP2X to succeed, which I hope it does, especially now that GPH are sorting out their GPL obligations.
Who knows, I may even end up flogging off my PSP and NDS. After all, the only thing the PSP has now, after the constant shenanigans of drip-feed firmware upgrades, is the big screen. The only thing the NDS has is the touch & dual screen. Of course, they're both a hell of a lot more impressive in terms of battery life, and they can go into standby (try telling your boss you can't finish your lunch break because you're halfway through Ghosts 'n' Goblins), but perhaps these are issues that we will all be able to help resolve over the next year.
I think the thing to remember is that every problem has a solution, and the community that the GP2X is building is made up of the exactly the sort of people who can solve these problems - Take note, GPH!