妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

HTML5でのセーブデータの扱い・その2 他のゲームとの区別方法

HTML5のセーブデータの扱いなんだけど、別のゲームとの区別はどうなってるんだろう、と思ってちょっと調べてみた」

妹「他のゲームとの区別?」

「例えば、妹のゲームと兄のゲームをHTML5パッケージ化して、同じホームページに置いたとする。妹のゲームで出した点数が、なぜか兄のゲームでもハイスコアとして出てきちゃう……なんてことが起きるんじゃないか? ってこと」

妹「そんなことが起きたら駄目なのでは」

「そうなんだけど、調査の結果、それが起こる可能性はあるということがわかった」

妹「えー……」

「まずホームページのドメインが違えばセーブデータも別になるらしいことがわかった。ドメインというのはアドレスの最初の方の、www.example.netみたいな部分。ここが同じだと、セーブデータも同じになる。これはUE4じゃなくてHTML5のlocalStorageというシステムの仕様」

妹「じゃあ例えば同じブログだったら、別々のページでも同じとこに保存されるということ?」

「そういうことになる。今つかってる、はてなブログは各ブログでドメイン違うようになってる。ドメイン名が同じになってるサービスだと、他の人が作ったゲームのセーブデータとも干渉する可能性がある。最近はあんまりないけど、プロバイダで用意されたホームページ領域はそんな感じのことが多い」

妹「でも結局、同じブログに2つゲームがあると駄目なんだよね?」

「その点は、セーブする時の名前を変えれば大丈夫になる。例えば昨日試してたタッピーチキン、あれはTappySlot2という名前でセーブスロットが作ってある。ここが一緒だとプロジェクト名を変えようが、プロジェクトIDを変えようが、同じデータを読み込んでしまった」

f:id:una_unagi:20161004231610p:plain

「そこでこういう感じに、セーブスロット名を別の名前にすることで回避が出来た」

妹「それはまあ、別のセーブスロットなんだからそうなるだろうけど……」

「これはプロジェクトIDかなにかで分けた方が安全だと思うんだけど、今出来る方法としてはゲーム毎に違うスロット名を付けるように気をつけるしかなさそう」

妹「save1、save2とか適当につけるとよくなさそう」

「大幅アップデートする時は、この仕組みを利用して古いデータをなかったことにするのがよさそう。あと同じサイトにあるゲーム同士で、ポイントみたいなのを共通化することもできそう。もっとも遊びレベルの話で、課金してとか本気でやるならデータはネットワーク経由できちんと保存しないと駄目だけど」

妹「これHTML5じゃなかったら別にいいんだよね? 他のゲームとスロット名がかぶったりしてても」

「それは大丈夫なはず。ホームページ上でゲームを動かすっていう仕組みの都合上の話だから」