Suggestion: Detecting cheats

Eddiemon
Eddiemon Posts: 1,470 Chairperson of the Boards
Ok so this one requires a bit of coding. Sorry.

Each battle should be recorded. It shouldn't be too difficult or large a data file provided all tiles and events are generated from a single random seed. Knowing the seed will let you know what tiles are originally on the board and what tiles drop when things are destroyed.

The battle can then be recorded simply as a series of moves or abilities. Something like:
A(0,1) indicates a horizontal swap of the tiles in the top left hand corner. (Assuming the array of tiles starts at 0)
A(0,8) would be a vertical swap of the left hand corner tiles.
B would be character 1 ability 1
C would be character 1 ability 2
...
J would be character 3 ability 3

X would be switch target to character 1
Y would be switch to character 2
Z would be switch to character 3
X Y and Z would only be recorded when an action was actually taken, so people couldn't blow out the file size just by rotating targets.

Abilities that require paramaters could be recorded as B(1,15,8) if lets say this is black widow selecting green tiles.
Abilities with random effects can just be recorded as the action taken, because we can receate the same effect because we know the random seed generating the effect.

A 50 move battle can be encoded into a sequence of maybe 255 characters. You need the random seed, the starting teams, and bonuses in play and then all the moves. If you want the record to last beyond the event then you also need to record the buff multiplier with each team member. Brief battles could almost be tweeted.

Now when someone loses a PvP battle you could send them the record and allow them to replay it through the game engine. (Yeah more coding work). Or even better just syslog them to a server and then make them sortable by aggressor name. You would probably need either a flash player that plas the game out, or let players cut and paste the string into teh steam client to review it.

Players can then test and report cheats with evidence. The only way a trainer would work now would be to generate a completely legitimate battle sequence for each combat, and play better than the client. If we actually get trainers that are that good then just steal their battle logic and upgrade the client.

Bonus geek points if, once you generate the board from the original random seed you then use the current board as the random seed for each subsequent event.

Comments

  • There's no for any player assistance. The client checks out the game from the server having all initial state and the seed for new tile gen. At end the client posts the full game record with the final result. The server re-plays it, and accepts if it worked out. This leaves 0 room for manipulating the game data itself, playing with final health or the outcome. In order to post an insta-win the hack must create a legit series of tile matches and ability uses.

    I'd probably add some timing data to the record too, just few more bytes and useful to discover possible aids or other superhuman behavior.