参见英文答案 >
Prevent Cheating on Javascript Game7个
我正在考虑创建一个HTML5游戏.我知道很可能没有人会试图作弊,但我想确定(并且有兴趣看看是否有任何好的技巧).
我正在考虑创建一个HTML5游戏.我知道很可能没有人会试图作弊,但我想确定(并且有兴趣看看是否有任何好的技巧).
我理解使用开源软件的优点,并希望我的代码能够被阅读和填充.但是,在游戏类型的情况下,用户的分数将被发送到服务器进行存储,我可以看到一个问题,即用户可以打开他们的devtools(在大多数浏览器中为F12)并修改脚本或变量中的值给自己一个更高的分数或一百个生命.我不在乎人们是否这样做,但我不希望他们的分数被存储.
案例研究:Candy Box 2(candyBox2.net)花了我不到20秒就获得了1亿份糖果.
有没有办法阻止这种情况发生?
解决方法
阻止这种情况发生的最可靠方法是运行所有业务逻辑服务器端,只接受来自浏览器的命令.如果关键变量不是驻留在浏览器中(或者浏览器中的副本是缓存副本并且从未被接受为权威),则客户端操作除了可能自动执行UI操作之外无法执行任何操作.
如果必须使客户端代码具有防篡改功能,那么您已经丢失了;这种方式是PunkBuster,Valve Anti-Cheat和其他机制,通常要求用户让你在他的机器上永久安装rootkit,这样你就可以通过检查来确保他不会作弊.
对于我最近使用ASP.Net作为后端的一些项目,我发现SignalR是一个非常有效的Comet类型的JavaScript和动态HTML通信层,甚至可以利用HTML 5 WebSocket支持可用.