Lets say a game has a cheque system - every 5 minutes the player is rewarded with a cheque which they must ‘cash out’ in order to claim. The server will stop rewarding cash until it knows the player has confirmed the cheque:
This system at face value stops people earning cash whilst inactive; if they leave the game for longer than 5 minutes, then they will not receive any more cash until they confirm their current cheque.
Here’s the problem: players have the ability to use programs such as ‘Auto Clicker’ and ‘Ghost Control’: Auto Clicker allows the player to confirm the cheque whilst away, while ‘Ghost Control’ allows them to move about and copy behaviours normal players would exhibit.
To counter the problem, you generate a random code which the player must then ‘submit’ to cash out the cheque. The problem is though, this ‘code’ becomes repetitive after some time, and your ‘good’ players begin to get annoyed:
The challenge: How do you go about effectively separating the cheaters (i.e people with Auto Click, Ghost Mode, etc) from the non-cheaters, so you only have to display the code verification to those that are cheating?
Best solutions currently:
Detecting unusual behaviours, such as not moving or chatting within a time-frame
Introducing a ‘hunger’ system, which if empty after a certain amount of time prompts the code
You don’t. I can think of several games with these “ghost” players around, Runescape and Wizard101 come to mind. It’s really not worth the energy past your “Cash Out” button. The code is an awful idea because it punishes your legitimate players, and it almost feels punishing.
Sounds to me the issue is that your system incentivizes idling. Try thinking of a better system, such as the money you get in the checks being proportionate to your gameplay such that idling/walking around nets you nothing.
It’s very difficult. You’re gonna need a captcha type system. The problem about this is you’re gonna need to make it easy for humans to read but hard to automated machines to read.
It’s virtually impossible and a _ cash per _ is a difficult thing to do. My only way to combat the idle player is check if they do any userinput. If the user has not input in for 5 seconds it will count you as idle.
You could build up a count of ‘unusual’ behaviors, then once the players hit a certain limit, display the message. This is one of my ideas, but not fully developed.
It’s a pointless effort. User input can be FULLY mirrored by (exploit/external) scripts on the client, too. Your current system, as Kamf said, incentivices idling, which is the underlying issue that makes you think you need the code/captcha style system.
Unless you’re patching words together and even then have some obscure way of getting a random image and having the server know the right answer to it, this won’t work. Letters/words can easily be linked to the Image id, too. Speaking a bit more on the exploiting side and a bit less on simple automated things like autoclick.