サーバーに用意したファイルを使ってデータを更新する

はいどーもこんにちは無職です。
外部のサーバーからテクスチャをダウンロードする」という記事で「自動アップデート機能を作る~」みたいなことを書いていました。
ちゅーわけでこれをやっていきたいと思います。

基本的にはテクスチャの書き換えと同じ

やることはテクスチャの書き換えとほとんど同じみたいです。
具体的に言えば外部のサーバーから画像を読み込むのか、それともJSON形式のファイルを読み込むのかの違いくらいなもんです(別にJSON形式でなくてもいいですけど)。
やり方としては

・データ用のクラスを作る
・ゲーム内で普通にデータ用クラスのインスタンスを作成
・サーバーに更新したいデータ用のクラスをJSON形式で用意しておく
・サーバーから読み込んだファイルのバージョンを比較して、更新する必要があるなら更新

こんな感じです。

データ用のクラスの作成

というわけでまずはデータ用のクラスを作成します。
と言ってもふつーのクラスです。
こんな感じ。

Serializable属性やSerializeField属性を使っているのは、あとでJsonUtilityを使う必要があるからです。
これは特に説明不要ですね。

あとはアップデート後に差し替えたいJSON形式のファイルも作っておきます。
こんな感じ。

作ったファイルは任意のサーバーにアップロードしといてください。

アップデート用のクラスを作る

お次は自動アップデートをおこなうクラス(想定なだけで今回作るプログラムが本当に自動アップデートに対応しているわけではない)を作成してみます。
というわけでコードをドン。

先ほど作ったGamePlayerクラスのフィールドはStartメソッドの中で初期化されています。
UPDATE_DATA_URIの部分はご自分の環境に合わせて変更してください(アップロードしたファイルのURIです)。

さてとりあえずゲームを実行して、Zキーを押してみてください。
デバッグログに名前やらレベルやら攻撃力やらバージョンやらが表示されると思います。
これは

で指定したものの通りだと思います。

次にAキーを押してみてください。
ここでサーバーにGETでリクエストを送信します。
きちんとアドレスが指定されていたら、先ほど作成したJSONファイルの内容に_playerの中身が置き換わります。
特にエラーが出なかったなら、そのままZキーを押して中身をチェックしてみてください。

この通りの内容が表示されていたら成功です。

終わりに

意外と簡単に自動アップデートもできそうだなあという印象でした(今回一番めんどくさかったのがJSONファイルのアップロードでしたw)。
ただこれってセキュリティ的にはどうなんですかね……?
よくわかりません。
本番の開発ではFirebaseを使う予定なんですが、ウーン、一抹の不安が……。

まあボチボチいきます。
ほなそんな感じでまた。

フォローする