   Detecting (and preventing) auto-fire joysticks
  Just been thinking about game controllers with an auto-repeat button function, and how they can completely ruin the challenge of a lot games (certain arcade shooters, etc.).  I realize it''s the player''s call if they want to ruin their own experience, but as developers we actually have an obligation to the player to not make it too easy to cheat.I''d like to hear what experiences anyone has had with detecting and preventing auto-fire cheating.  It seems you would detect it by measuring the time between button presses, and if this time is rigidly regular, there''s probably some auto-repeat hardware involved.  Many of the auto-fire game controllers have a speed setting the player can choose, but I doubt any of them randomize the cycle time to prevent detection.So has anyone actually put an anti-auto-fire mechanism in their game?  What kind of tolerance did you have for cycle regularity?  The last thing you''d want to do is piss off a skilled player who happened to have an inhumanly regular button-tapping ability.  And what did you have the game do if it decided they were cheating? 
  I dont really see the problem. You would just create the weapon with a cycle, that would only allow the user to fire the weapon at a certain period of time. ;  Yeah, I remember this being used in Metal Gear Solid, and I thought it was rather innovative at the time, same way with the bit you had to swap controller ports. ;  I''ve seen a lot of commercial games that detect autofire controllers by seeing if the rate of button pressins is faster than a human could press the button..  If it was detected the game acted like you were hitting the button really slowly (or even not at all).You could also check by making the action less effective if the button wasn''t held down long enough to look human.I''ve never seen controllers that you can change the speed of the autofire, but I don''t doubt the exist.  The harder you work to prevent people from cheating, they harder they will work to cheat.   Drakonite[Insert Witty Signature Here] ;  I think that the stability of the tempo of the pulses would make a better indicator of autofire than the speed.  Timestamp the button-presseskeep the last X (5?)compute X-1 deltasfind average of the deltassee if max- and min- delta are within a threshold of average (if so it''s a machine) lonesockPiranha are people too. ;  i dunno, like mentioned above the easiest way by far to prevent any of this is have a max fire rate on weapons;void weaponUpdate( float timePassed ) {  updateTimer();}void fireWeapon() {    if (timer >= reloadTime) {   fire weapon   reset timer    }}  you can set the timer to some appropriately small value so that normal human button pressing will almost always fire the weapon.  the gauntlet legends arcade game has a timer on weapon firing and it''s actually much slower than you can press the buttons.  (i.e.  only about 1/2 your button presses actually fire the weapon when you twitching...) it doesn''t effect gameplay at all.-me ;quote:Original post by Martoon   I realize it's the player's call if they want to ruin their own experience, but as developers we actually have an obligation to the player to not make it too easy to cheat.Huh?First you say it's the player's call.Then you say you have an "obligation" to make it harder.So which is it?If it's the player's call then why do you care if they are usingauto-fire joystick?If it's not the player's call and you want to dictate howpeople should play, then go ahead and annoy them.As a game player, I will avoid your game like the plague.   [Edit]: You mentioned "arcade shooters", so I assume you'retalking about single-player games.  Online games are tottallydifferent matter.Kami no Itte ga ore ni zettai naru!   [edited by - tangentz on February 14, 2004 3:54:38 PM];quote:Original post by Martoon  I realize it''s the player''s call if they want to ruin their own experience, but as developers we actually have an obligation to the player to not make it too easy to cheat.Only in multiplayer.  Seriously, if I want to cheat in single player, and you go out of your way to stop me, then I''ll be annoyed.John B 