2013年7月2日火曜日

スクフェスとパズドラ、両方のバックアップの仕組みと問題点についてまとめてみた。[7/2 20:41追記]

スクフェスのデータが次元の狭間へ消えていった話。

昨日こんな記事を投稿しましたが、今回の一件を機にそもそもバックアップやデータへのアクセスがどのような仕組みになっているのかについて解析と推察をしてみたのでまとめます。

まず、どちらのゲームも共通なのは「サーバにセーブデータ自体は保存されている」という点です。これはセーブデータの改造を防ぐ、というのが最も大きい理由であり、またどちらのゲームも頻繁に通信を必要とすることの理由付けでもあります。

したがって、バックアップ機能自体はどちらも「サーバの該当レコードへのアクセス情報を復旧させている」というのが正確な言い方であると言えます。

ここで、それぞれのバックアップの仕組みを整理します。


・スクフェス
iCloudによるバックアップは無し。
通常は機種変更の時などに使用する「引き継ぎコード」を事前に発行しておくことで緊急時には復旧できる。また、その発行を推奨している(ただしお知らせ欄の一番下の方にちょこっと書いてあるだけですが)。

ここで最も問題となるのは、スクフェスにおける「引き継ぎコード」が本来復旧用のコードとして位置づけられているものではないことです。ユーザ側から見れば、この引き継ぎコードが一体どのような情報を持ったコードなのかがはっきりしていません。先日までの自分の認識では、

「その時点でのセーブデータを別端末に引き継ぐための使い捨てコード。よって曲などをプレイすればコードも変わってしまい、意味をなさなくなるワンタイムパスワードのようなもの」

といった理解でした。
今回本当にそうなのか、という点について調べてみたところ(一回発行する→少しプレイする→もう一回発行)コードに変化はなかったため、これはおそらくユーザIDに相当しています。

ただし、このコードも例えばiPhone→iPad→元のiPhoneという形に引き継ぎを行う場合、最初の引継ぎと次の引継ぎではコードが変わります。つまり厳密な定義をするならば

引き継ぎコード=ユーザID&引き継ぎ元端末情報

ということになります。

余談ですが、このゲームの場合フレンドID、ユーザID、引継ぎコードはどれも同じデータにアクセスするためのものではありますがそれぞれ全く別のコードです。

このうち普段から見ることができるのはフレンドID、引き継ぎコードですね。

ユーザIDは引き継ぎを行った上で引き継ぎ元の端末を開くと「引き継がれたので最初からプレイするor引き継いだ覚えがないならトラブルなので問い合わせて」という趣旨のダイアログが出るので、そこで問い合わせを選択するとメールに自動入力されます。これがおそらく本当の意味のユーザIDのはずです。


・パズドラ
iCloudを使っている場合自動でバックアップされる。
ユーザIDをメモしておくことをいざトラブルに巻き込まれた時のために推奨し、起動時などの転換場面で注意を促すメッセージを表示。

セーブデータはもちろんサーバ側にあるため、ここでiCloudにバックアップされている情報がおそらくサーバの該当レコードへのアクセス情報ではないかと推察されます。この場合あくまでも本体が持っているのはアクセスするための道筋でしかないためデータの改造を防ぎつつ自動でバックアップする、という要件を満たしていることになりますね。

iCloudのバックアップがApple IDと紐づけされている以上そっちがハックされない限りはそのクラウド上のデータもなりすましの可能性はあまり考えなくて良い、というきっちりした担保も持った仕組みです。


さて、これで一応2つのゲームの仕組みを整理したわけですが、こう比べるとやはりオンラインゲームを昔から運営してきた企業はその辺がうまいな、と。携帯電話の故障自体は珍しい例ではありませんし、それにいちいちサポートの人的コストをかけていられるか、という意識の問題なのかもしれませんが。

スクフェスのシステムにはどのような改善すべき点が見受けられるか?

ここからはエンジニアとしての視点で見た改善すべき点について書き殴ります。

まず、引き継ぎコード≒ユーザIDであり、プレイ端末を変更しない限りプレイしても変化しない、という点についての周知で
しょう。自分も一回一回変わるシステムだとばかり勘違いしていました。
とりあえず「引継ぎコード」という呼称が誤解を招く原因となっているのでできるならば「ユーザID」や「復旧コード」のような呼称へと変更するべきではないかと思います。

また、できるならばパズドラと同じようなバックアップシステムにしておいたほうがベターではないかと思います。iPhoneユーザは特にiCloudによって端末が壊れて交換になってもその場ですぐ復旧できる、という感覚に慣れきっているためそれに合わせるのが正しい実装ではないかなと。

と、自分が痛い目を見たのでここまで色々書きましたが、ユーザ側がとっておくべき一番の策は昨日の記事にも書いた通り引き継ぎコードを発行してメモしておくことです。今回自分は完全にそこをミスっていました。大丈夫です、端末を変えない限り何曲プレイしてもレベル上がっても曲が増えても日付変わってもコードは変わりません。しっかり検証しましたからご安心を。

[7/2 20:27追記]
引き継ぎコードには有効期限があるらしい、との情報を得ました(短期的にしか変わらないことしか今回は確認してません)。もしそうだとすれば定期的に発行する必要がありますね…KLab潰れろよ…。



[7/2 20:41追記]
有効期限は1年だそうです。…長めとはいえバックアップに使うコードに有効期限って何考えてるの…?



ノーブラ解禁はレベル53…遠いにゃー…。

0 件のコメント:

コメントを投稿