Steam Cloud非対応のゲームをDropboxでクラウド化

Steamで遊んだゲームのセーブデータをクラウド上に保存してくれるSteam Cloudはとても便利な機能ですが、実際に対応しているゲームはまだまだ少ないのが現状です。それならDropboxなどのクラウドストレージサービスを使って、自前でゲームをクラウド対応にしてしまおう、という趣旨のまとめです。

なお、このまとめはWindows 7 64bitが搭載されたPC2台とDropboxの組み合わせを対象にしています。別のOSやクラウドストレージサービスを使用したい方は、適宜読み替えてください。

セーブデータの場所を特定する方法は別ページにまとめてありますので、そちらもご覧ください。

クラウド化の手順

1.ローカルマシンのセーブデータをクラウド上へ移動する

まず、保存したいデータがローカルマシンのどこにあるか特定しましょう。

  1. 私はBejeweled Twistのセーブデータをクラウド化したかったので探したところ、以下のフォルダの中にあることがわかりました。 C:\ProgramData\Steam\BejeweledTwist\users
  2. このusersフォルダを右クリックして、「切り取り」をクリックします。(「コピー」ではダメです)
  3. Dropboxフォルダにゲーム用のフォルダを作ります。私は、Dropboxフォルダの中にSteamMyCloudというフォルダを作成し、その中でSteamのゲームのセーブデータを管理することにしました。
  4. SteamMyCloudフォルダにBejeweledTwistフォルダを作り、その中へ先ほど切り取ったセーブデータ(usersフォルダ)を貼り付けます。 %USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users %USERPROFILE%というのは、Windowsアカウント別のデータフォルダを示しています。スタートメニューの右上のユーザー名をクリックした時に開くフォルダです。
  5. 貼り付けたら、Dropboxがデータを同期させるまで待ちましょう。

2.ローカルフォルダからクラウド上のフォルダへシンボリックリンクを張る

次に、クラウドに移動したデータをゲームが参照できるように、シンボリックリンクを張ります。

  1. スタートメニューの「すべてのプログラム」から「アクセサリ」をクリックし、「コマンドプロンプト」が見える状態にします。
  2. 「コマンドプロンプト」を右クリックし、「管理者として実行」をクリックして、コマンドプロンプトを管理者権限で起動します。
  3. コマンドプロンプトに、以下のコマンドを入力します。 mklink /d "C:\ProgramData\Steam\BejeweledTwist\users" "%USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users"
  4. 正しく入力してEnterキーを押すと、ローカルマシン上のセーブデータがあった場所に、クラウドで同期されるフォルダへのシンボリックリンクが作成されます。

なお、シンボリックリンクのアイコンは、見た目こそショートカットと同じですが、Windows内部での扱いは全く違います。

3.動作を確認する

別のパソコンからクラウド上のセーブデータへアクセスできるかどうか確かめてみましょう。

  1. 先ほどとは別のパソコン(ノートPCなど)に、SteamとDropboxをインストールして、各サービスにログインしておきます。
  2. Dropboxがデータを同期させるまで待ちます。
  3. SteamでBejeweled Twistをインストールし、一回起動しておきます。(Steamのゲームは大抵の場合、初回起動時にインストール作業が行われるためです。)
  4. 動作確認用パソコンのローカルのセーブフォルダ(C:\ProgramData\Steam\BejeweledTwist\users)を削除します。
  5. 先ほどと同じように、シンボリックリンクを作成します。 mklink /d "C:\ProgramData\Steam\BejeweledTwist\users" "%USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users"
  6. ゲームを起動させ、無事にデータが読み込めれば成功です。

以上の作業を行う場合、長いコマンドの入力が大変でしょうから、コマンドを一括して実行できるBATファイルを作って、一緒にクラウド上に保存しておくと良いでしょう。実行させる時は、「管理者として実行...」することをお忘れなく。

実際の同期例

私が個人的に同期を試して、うまくいったものを随時掲載します。

