我目前正在开发一款RTS游戏。帝国根据游戏运行的系统时间获取资源的地方。问题是,如果你改变系统时间。当游戏再次运行时,资源会立即激增。我再次在我的iPad上玩这个游戏,不公正:我们中间的神。如果你把时间调高,你的能量就会恢复,你可以在不等待精力补充的情况下进行游戏。这种类型的黑客行为非常容易,对大公司来说也很烦人。这样一家大公司制作的游戏有很多缺陷。如何实现完美无瑕的时间游戏并克服这个问题?我也读过this post,但我没有得到任何完美答案。
答案 0 :(得分:0)
没有与互联网上的其他设备通信没有正确的方法。如果大公司无法解决造成大量资金损失的问题,那么在通用汽车的有限环境中无法解决问题。
您的最佳投注已在您的链接帖子中提及: 把时间花在别的地方。一种方法是创建一个可以在服务器上运行的小工具,除了返回系统时间之外别无其他。
另一种方法是通过在时间设定后删除所获得的资源来惩罚这些作弊,甚至允许负值。
答案 1 :(得分:0)
作为Gemoron关于互联网访问的扩展帖子,我最近发现了一种在Game Maker中从互联网获取数据的方法。
你可以使用一个名为WGet的小型免费开源程序。我只是通过一个VBS脚本在GM8(Studio无法做到这一点)的代码中运行它,使其单独运行,并从你在工作目录中提供的链接中保存数据。
执行程序,并将其放入等待循环(带超时转义),当文件存在时,将其作为文本文件打开,将行读入变量,关闭并删除文本文件,然后返回包含字符串的变量。
构建脚本后,总共需要一行来检索信息。
时间= 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
系统设置时很容易。 作为警告,可以在保存文件中更改开始时间,但是游戏中内置的简单加密过程应该可以防止任何篡改。
Goodluck,编程很开心。 :)