2

我正在开发一个非常非常基本的回合制游戏phpjquery并且我正在研究两种不同的方法来跟踪当前用户的分数:

1) global javascript variables- 例如var currentScore在 js 的开头。游戏动作和回合都是通过ajax控制的,所以我不必担心页面刷新会丢失变量数据。

2) - 使用,等mysql创建一行并访问它/每轮更新它。currentScoreuser

我正在尝试平衡 a) 加载速度和 b) 使分数防篡改。我认为本地 javascript 会更快且加载时间更短,但 mysql 记录会更防篡改。有没有人对哪个更快,哪个更防篡改有任何建议,或者可能有我上面没有列出的另一种方法来完成这个?

4

3 回答 3

3

在 PHP 中运行您的游戏,而不是在 JS 中。

我的意思是不要让玩家的电脑控制动作,并将结果发送回服务器......

这允许人们劫持并向您的 PHP 发送消息,例如自动射击手枪......或爆头脚本......或速度黑客。

...或者更糟——发送诸如“我刚轮到我得 500 分”之类的消息,然后让您的 PHP 脚本运行:“好的!”。

因此,游戏引擎的核心应该运行在 PHP 中,客户端应该只说:“我的角色想要移动X方块。”,然后服务器可以说:“不,你是一个作弊工具,你只能移动 3 个方格。”,然后客户必须遵守这些规则。

在这方面,PHP 将 100% 控制记分。

于 2012-11-28T00:36:17.850 回答
2

任何未存储在服务器上的数据都将是可篡改的。任何发送到服务器的数据都可以被篡改。服务器不仅应该存储所有游戏数据,还应该验证来自客户端的所有传入数据。例如,规则是否真的允许该玩家使用他们告诉我他们正在使用的招式?否则,很容易作弊。再说一次,您的项目可能不需要那么多的审查。

于 2012-11-28T00:34:25.687 回答
1

两者,永远不要相信游戏中的javascript。总会有一个聪明的玩家会弄乱它。使用 javascript 作为 gui 部分并控制游戏,但始终检查 PHP 中的所有结果,尤其是特定于玩家的值。检查合适的球员!否则一些失败者会扰乱你的游戏。不要担心速度,只需编写游戏脚本(当然要考虑速度和数据)并在遇到性能问题时进行调查。一个问题从一开始就很重要:考虑您的数据库表和查询​​。这很可能成为您的性能瓶颈,而不是糟糕的 php 脚本。

于 2012-11-28T00:33:45.803 回答