ゲーム同期パス種類備考
Steamのゲーム一覧C:\Program Files (x86)\Steam\userdata\[Steamユーザー固有の番号]\7\remote\sharedconfig.vdfファイル左記のファイルを自前で管理する事で、Steamを複数のPCで利用しているとカテゴリ分けがうまく同期されない現象を回避できる。
Bejeweled 2C:\ProgramData\Steam\Bejeweled2\usersフォルダC:\ProgramDataは隠しフォルダ
Bejeweled TwistC:\ProgramData\Steam\BejeweledTwist\usersフォルダC:\ProgramDataは隠しフォルダ
Peggle DeluxeC:\ProgramData\Steam\Peggle\userdataフォルダC:\ProgramDataは隠しフォルダ
Peggle NightsC:\ProgramData\Steam\PeggleNights\userdataフォルダC:\ProgramDataは隠しフォルダ
Plants vs. Zombies: Game of the YearC:\Program Files (x86)\Steam\userdata\[Steamユーザー固有の番号]\3590\remoteフォルダSteam Cloud対応のゲームだが、同期エラーが頻発するのでSteam Cloudでの同期をやめて、Dropboxで同期させることにした。
Hacker EvolutionC:\Program Files (x86)\Steam\steamapps\common\hacker evolution\he-savegamesフォルダ
Hacker Evolution UntoldC:\Program Files (x86)\Steam\steamapps\common\hacker evolution untold\heuntold-savegamesフォルダ
Hacker Evolution DualityC:\Program Files (x86)\Steam\steamapps\common\Hacker Evolution Duality\sys-hed-appdataフォルダ
UplinkC:\Program Files (x86)\Steam\steamapps\common\Uplink\usersフォルダ
Darwinia%USERPROFILE%\Saved Games\Darwinia\usersフォルダ%USERPROFILE%はWindowsアカウントのフォルダ
Worms PinballC:\Program Files (x86)\Steam\steamapps\common\worms pinball\user.cfgファイルキー設定のみ

シンボリックリンクについて

ショートカットとの違い

上のほうで、シンボリックリンクは見た目こそショートカットと同じだが、扱いが違うと書きました。

どういう事かと言うと、Windowsのショートカットは実は「元ファイルの場所が書かれている、拡張子が.lnkのテキストファイル」でしか無いのに対し、シンボリックリンクは「OSレベルでデータの置き換え位置を指し示している」物なのです。

Bejeweled Twistの場合で言うと、Bejeweled Twistのプログラムはセーブデータを"C:\ProgramData\Steam\BejeweledTwist\users"に保存するようOS(Windows)に命令しますが、命令を受けたOSは指定されたフォルダに書き込んだふりをして、実際はシンボリックリンク先の"%USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users"にデータを書き込み、Bejeweled Twistに対して「指示通りの場所にちゃんと保存できましたよ」と報告するのです。一方Dropboxはそんなやり取りがあったことなど露知らず、自分の管理するフォルダにOSが書き込んだセーブデータをせっせと同期します。そして同じようにシンボリックリンクが設定された別のパソコンの上で、Bejeweled TwistがOSにセーブデータを読みこませろと要求した時は、OSは素知らぬ顔をしてDropboxフォルダにあるセーブデータを、さも本来セーブデータがあるべき場所から取り出したように見せかけてBejeweled Twistに渡すのです。

こう書くと「なんだかそのシンボリックリンクって大丈夫なの?怪しくない?」と思われるかもしれませんが、実際のところシンボリックリンクはWindows Vista以降に標準で備わっているちゃんとした機能ですし、他のOS(Linux等)に言わせれば「今更シンボリックリンクの話?遅れてる~」くらいに一般的な機能なので、その点は心配いりません。

シンボリックリンクの作り方

シンボリックリンクを作成するmklinkコマンドの使い方は、以下の通りです。

mklink /d "作成するシンボリックリンク" "リンク先のフォルダ"

また、フォルダではなくファイルのシンボリックリンクを作りたい時は、/dオプションを外します。

mklink "作成するシンボリックリンク" "リンク先のファイル"

キー打つのめんどいという人はシンボリックリンクを簡単に作成できるツールLink Shell Extensionを試してみてはどうでしょうか。

なお、Windows XPでシンボリックリンクを作成したい場合はMicrosoftから別途パッチを入手する必要があるそうです。

注意点

この方法でセーブデータをクラウド上に保存する場合、実際にデータをクラウド上に保存したり読み込んだりするのはDropboxの仕事になります。Dropbox上でデータがきちんと同期されていないうちにパソコンの電源を切ってしまったり、また回線が不安定だったりすると、データの同期がきちんと行われず、おかしな事になってしまう可能性があります。きちんとデータが同期されるまで、ゲームを起動したりパソコンをシャットダウンしないように気をつけてください。

また、無料のクラウドストレージは大抵2~5GBしか容量がありませんので、あまり大きなデータは保存できません。保存するデータを厳選するなり、複数のストレージサービスに分散するなりして対応してください。とは言えそれも面倒くさいので、お金があるなら素直に容量を拡張しましょう。

なお、このページに書いてあるクラウドストレージサービスの使用方法は、サービスを提供している各社が想定している使用方法とは異なる可能性があるので、ある日突然「お前の使い方ダメだから」とか言われてデータを消されても責任持てません。仮にそうなってもDropboxであればローカルマシンに同じデータが残っているので、当面は問題ないでしょう。