UE5でセーブデータのフォルダ名を変える方法(サフィックス付け)
Steamでクラウドセーブを実装するにあたり、
セーブデータの保存先をどう分けるかという問題にぶつかりました。
体験版と製品版で同じプロジェクト名を使っていると、
ローカルのセーブデータ保存先が被ってしまいます。
プロジェクト名を分ける?
いや、それはちょっと大工事すぎる……
というわけでエンジンのコードを漁っていたところ、
とても便利な起動引数を発見しました。
-saveddirsuffix という起動引数
-saveddirsuffix
これは、SaveGameToSlot で保存されるセーブデータの
保存フォルダ名にサフィックスを付けるための起動引数です。
実際の挙動
例として:
- プロジェクト名:
Hoge - 起動引数:
-saveddirsuffix=Test
この状態で SaveGameToSlot により保存すると、
保存先は以下のようになります。
C:\Users\ユーザー名\AppData\Local\Hoge\Saved_Test
通常は:
C:\Users\ユーザー名\AppData\Local\Hoge\Saved
ですが、_Test が付与されます。
何が嬉しいのか?
体験版と製品版で起動引数を変えるだけで、
セーブデータの保存先を完全に分離できます。
例:
- 体験版 →
-saveddirsuffix=Demo - 製品版 →
-saveddirsuffix=Release
エンジン改造不要。
プラグイン不要。
ゲームコードの変更も不要。
かなりスマートです。
Steamworksとの組み合わせ
Steamworksの管理画面には、
Steamクライアントからゲーム起動時に渡す起動引数
を設定できる項目があります。
そこに -saveddirsuffix=Demo などを指定するだけでOKです。
つまり:
Steam側の設定だけで保存先を切り替え可能
になります。
ユーザーが勝手に起動引数を変更した場合はしーらない(鼻ホジ
まとめ
ネットを調べると、
- エンジン改造
- 独自パス管理
- プラグイン対応
などが主な解決策として紹介されていました。
ですが、
起動引数で解決できます。
同じことで悩んでいる方の参考になれば幸いです。
余談
UnrealEngineのGitHubで、どこでこの起動引数が追加されたのか見てみましたがおそらく11年前のこちらのコミットのようです。
https://t.co/xjCXWbPd31
記事を投稿した後にQiitaで検索してみたら同様のことを書かれている先駆者の方がいらっしゃいました
https://qiita.com/dgtanaka/items/1fc7ec81adc541e23506