在设备上更改时间 => 在游戏中作弊
Posted
技术标签:
【中文标题】在设备上更改时间 => 在游戏中作弊【英文标题】:Changing time on device => cheating in the game 【发布时间】:2014-01-03 15:07:44 【问题描述】:在某些游戏中,人们可以通过更改时间来作弊。例如:当他们必须等待 30 分钟才能建造建筑物时。 假设设备与我的服务器有连接,我可以防止这种情况吗? 我正在使用 libGDX 库在 java 中编程。 有适用于 ios 和 android 的解决方案吗?
【问题讨论】:
您的设备是否必须连接到您的服务器?如果是,您可以为服务器上的每个用户创建 30 分钟的超时。当用户从您的服务器发出请求时,请检查超时值。如果大于 0,则拒绝请求,否则允许。 【参考方案1】:将他们必须等待的时间存储在服务器上(告诉服务器他们执行任务,服务器将记录该时间以及何时可以再次执行)并让客户端检查服务器是否认为它实际上可以执行那个行动。每当您在客户端上存储某些内容时,很可能会有办法绕过它。
【讨论】:
还有没有其他方法可以让我在客户端获得实时信息?用户无法更改? 您可以从可信来源(例如您的服务)请求时间并使用该时间。客户端只会根据时钟知道自己的时间 @PaulHarris +1 使用服务。使用受信任的服务比将其存储在服务器上更好,IMO。它简化了应用程序——只有客户端关心时间存储/访问,而不是客户端和服务器。【参考方案2】:最好的办法是使用 SystemClock.elapsedRealtime() 作为不频繁的服务器端时间检查的助手。
返回系统启动后的时间,包括深度睡眠。这个时钟保证是单调的,即使在 CPU 处于省电模式时也会继续计时,因此是通用间隔计时的推荐依据。
从您的服务器验证时间后,您可以对 SystemClock.elapsedRealtime 进行本地检查,直到下次启动。
【讨论】:
以上是关于在设备上更改时间 => 在游戏中作弊的主要内容,如果未能解决你的问题,请参考以下文章
对于在线安卓游戏,都有哪些服务可以保证APK文件的完整性,防止作弊?