Steamで遊んだゲームのセーブデータをクラウド上に保存してくれるSteam Cloudはとても便利な機能ですが、実際に対応しているゲームはまだまだ少ないのが現状です。それならDropboxなどのクラウドストレージサービスを使って、自前でゲームをクラウド対応にしてしまおう、という趣旨のまとめです。
なお、このまとめはWindows 7 64bitが搭載されたPC2台とDropboxの組み合わせを対象にしています。別のOSやクラウドストレージサービスを使用したい方は、適宜読み替えてください。
セーブデータの場所を特定する方法は別ページにまとめてありますので、そちらもご覧ください。
まず、保存したいデータがローカルマシンのどこにあるか特定しましょう。
C:\ProgramData\Steam\BejeweledTwist\users
%USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users
%USERPROFILE%というのは、Windowsアカウント別のデータフォルダを示しています。スタートメニューの右上のユーザー名をクリックした時に開くフォルダです。
次に、クラウドに移動したデータをゲームが参照できるように、シンボリックリンクを張ります。
mklink /d "C:\ProgramData\Steam\BejeweledTwist\users" "%USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users"
なお、シンボリックリンクのアイコンは、見た目こそショートカットと同じですが、Windows内部での扱いは全く違います。
別のパソコンからクラウド上のセーブデータへアクセスできるかどうか確かめてみましょう。
mklink /d "C:\ProgramData\Steam\BejeweledTwist\users" "%USERPROFILE%\Dropbox\SteamMyCloud\BejeweledTwist\users"
以上の作業を行う場合、長いコマンドの入力が大変でしょうから、コマンドを一括して実行できるBATファイルを作って、一緒にクラウド上に保存しておくと良いでしょう。実行させる時は、「管理者として実行...」することをお忘れなく。
私が個人的に同期を試して、うまくいったものを随時掲載します。
ゲーム | 同期パス | 種類 | 備考 |
---|---|---|---|
Steamのゲーム一覧 | C:\Program Files (x86)\Steam\userdata\[Steamユーザー固有の番号]\7\remote\sharedconfig.vdf | ファイル | 左記のファイルを自前で管理する事で、Steamを複数のPCで利用しているとカテゴリ分けがうまく同期されない現象を回避できる。 |
Bejeweled 2 | C:\ProgramData\Steam\Bejeweled2\users | フォルダ | C:\ProgramDataは隠しフォルダ |
Bejeweled Twist | C:\ProgramData\Steam\BejeweledTwist\users | フォルダ | C:\ProgramDataは隠しフォルダ |
Peggle Deluxe | C:\ProgramData\Steam\Peggle\userdata | フォルダ | C:\ProgramDataは隠しフォルダ |
Peggle Nights | C:\ProgramData\Steam\PeggleNights\userdata | フォルダ | C:\ProgramDataは隠しフォルダ |
Plants vs. Zombies: Game of the Year | C:\Program Files (x86)\Steam\userdata\[Steamユーザー固有の番号]\3590\remote | フォルダ | Steam Cloud対応のゲームだが、同期エラーが頻発するのでSteam Cloudでの同期をやめて、Dropboxで同期させることにした。 |
Hacker Evolution | C:\Program Files (x86)\Steam\steamapps\common\hacker evolution\he-savegames | フォルダ | |
Hacker Evolution Untold | C:\Program Files (x86)\Steam\steamapps\common\hacker evolution untold\heuntold-savegames | フォルダ | |
Hacker Evolution Duality | C:\Program Files (x86)\Steam\steamapps\common\Hacker Evolution Duality\sys-hed-appdata | フォルダ | |
Uplink | C:\Program Files (x86)\Steam\steamapps\common\Uplink\users | フォルダ | |
Darwinia | %USERPROFILE%\Saved Games\Darwinia\users | フォルダ | %USERPROFILE%はWindowsアカウントのフォルダ |
Worms Pinball | C:\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であればローカルマシンに同じデータが残っているので、当面は問題ないでしょう。