-1

我目前正在开发一款 RTS 游戏。帝国根据游戏运行的系统时间获取资源。问题是,如果您将系统时间向前更改。再次运行游戏时,资源会立即激增。再一次,我在我的 iPad 上玩过这个游戏,不义联盟:我们中间的众神。如果你调高时间,你的能量就会恢复,你可以玩游戏,而不必等待你的能量补充。这种类型的黑客攻击非常容易,对于大公司来说也很烦人。这么大的公司做的游戏有这么多缺陷。如何实现完美的基于时间的游戏并克服这个问题?我也读过这篇文章,但我没有得到任何完美的答案。

4

2 回答 2

0

如果不与互联网上的其他设备进行通信,就没有正确的方法。如果大公司不能解决一个耗费大量资金的问题,那么在通用汽车的受限环境中是没有办法解决的。

您的链接帖子中提到了您最好的选择:在其他地方抽出时间。一种方法是创建一个可以在服务器上运行的小工具,它除了返回系统时间之外什么都不做。

另一种方法是通过在时间倒流时移除所获得的资源来惩罚此类作弊,甚至允许负值。

于 2014-02-18T12:16:54.587 回答
0

作为 Gemoron 关于 Internet 访问的扩展文章,我最近发现了一种在 Game Maker 中从 Internet 获取数据的方法。

您可以使用一个很小的免费开源程序 WGet。我只是通过一个 VBS 脚本在 GM8(Studio 不能这样做)的代码中运行它,使其单独运行,并将数据从您提供给它的链接中保存在工作目录中。

您执行程序,并将其放入等待循环(带有超时转义),当文件存在时,您将其作为文本文件打开,将行读入变量,关闭并删除文本文件,然后返回包含字符串的变量。

构建脚本后,总共需要一行来检索信息。

time=getOnlineData(" http://www.example.com/path/to/data ")

当然,您需要互联网连接,需要允许 WGet 程序通过您的防火墙。我用这个效果很好,效果很好。我还没有测试过更大的文件,但是在我的测试中,500B 个文件已经完成并且字符串在几分之一秒内加载。

因此,您只需在保持时间(并且只是时间)的网页上运行此脚本,然后将时间解析为您可以在游戏中使用的方式。

所以,你可以把它归结为:

//Get game start time from previously saved file.
startTime=getStartTime()

//Get current time from site
currTime=getOnlineData("http://whatsthetimemrwolf.com")

//If it is in standard javascript date format, it's easy from here. Subtraction gives the time passed in milliseconds.
passedTime=currTime-startTime

设置好系统后很容易。作为警告,可以在保存文件中更改开始时间,但游戏中内置的简单加密过程应该可以防止任何篡改。

祝你好运,编程愉快。:)

于 2014-09-07T23:56:24.833 回答