Sunday, 7 September 2008

NO JOY? My campaign for joystick and gamepad support in Flash starts here!

Joypads, gamepads, joysticks, game controllers... call them what you will, Flash doesn't support them. Why should you care? Well, you only have to look around at Kongregate, MiniClip or TheGamesList to realise that Flash is a proper gaming platform now - you could even say FLASH IS THE NEW CONSOLE! (don't actually say that).

As I'm sure you already know, Flash has some great features for games development: great 2D graphics and animation, sound, video and a decent programming language with AS3. When it comes to input devices though, it's less than ideal.

While the keyboard support is great for games, the mouse support is not perfect - it doesn't let you "wrap" the cursor, so true FPS movement is impossible, and right-click can only be used for the Flash context menu. You also have the seldom-used option of supporting microphone and webcam (but more on that in another post). Anyway, any of these methods is obviously going to be second best to an input device specifically designed for gaming.

I can guess at why it's not supported yet - most users don't keep a gamepad plugged into their computer, so it can hardly be regarded as a critical update, and it probably would require a fair amount of engineering to make it work on both Mac and Windows. But anyway, I don't care what Adobe's reasons are - gaming with a joypad IS A JOY!

I've been doing a fair bit of XNA recently, so I have an Xbox 360 controller plugged into my machine most the time, and your game design options are just so much richer - you have 2 analogue sticks, a D-pad, triggers and whole bunch of buttons. Ok, maybe some of the success of Flash gaming is down to the fact that the controls are so simple, so it's probably not a good idea to use all those buttons, but it would be nice to have the option.

Local multiplayer (on one computer) in Flash would also be massively improved. On the keyboard you can only press a maximum of about 4 or 5 keys at once, then additional presses stop registering - this can make even 2 player games behave unresponsively (the best way around this at the moment is to have one player on mouse and one on keys, as I did with on Bloc's HeadSpace game for Sony). With multiple game controller support, you could have 2 players on joypads, or have a mix of joypad, keys and mouse.

I've made a silly little button too which you can stick on your blogs etc to show your support (I bet nobody does - prove me wrong!) Oh and Silverlight needs to support joysticks too, if only to give Adobe a kick up the bum.

I do not support this campaign: true joypad fans know about JoyToKey :)

http://www.electracode.com/4/joy2key/JoyToKey%20English%20Version.htm

You can use it to map any key or mouse movement to your joypad. I use it to play games that do not have joypad support, including ancient gems like Digger, I use it to control applications like ACDSee and as a remote control for my videoplayer (BSPlayer has many shortcuts).

There's also xPadder, which supposedly has more options. But it looks like a piece of crap :P

@Siemer - the problems with things like joy2key are:1. They require the user to do some extra work downloading the software and setting it up. This might not bother you but it would put off most users.2. They don't give full access to analogue sticks etc, so you can't do any kind of interaction that isn't already available with keys and mouse.3. They probably aren't cross-platform.

Haven't people already gotten Wii remotes working with flash? I would even think people would be willing to download an air app that translate other types of console controllers that aren't usb also, so long as it was -just- a matter of running it.

I'm trying to stop using Flash little by little, because I hate the lack of control over the control scheme. I want right-click actions, and I don't want users to have to map their gamepads or joypads to some external program to use them with my games. I also think higher of Java's 3D capabilities.