私の状況を説明させてください:
ラウンドベースのペイ・トゥ・プレイのゲームを開発したいと思っています。つまり、ピンボールなどのゲームの 1 ラウンドに対して 1 コインを支払うということです。
問題は、中断が発生した場合、理想的にはゲームを一時停止し、ユーザーが望むたびに再開することです。それを実装するのは難しいようです。ゲームがバックグラウンドに置かれたとします。ゲームの状態を ApplicationDidEnterBackground に保存します。ただし、バックグラウンドでゲームが終了する場合と終了しない場合があります。したがって、次の起動は「新たなスタート」または「最後に保存された状態からの再開」になる可能性があります。
アプリがバックグラウンドで十分長い間 (たとえば 1 週間) 放置されている場合、他のアプリがメモリをめぐって争っているため、ある時点でゲームが終了することはほぼ確実です。ユーザーがアプリを再度起動すると、新しいラウンドからプレイすることになります。つまり、以前に完了していなかったゲームがなくなったことを意味します。
顧客の観点からすると、これは不公平です。
私が考えることができるのは、アプリがフォアグラウンドに移動するたびに、保存されたゲームがあるかどうかを確認するように実装することです。もしあれば、代わりに再開します。これはセキュリティ上の問題を引き起こします:
最も原始的な plist 形式またはその他の形式で保存されたゲームは永続化され、セキュリティ上の問題が生じます。(プレイヤーがゲームの状態を編集し、トップ スコアとして 1000 万ポイントを獲得するとどうなるか...など)
これらの問題に対処するための推奨される方法はありますか?
一部のアプリはゲームの保存を単にあきらめ、再開時に新しいラウンドが開始されます。それらはゲームをプレイするために支払われるものではありません。
ゲームの状態を保存するアプリをしばらく見たことがありますが、終了すると、次の起動時に新しいラウンドが開始されます。これは、プレーヤーが実際にラウンドにお金を支払った場合と同様に受け入れられないようです。
また、クラッシュの可能性を考慮すると、有料の顧客がゲームを完全にプレイできるようにするための適切な解決策を思いつくことはできません。関連する経験を持つ人が自分の考えや意思決定方法を共有してくれると本当に助かります.