今回はデモ版だし、3分程度で終わるゲームなので設定の保存はいいかなと実装しなかったのですが、簡単に実装できるようだったので入れました。
以下、Unreal Engine 5.3(UE)で保存の実装。
Save Gameのブループリントを作成。
このSaveGameブループリントに保存したい変数を作成。言語、画面解像度、サウンド、フルスクリーン、マウス感度など。
余談ですが、UEではフルスクリーンの設定がFullscreen・Windowed Fullscreen・Windowedの3種類用意されています。Windowed Fullscreenはいわゆるボーダーレスウィンドウモード。
私の環境はデュアルディスプレイで作業しており、フルスクリーンよりボーダーレスウィンドウの方が利便性が高い為、基本的にボーダーレスウィンドウを活用しています。(ゲーマーの利用率はどんな感じなんだろか)
このゲームはガチな対戦ゲームではないのでボーダーレスウィンドウをフルスクリーンと呼称して実装することにしました。
GameinstanceのEvent Init(初回起動)にSave Gameのブループリントの読み込みを実装します。ゲームを起動する毎にSave Gameを読み込むようにするのだ。
Does Save Game ExistでSlot Nameのセーブデータがあるか確認。
セーブデータがあった場合、Load Game from Slotでデータを読み込み、Save Gameのブループリントの変数からGameinstanceの変数に上書き。
Does Save Game ExistでSlot Nameのセーブデータが無かった場合は、Create Save Game Objectでセーブゲームを作成し、Save Game to Slotで任意のSlotに保存。
その後はセーブデータがあった時と同じく、Load Game from Slotでデータを読み込み、Save Gameのブループリントの変数からGameinstanceの変数に上書き。
設定画面のBPからLoad Game from Slotでセーブデータを読み込み。
サウンド等の設定が変更されれば、Save Game to Slotで書き込み。
これで設定画面で変更した設定が次回起動時に毎回読み込まれるようになったのだ。
自作はitch.ioで配信しているのだ。
セーブデータの実装ができたのでitch.ioのデータを差し替えました。新しいデータをアップロードして、古いのはファイルを削除で良かったんでしょうか。
先日のデータは200MB超えてましたが不要なプラグイン等を消して199MBに削減。UE4の時は最小構成なら50MB以下でパッケージングできてた記憶があるんですが、UE5だと最小で150MBくらいは必要か。うちの実ゲームのコンテンツ容量自体は40MBなので。
今回のゲームでは1GBを超えることはないでしょうが、itch.ioの「容量制限は1GB。それ以上必要な場合は連絡してください」の文言に戦々恐々。最近のAAAだと容量200GB超えなんかもありますが、さすがにデカすぎると思うので容量圧縮には気を使っていきたいと思います。