我正在使用php
和jquery
开发一个非常非常基本的回合制游戏,我正在研究跟踪当前用户得分的两种不同方式:
1)global javascript variables
- 例如js开头的var currentScore
。游戏动作和转弯都是通过ajax控制的,所以我不必担心页面刷新丢失可变数据。
2)mysql
- 使用currentScore
,user
等创建一行,然后每次都可以访问/更新。
我试图平衡a)加载速度和b)使得分数防篡改。我认为本地javascript会很快,加载时间也会少,但mysql记录会更加防篡改。有没有人有任何建议,哪个更快,哪个更防篡改,或者可能有另一种方法来完成这个,我没有在上面列出?
答案 0 :(得分:3)
用PHP运行你的游戏,而不是用JS。
我的意思是说,不是让玩家的电脑控制动作,而是将结果发送回服务器......
允许人们劫持并向你的PHP发送消息,如自动射击手枪...... ...或者爆头剧本...或者速度黑客。
...甚至更糟糕 - 发送消息,例如:“我只是在轮到你得了500分”,然后让你的PHP脚本:“好的!”。
所以相反,游戏引擎的核心应该在PHP中运行,客户端应该只说:“我的角色想要移动X
方块。”然后服务器可以说:“不,你”作为一个作弊工具,你只能移动3个方格。“,然后客户必须遵守这些规则。
在这方面,PHP将100%控制得分。
答案 1 :(得分:2)
任何未存储在服务器上的数据都是可以篡改的。发送到服务器的任何数据都可以被修改。服务器不仅应该存储所有游戏数据,还应该验证来自客户端的所有传入数据。例如,这些规则实际上允许这个玩家使用他们告诉我他们正在使用的移动吗?否则,欺骗会相当容易。再说一次,你的项目可能不需要那么多的审查。
答案 2 :(得分:1)
两者 从不信任游戏中的javascript。永远都会有一个聪明的玩家会惹它。 使用javascript作为gui部分并控制游戏,但始终检查PHP中的所有结果,尤其是玩家特定值。检查合适的球员!!否则一些输家会搞乱你的游戏。 不要担心速度,只需编写游戏脚本(当然还要考虑速度和数据)并调查何时遇到性能问题。从一开始就有一个问题很重要:考虑一下您的数据库表和查询。这很可能是你的表演瓶颈,而不是糟糕的PHP脚本。