yuiwaiの個人開発日誌

個人的な開発の備忘録などです

tetrics - 1.3.2リリース

tetricsのバージョン1.3.2をリリースいたしました!

play.google.com

 

今回は、タイムアタックモードのベストスコアを保存する機能を追加しています。

 

この機能を実装したかった理由の一つには、libGDXを介してファイルを操作する処理をしてみたい、というのがありました。

 

westplain.sakuraweb.com

 

今回取り扱ったのは、シンプルにファイルを読み書きするだけなので、ファイルハンドリング部分の処理自体に特に難しいところはありませんでした。

整数値のスコアを保存するのでなにかしら手を加えてArray[Byte]との変換をする必要がありますが、愚直に8bitずつシフトしながら詰め込んでいます。

 

ちょっと面倒だったのは、処理の配線側。

タイムアタックモードの終了時点で、保持済みのベストスコアがあればそれと今回のスコアを比較して高い方、なければ今回のスコアをベストスコアとして保存します。

ベストスコアの更新時にはファイルに書き込むと同時に画面上の表示も切り替わって欲しいので、ファイルとメモリ上のデータの二重の更新が必要です。

これ系の処理は、処理があちこちに散らばると、ファイルとメモリ上のデータの整合性を確保するのが難しくなるので注意が必要です。

処理の順番として、「メモリ上のベストスコアを更新 -> ベストスコアをファイルに保存」としたので、ファイル側の処理でエラーが発生すると、画面表示上のベストスコアと実際にファイルに保存されているベストスコアにズレが生じますが、今回はそこで頑張る必要もないだろうということで、妥協しています。

 

ストレージアクセスについてはローカルで動作する何かしらのデータベースを使うという選択肢もありましたが、今回のような限定的な用途においては過剰だろうと判断しました。余計な依存を追加したくないですしね。

保存処理そのものは抽象化しているので、必要になったらファイルから別なものに切り替えることもできますし、ストレージを段階的に切り替える(リリース済みの旧アプリのストレージを新アプリのストレージにマイグレーションする)という面白い課題にもなります。