Logic problem: Cheque system and 'cheaters'

I feel like this is the kind of thing people were suggesting N replies ago.

Edit: well, I guess he’d be the first among those people to give a constructive solution, though.

Yes, you could have it so they have to take their check to a specific place to cash it and have to interact with something in game that moves to complete the transaction. 3D interactions that change are much more difficult for auto-clickers to simulate.

The only real place to track then are spoofed network messages, but you can do some basic verification to ensure that the player is where they say they are and have done the right things.

7 Likes

That’s an interested approach I hadn’t thought of before, thank you.

My game is quite a large multi-place game, so I’d have to think about the best places to put these, but I think this could definitely work.

2 Likes

This has no basis. Any script executor that works in any game can simply run textLabelHere.Text.

Okay when I said advanced exploits I meant in the context of Roblox exploits, and those talked about in the OP, most of the time they’re really basic.

There is a difference between autoclickers and roblox script executors. At that point they’re just going to find a way around it, no matter what you do.

1 Like

From everyone’s inputs, I’ve gathered these key points:

  1. Nothing will ever be ‘fully’ cheat-proof - obviously you can take measures to limit cheaters, but you have to ask yourself “is it worth my time and effort, or could I be doing something more useful/important with my time?”. After all, this is Roblox, not a top EA game.

  2. To limit the impact cheques have, simply move your focus away from cheques, and introduce 3D methods of obtaining cash/exp; for example, minigames and quests. This does take a lot more time to do, but in the long run benefits both your game and its players.


Now on to the fun bit, solutions! (Note, these are not 100% ‘full proof’, but work most effectively in preventing your standard ‘cheater’):

  1. Make players hand in their cheques at a 3D location, for example a Bank. This does require you to think about the technicalities of doing this, especially if you have a universal game, but does make it significantly harder for cheaters.

  2. Use a code system, as mentioned above, but check a range of inputs, which if seem inactive/suspicious, add on one ‘cheat point’. If this cheat count reaches a certain number: the next time the player receives a cheque ask them to enter the code (which only takes them out of the way by 5 seconds). Some of the behaviours you could check against are:

  • Have they chatted within the last 10 minutes?
  • Have they moved within the last 5 minutes?
  • Have they pressed the keyboard or used the touchpad in the last 5 minutes?
  • Have they been playing for longer than an hour (or x3 times your average play length). If so, add a ‘cheat point’ for every 20 minutes they are on.

So once again, nothing’s perfect, but these are the most robust ways I’ve discovered of preventing cheaters whilst keeping other players happy.

4 Likes

Hold on, hold on. Just to clarify, by this do you mean that you’re punishing players who spend time on you game by accusing them as cheaters? Wouldn’t that, you know, not make them want to play for hours on end even if they like your game? It seems like a lose-lose.

7 Likes

The way I phrased it may have sounded harsh, but it’s far from. For example, after 1 hour of playing, every 20 minutes they will receive a ‘cheat point’. Once this value reaches a limit (which I made 5), the player will be prompted to enter a 4-digit code the next time they receive a check. This means if the player does not collect any other cheat points, it will take at least 2 hours to prompt the code. On top of that, the whole process only takes between 5-10 seconds, so gameplay isn’t affected, and the cheat points reset to 0 again.

4 Likes

Tying into LuckyTux’s reply,

Quite frequently I will play a game on Roblox for an extended period of time without ever chatting with anyone, but I don’t cheat. Unless your game requires players to cooperate with one another, this might seem at times like you’re punishing people for being quiet.

And also, what about the players that don’t have the ability to chat?

1 Like

Typically a user wouldn’t just be walking around or jumping (as most anti-afk programs do) you could also detect if a user has done a certain thing within a timeframe. For example if someone is just walking around for 20 minutes doing nothing you can assume they’re either lost or they aren’t actually at the keyboard. This method is by no means the safest but it is something you could look in to. Why would a user walk around for 20-40 minutes without clicking a certain event, etc…

I think you are looking into this way too much. As stated before, just remove those cheques completely and make it so that you’d have to actually interact with the environment to earn the points. Similarly to what Dued1 did with his game, Work at a Pizza Place, you can add a daily bonus cheque. If you want to keep the cheque system you have, then just have the player type a certain button into a box to cash out, and the character shown will be a random ImageLabel, rather than a TextLabel, as said previously.

2 Likes

My game concept is mostly social and interacting with other players - this would be odd to do for a whole hour. You have a good point with safechatters though - I’ll make sure cheat points aren’t added on for safechatters who don’t talk.

Far from punishing - just prompting the player to enter a short, quick, code, which would only pop up every hour or so if they were inactive like you mention.

I plan to move away from the cheque system eventually - quests/minigames/daily-login-bonuses are definitely the better option in the long run, they just take a bit more time to implement.

2 Likes