我在 facebook 上有一些小型 Flash 游戏。如何防止作弊引擎作弊?我的 swf 文件通过 php 将分数发送到我的数据库。我只是不希望人们通过使用作弊引擎来破解我的 Flash 游戏中的高分。避免这些问题的最佳方法是什么?
提前致谢..
我在 facebook 上有一些小型 Flash 游戏。如何防止作弊引擎作弊?我的 swf 文件通过 php 将分数发送到我的数据库。我只是不希望人们通过使用作弊引擎来破解我的 Flash 游戏中的高分。避免这些问题的最佳方法是什么?
提前致谢..
我使用的2种方法如下
SpeedHack 看门狗
http://www.bjoernacker.de/flash/detecting-the-cheat-engines-speedhack-in-as3/
使用这个类来判断用户是否在使用 CheatEngine 来降低帧率
另一种方法是创建一个 vault 类来在代理中存储变量,这个 vault 会将变量存储在不同的命名空间中(作弊引擎无法更改的命名空间);
http://troyworks.com/blog/2007/08/05/introspection-in-as3-use-of-namespace/
简短的回答;你不能。
长答案;这是很多工作。一种选择是制作游戏的服务器端端口,确保一切都是确定性的,然后发送所有玩家操作并在服务器端端口上验证它们(并丢弃任何失败的验证)。
这取决于游戏,因为其中一些您可以在服务器上验证,检查用户步骤,但您也可以记录游戏并将其与分数一起保存,而不是重播高分以检查游戏是否有效。
我只是在分数中添加一些随机数(比如说 100 ),然后当我在某处显示它时减去它。在此之后,我混淆了 SWF 文件。所以我会有类似的东西:myScores = 100;。如果他有 15 个分数,那么记忆中就会有 115 个数字,他会寻找 15,而不是 115。然后我从 115 中减去 100,得到要显示的真实分数。保护您的 swf 免受反编译很重要(有很多软件会混淆它)。发送到 PHP 时,我还运行自己的加密/解密函数;)