Cafe capybara TECH-BLOG

PHPな会社でゴリゴリしてるあかいいぬの技術ブログです

Ghost Recon Future Soldier [PC] 日本語環境で稀に起こるセーブデータに関する不具合

あかいいぬです。最近はずっとGRFSをしている次第ですが、Windows7環境で起こらずWindows8にしておこるようになった不具合がありました。


「武器やカスタマイズ、キャンペーンのアンロック情報が保存されず、常に初期の装備しか選べない問題」及び「ブリーフィングにて設定したカスタマイズがゲーム中に反映されない問題」。


このゲームは武器のカスタマイズが非常に細かい(ガスシステムやサイドバレルなども改造可能)のが大きなウリだったので、それが出来ないということでかなり悩んでおりました。


しかもWin7で起動したら出来て、Win8では出来ない。それだけならいいのですが、チームメンバーのかみのぎも同じ現象が起きているとのこと。


OSが問題じゃないなら何が問題なのだろうと数時間いろいろと検証して調べてみました。


まずこのゲームのセーブデータですが、C:\Users\(Winユーザ名)\My Documents\Ubisoft\Tom Clancy's Ghost Recon Future Soldier\profile\(UbiID)\ に保存されています(デフォルト)。

その中にランダムな数字のフォルダが1つまたは複数存在しますが、それがゲームメニュー画面のEXTRAS/ACCOUNTSで作った個々のアカウントのフォルダになります。実際のセーブデータはここに入っています。

さらにキャンペーンのオートセーブはSavedGamesの中に、アンロック情報はdata0, data1, data2というファイルに保存されているようです。
(もちろん、オンラインマルチプレイの部分はセキュリティの関係でサーバ上に保管されています)

uplayのクラウドセーブデータ同期はされているのか微妙なところです。確認はしていません。


さて、ここで不具合が起きる原因です。


簡単にいうと、

セーブデータのあるフォルダのURI(アドレス)に2バイト文字(英数字以外)が含まれていること

がこの不具合の原因となります。


Windows8では、インストール時にMicrosoftのアカウントとローカルPCのアカウントを紐づける(というか、MicrosoftのアカウントでPCにログインする)ようになっています。

なので、新しいアカウントを作る際に名前に2バイト文字を自然に使ってしまったのが今回の原因。

ユーザーフォルダ内はさまざまな(ほとんどの?)アプリが利用するので、海外製のアプリの場合2バイト文字への対応ができていない場合があります。

今回は、オートセーブのデータやオプション設定のデータは保存出来るのに、アンロックデータだけが保存できないバグがあったということで解決まで時間がかかりました。


Windows 転送ツールを使ってユーザープロファイルをコピーする にて、ユーザーフォルダを移行する方法が書かれているので、既に2バイト文字を使っていて不具合が生じているという方は実行してみてください(システムの復元ポイント設定を忘れずに)。
※この方法で何らかの損害が起こった場合、私は責任を持ちませんのであしからず


P.S. IE10ではてなブログプレビュー機能を使うと「XSS防止のため、ページを変更しました」と出て利用出来ない(笑)