Today I was surprised to find a couple of hackers on my racing game’s leaderboards. I want to remove these hacked times from the datastore while keeping all the other times achieved legitimately. Is there a way to achieve this?
You have to manually remove their leaderboard data, here’s how you’d do that GlobalDataStore:RemoveAsync
Also to prevent this kinda stuff you can add a check before saving the data to see if their entry is abnormal and if it is don’t save it
Right now I’m only checking if a time is 0 or less and not saving it on that instance, but I’m not sure how else I can detect illegal times. Perhaps I could compare them to the current best time and see if the difference is too big?
That wouldn’t work because if some player has a terrible time and the other has a decent time (isn’t a exploiter) it wouldn’t save their time due to the difference being too big. Easiest way would be to assume what the best time could be, you could also calculate it but that would be harder and depends on the game. In general there’s no flawless way of doing this, it’s mainly trial and error, seeing what works for your game.
I would just check if they beat a track in under 10 or so seconds since I doubt if anybody can complete a few laps in a racing game that quickly.
How big were these absurd times? What seems to be a normal time for the game? Just find a number low enough to where nobody can achieve it and don’t save if it is less than that.
Depending on the track a good time can range from 45 seconds to 1 and a half minutes. A lot of these hacked times were around the 20-30 second range, so perhaps that’s a good starting point