I have a simple sword fighting game where players fight eachother to gain kills, kill streak, & time (when out of the safe-zone)
There are sometimes exploiters stealing other players time by killing them with cheats.
Rarely the AntiCheat does capture them, but the issue is it currently does not refund time to the victims.
Of course there is a 1000 stat limit to avoid saving thousands of small stats in DataStores.
Now this is where I’ve thought for days I’m yet to find a solution that is optimal.
The issue
How do you think I could refund the stats if the exploiter gets caught by the AntiCheat?
I cannot create tens of datastore keys. That won’t be ideal since it could get really expensive on the DataStore requests budget.
p.s: I don’t have time to set-up an external database. The storage costs may seem low for you, but they are highly over my budget. Using DataStores is ideal for me.
Make a better anticheat maybe?
I Mean like if a player gets killed, make sure the killer is monitored like how many kills does he get after killing that first victim, etc. Ofc Save that too to the datastore.
If it passes the paramaters and requirements, you can start your anticheat or whatever on them and refund the time.
Sorry, this was not the exact answer I was looking for.
Yes, I already know not to write every change 1-by-1 as soon as it gets updated.
I designed a system to recursively collect killed players (situations where kills appear as: Player => Cheater => Another Player) and only visit each datastore key if we need to. Later then, this was also made to use buffers which let me save way more space.
& I added a poisoning state to internally poison stats, incase of cheaters mixing it up with other stats in a storage area. So time laundering is also no longer a concern of mine.