2011-07-15 17 views
4

TinyTowerのように、カジュアルゲームに取り組んでいます。iOS環境での信頼できる時間の差

しかし、TinyTower(そしてすべての点で、かわいいゲーム)の最大の欠陥は、不正行為が簡単すぎるということです。ゲームはデバイスの時間に依存しているので、「これは8時間後に完了しました」と表示されたら、時計を8時間先に設定して取得し、それを元に戻します。

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

また、OS時間が最後に再生される前であるかどうかを示すセンサーを設定して、目に見えない不正な疑惑カウンターを獲得することもできます。これらの3つは、ゲームがリセットされ、あなたを詐欺師としてマークします。

最終的な選択肢は、単に気にしないことでした。詐欺師を詐欺師にすることができました。しかし、もし私がhoghscoresなどで競争力のある要素を持っていたら、私は本当にこれが働くことが必要です。

だから質問はこれです: 最後にユーザーが最後にアプリケーションを開いてからどれくらいの時間が経過したかを安全に確実に知る方法はありますか?

答えて

2

アプリデリゲートには重要な時間の変更が通知されます。これらの呼び出しをapplicationSignificantTimeChange:にキャッチして、前方または後方のかなりの時間のジャンプを監視できます。

もちろん、これは、アプリケーションの実行中に発生する変更をキャッチするだけです。 NSUserDefaultsで最後に実行された時間を保存して、次回起動時に大幅な後方ジャンプを確認することもできます。

3

いくつかのアイデア:

1)は、アプリが常に対最後のクローズ時の電流の時間を追跡する持っています。それが後ろに行くのを見ると、現在保存されているすべてのゲームのカウンターを増やし、このカウンターが十分に高い値を持つゲームから高いスコアを拒否します。

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

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

0

これらすべてのソリューションについて、ユーザーが別の国に行き、タイムゾーンが変わって過去または未来に行くとどうなりますか?

関連する問題