我正在开发JS游戏,并希望尽可能地防止作弊。我知道这几乎是不可能的,但我想通过说game.lives = 99;
有没有办法可以检测出是否从控制台更改了lives
这样的变量,从而标记游戏被黑了并停止执行我的代码?我知道我可以做服务器端检查,但我想避免滞后。我正在寻找一个JS答案,如果有的话。
答案 0 :(得分:1)
你可以使用一个闭包,它基本上会使你的所有变量都是私有的,因此无法从控制台访问。如果您需要一些公共变量和方法,可以使用一个揭示模块模式。你可以在这里阅读更多相关信息:http://www.joezimjs.com/javascript/javascript-closures-and-the-module-pattern/
答案 1 :(得分:1)
您将无法完全阻止用户更改javascript代码或变量值。你只能让它变得更难。 Fisch提到使用闭包,因为所有变量都是私有的。查看立即调用的函数表达式(IIFE)模式。它用在很多插件样式代码中,有助于防止修改。
如果用户想要更改变量值,则不会阻止他们在调试模式下运行游戏并修改断点处的值。