UE4でHTML5パッケージ化すると、SaveGameが効かないことがある
「HTML5にするとSaveGameが上手く動かないという質問があったので、簡単なテストデータを作ってみた。ほうっておくと出てくる数字が増えていくだけなんだけど、Sキーでセーブ、Lキーでロードという仕組みになっている」
妹「普通に出来てるのでは」
「Firefoxというブラウザだと出来る。妹が使ってるのもこれ。だけど一般的に利用者の多いChromeだと、ロードすると0に戻ってしまう。セーブデータ自体が無い感じ」
妹「セーブデータはどこに出来るの?」
「ブラウザ上で動くゲームは、最近はインターネット上にデータが保存されてることも多いけど、SaveGameの場合はクッキー(Cookies)という仕組みで保存されてるみたい。それがChromeだと上手くいってないみたい。UE4じゃない他のゲームだと普通にセーブできてるんだけど」
レベルブループリント
BP_Save(SaveGameクラスを継承)
「空のプロジェクトに最低限のBPだけ入れた、シンプルなシステム。もちろんプレイボタンで動かした時も普通にセーブできる。いまのところChromeだけおかしい。設定がヘンなのかもしれないけど、とくにあやしげなところもみあたらず」
妹「他にはないの? インターネット見るやつ」
「ないことはないんだけど、最新のWebAssemblyに対応してないと、セーブ以前にゲーム自体が動かないだろうから。日本語名とかも使ってないし……いまのところ原因不明」
妹「そしたらどうやってセーブしたら……」
「1つはSaveGameじゃなく直接クッキーに書き込む方法、もう1つはインターネット上に保存するという方法。どちらにしてもブループリントだけではむずかしそうな」
https://answers.unrealengine.com/questions/539566/html5-content-control-browser-from-inside-ue4.html
「ここに書いてある方法だと、C++の中からJavaScriptを呼び出す……みたいな仕組みで出来ると書いてある。他に何かいいプラグインがなければ、この方法しかないかも」