views:

286

answers:

3

Does HTML 5 Gaming use Canvas and Javascript? How to prevent cheating in this case?

For instance, what if a user uses GreaseMonkey or some tool to alter the script so that it just reports a perfect game score to the server every time?

+6  A: 

Instead of sending scores from user, send actions to server side everytime and calculate scores at server side

S.Mark
what if it is a game of invader or Restaurant City... we can't send each tiny action to the servers, and even if we do, we can send all "perfect" actions.
J Lynch
@J Lynch: Why can't you? What kind of game is it? If it's something like Invaders, sure, someone could recreate a "perfect scenario" but that would take a lot of work on their part, and most cheaters won't want to spend the time. :)
musicfreak
@J Lynch, regarding tiny actions, you could combine and queue some actions and send at certain interval to check those.
S.Mark
A: 

Obfuscation. Its google, and your, number one tool against prying javascript eyes. Google Javascript Obfuscation and you'll come across a million tools.

http://www.javascriptobfuscator.com/Default.aspx for one.

Dested
+7  A: 

I'll answer your question with a question of my own: Why don't we see rampant cheating in World of Warcraft? Or any other MMORPG for that matter?

The answer is because the game manufacturer keeps all game state serverside.

  • If I'm the client and I'm in charge of reporting damage done to the enemy, or my location, yeah of course I can cheat and tell the server I did 1 million damage.

  • On the other hand if the server keeps track of state and I only inform the server of changes to state, all I can do is tell the server "I moved left" or "I fired my gun" <-- anti-cheating is built into the architecture of the game

Of course, you did bring up the point of "perfect actions" - the case would be an action game, a shooter, etc. where objects could be identified and the "perfect action" send. And to that I'd say: this sort of cheating already exists, really. And it's existed for many years. So I don't see how anything changes just because these are javascript games.

ambertch