我正在制作一个多人游戏,其中玩家(1到4个)将棋子放在棋盘上(每次移动允许多个项目)。该游戏基于ajax。在棋盘上放置物品的规则非常复杂,禁止大量组合。
我想要实现的是当玩家将他的物品放在棋盘上时立即执行移动验证,因此没有滞后。他知道他的行动是否有效。然后,一旦提交了移动,就会在服务器端检查相同的规则。这当然是出于安全原因,处理ajax欺骗。我在请求中发送的只是项目ID和字段索引的映射。在服务器上我正在检查大量的东西,包括所有这些项目是否属于允许现在移动的玩家,以及这些项目是否可以放在这些特定领域。
我正在考虑验证字段索引的最佳实践。现在,我有两个完全独立的脚本,一个是JavaScript,另一个是PHP。有没有办法让它更灵活,所以如果我决定改变规则,我可以改变它的双方?我知道我可以做一些规则映射对象,然后为双方编写解释器,但这些规则太复杂了,无法使用任何类似的地图。
答案 0 :(得分:0)
只是一个想法。
你可以用一种易于使用的方式在一个单独的Javascript文件中编写你所有的游戏规则逻辑。因为这可以在客户端运行,问题就不在了..然后使用这个(se链接) PHP功能从PHP中调用相同的javascript代码并测试移动的有效性。
http://php.net/manual/en/v8js.examples.php
通过这种方式,您可以编写一次规则并在两边运行它们,而无需重写它们。
如果你不能做这样的事情,我会让服务器在每轮开始时计算每个游戏块的所有可能的移动,并将它们发送给客户端以呈现可能的动作。这样,您的客户端就没有游戏逻辑,但仍然可以显示有效的移动而不会对每个移动进行查询。
这样做的好处是只在服务器端有你的规则,而不是让人们了解你如何检查它们的细节。