4

私は、TinyTower のように、時間の経過とともにいくらか改善されたカジュアル ゲームに取り組んでいます。

しかし、TinyTower の最大の欠点 (そしてすべての点で、そのかわいいゲーム) は、チートが簡単すぎることです。ゲームはデバイスの時間に依存しているので、「これは 8 時間で完了します」と表示されたら、時計を 8 時間進めて、物を手に入れてから戻すだけです。

今、これが私のゲームで人々が勝つ方法ではないことを確認する必要があります. システム時刻とサーバー時刻を相互参照できるという考えが 1 つありましたが、オフライン プレイがオプションであるため、接続が開いているとは限りません。

また、OS の時刻が突然最終再生時刻よりも前になった場合に、目に見えないチート疑惑カウンターを獲得できることを示すセンサーをセットアップすることもできます。これらのうちの 3 つと、ゲームがリセットされ、チーターとしてマークされます。

最後のオプションは、単に気にせず、チーターをチーターのままにすることでした。しかし、ホグスコアなどの競争要素を持たせる場合は、これが機能する必要があります。

そこで... 問題は次のとおりです。ユーザーが最後にアプリを開いてからの経過時間を検出する安全で信頼できる方法を知っている人はいますか?

4

3 に答える 3

3

いくつかのアイデア:

1)アプリに常に現在時刻と最終終了時刻を追跡させます。逆方向に移動するのを確認したら、現在保存されているすべてのゲームでカウンターをインクリメントし、このカウンターの値が十分に高いゲームからのハイスコアを拒否します。

2)ハイスコアを送信する場合は、デバイスの現在の時刻を送信してください。それがサーバー時間よりも十分に進んでいる場合は、ハイスコアを拒否します。

3)ゲームを開始するときは、ゲームの現在のバージョンがリリースされた時間に対して時間を確認してください。ゲームがリリースされる前にユーザーがゲームを開始していると思われる場合は、文句を言います。

于 2011-07-15T22:27:35.150 に答える
2

The app delegate is notified of significant time changes. You can catch these calls to applicationSignificantTimeChange: and watch for significant forward or backward time jumps.

Of course, that only catches changes that take place while the app is running. You can also save the time last run in the NSUserDefaults and check it next time you start up for significant backwards time jumps.

于 2011-07-15T22:23:43.307 に答える
0

これらすべての解決策について、ユーザーが別の国に行ってタイムゾーンが変更され、過去または未来に移動した場合はどうなるでしょうか?

于 2015-06-30T09:54:37.727 に答える