2012-04-05 85 views
2

我在这个问题上的重点是制作HTML5游戏。目的是帮助减少/防止作弊。修改封闭变量

如果全球范围内的某个变量持有得分,例如var score = 0,那么仅通过运行javascript:void(score = 9999999999);就很容易作弊。

但是,如果我有更多的东西是这样的:

(function() { 
    var score = 0; 
    // game logic here 
})(); 

score访问由封闭以外的任何东西?玩家是否有办法修改它,从而伪造他们的分数?

回答

2

除此之外,score不存在(或至少,score不)。

如果你想防止骗子,整个游戏运行在客户端的唯一真正的方法是重新创建服务器上的游戏环境和用户输入并验证。

否则,任何人都可以修改您的客户端代码并发送他们想要的服务器。

+0

我知道完全防止作弊几乎是不可能的,但是通过适当的关闭,加密客户端 - 服务器通信和混淆代码的组合,我希望至少可以显着减少作弊。 感谢您为我确认答案。 – 2012-04-05 12:38:36

+1

@Kolink不用担心。我喜欢HTML5游戏,当它完成时向我展示你的游戏:) – alex 2012-04-05 12:39:19

4

客户端发生的一切都是'可破解'的,因为你根本没有任何控制权。防止这种情况的唯一方法是使用服务器端验证(例如AJAX调用)。

可以通过关闭之外的任何东西获得分数吗?

不,它不是。

有没有办法让玩家修改它,从而伪造他们的点?

是。看到我的第一个陈述。