概略
Steamクラウドは、ゲームからファイルをSteamのサーバーに自動で保存し、プレイヤーはSteamにログインすればどのコンピューターからでもセーブゲームにアクセスできます。統合のレベル
ファイルパス構成はSteamworksウェブサイト上にある必要があります。 アップロード、ダウンロード、列挙、削除には、ゲームコードからSteamworksへのAPI呼び出しが適宜必要です。 Steamクラウドの概要
Steamクラウドは、ゲームに簡単で透過性のあるリモートファイルストレージシステムを提供します。 自動クラウド設定で指定されたファイルや、クラウドAPIを使用してディスクに書き込まれた (作成/変更/削除された) ファイルは、ゲーム終了後に自動的にSteamサーバーに複製されます。
ユーザーが違うコンピュータからゲームにアクセスする場合には、ゲームの起動前に新しいコンピュータにファイルが自動的にダウンロードされます。 ゲームは、クラウドAPIを通してファイルを読み込むか、通常通りディスクから直接読み込みます。 ビデオ設定等、マシン固有の構成は避けてください。
Steamクライアントは確実に、ゲームにアクセスしたすべてのコンピュータ上でのファイルの同期が維持されるようにします。
Steamクライアントの「設定」メニューの「クラウド」タブで「Steamクラウドを有効化して、サポートするアプリ情報を同期化する」のチェックを外すことで、ユーザーはクラウドとの同期をグローバルに解除できます。
ユーザーは、各ゲームのプロパティから、ゲームごとにクラウド同期を無効にすることもできます。

ベストプラクティスと備考
Steamは、ゲームセッションの前後にユーザーのSteamクラウドファイルと同期することを覚えておくことは重要です。 セッション中に変更されたマッチメイキングファイルは、終了後すぐにクラウドストレージにアップロードされます。 ゲームが非常に大きなファイルまたは多くの小さなファイルをSteamクラウドに書き込む場合、ユーザーのインターネット帯域幅に顕著な影響を与え、Steamのシャットダウンやゲームの再起動に遅延を発生させる可能性があります。
一般的な規則として、小さいファイルの方が適切に機能します。 ユーザーの保存状態を異なるカテゴリ(頻繁に変更される場合と頻繁に変更されない場合)に分割できる場合は、カテゴリ毎に個別のファイルを使用することが推奨されます。 こうすれば、変更のない状態は、セッションごとに再アップロードされません。
ファイルサイズの制限
Steamクラウドのファイルサイズの絶対制限は、時間の経過とともに変化する可能性があります。 現在の制限としきい値は次のとおりです:
サイズ | 制限 |
---|
100MB | ISteamRemoteStorage::FileWriteまたは ISteamRemoteStorage::FileWriteStreamWriteChunkの呼び出しの最大サイズ |
256MB | ユーザーの場所に最適ではないストレージエンドポイントが選択され、アップロード/ダウンロードのパフォーマンスに悪影響を及ぼす可能性があります |
初期セットアップ
Steamクラウドの設定には、Steamworksのアプリ管理パネルから
Steamクラウド設定 ページを開き
ユーザー毎のバイトクォータ
と
ユーザーが持てるファイル数
を決定する必要があります。
この割り当てはクラウド対応のそれぞれゲームで各ユーザー毎に適用されます。 ゲームタイトルに適した値を設定することを推奨しています。
注: ページの下部の「保存」をクリックし、更新された設定を忘れずに公開してください。 公開後に、ゲームを所有するユーザーのSteamクライアント上に、クラウドアイコンが表示されるようになります。
ゲームが既に公開済みの場合は、
クラウドサポートをデベロッパーにのみ有効化
というチェックボックスにマークを入れることができます。 ここにチェックが付いている場合、このタイトルの「Developer Comp」ライセンスを所有するSteamアカウントのみにクラウドのアイコンが表示され、Steamクラウドを使用することができます。 これは、ユーザーの体験を損なうことなくSteamクラウドの統合を安全にテストする際に便利です。 未公開のゲームの場合はゲームの所有者がいないので、その特定のApp IDに対してクラウドストレージを見られたり、アクセスされることがないため、チェックを付けても何の影響もありません。
共有クラウドApp ID
フィールドに入力することで、2つのApp ID間でクラウドストレージスペースを共有することができます。 これはゲームの体験版と製品版の間でのセーブデータを共有するために最もよく使われます。 値が
0の場合、この機能は無効です。
SteamクラウドAPIとSteam自動クラウド
Steamは、Steamクラウドの利用に2つの異なる方法を提供しています。2つの方法の違いについて理解し、アプリケーションにとって最適な方法を決定してください。
1 つめの方法は、SteamクラウドAPI です。
クラウドAPIでは、ゲームにSteamクラウドを直接統合するための一連の関数が用意されています。 クラウドAPIは個々のSteamユーザーファイルを互いに分離し、Steamクラウド上での高度な制御を提供します。
SteamクラウドAPIは
ISteamRemoteStorage APIインターフェイスで公開されており、
Steamworks APIのサンプルアプリケーション(SpaceWar)で使用例を確認できます。
2つ目の方法は
Steam自動クラウドです。
Steam自動クラウドは、SteamクラウドAPIを統合しないゲーム用です。 これは、迅速かつ簡単な方法でクラウドを提供しますが、SteamクラウドAPIの柔軟性には劣ります。
例えば、クラウド内のセーブファイルから選択させる等のSteamクラウドとのより深い統合を希望する場合には、クラウドAPIを使ってください。 そうでなければ、Steamの自動クラウドを使用できます。
Steam自動クラウド
Steam自動クラウドは、SteamクラウドAPI の代替機能で、コードを書いたり、ゲームを修正することなく、アプリでSteamクラウドを使用できるようにします。 必要な作業は、クラウドに保存するファイルのグループを指定するだけです。 Steamは、アプリケーションの起動時と終了時に、これらファイルグループを自動的に同期します。 動画の品質など、マシン固有の構成は避けてください。
注:steam_autocloud.vdfファイルはSteamworksクラウドパスによって指定された場所にそれぞれ作成されます。 このファイルはSteamが使用し、ゲームは無視することができます。
セットアップ
初期セットアップ完了後に、
Steamクラウド設定ページ内のSteam自動クラウドの設定セクションが使えるようになります。
ルートパスはSteamクラウドに保存されるファイルのグループを表します。 各ルートパスには、単一のファイルを指定したり、またサブフォルダ内のすべてのファイルといった、広範囲な指定も可能です。 同期には、ファイルのグループごとに新しいパスを使用してください。
ルートパスは5つの部分から構成されています:
-
ルート
これはセーブゲームが通常保存される、所定のパスのリストです。
ルート | サポート対象のOS | 所定のパス |
アプリのインストールディレクトリ | すべて | [Steam Install]\SteamApps\common\[Game Folder]\ |
SteamCloudDocuments | すべて | プラットフォーム特有のパス。例えばLinuxでは x: ~/.SteamCloud/[username]/[Game Folder]/ |
WinMyDocuments | Windows | %USERPROFILE%\My Documents\ |
WinAppDataLocal | Windows | %USERPROFILE%\AppData\Local\ |
WinAppDataLocalLow | Windows | %USERPROFILE%\AppData\LocalLow\ |
WinAppDataRoaming | Windows | %USERPROFILE%\AppData\Roaming\ |
WinSavedGames | Windows | %USERPROFILE%\Saved Games\ |
MacHome | macOS | ~/ |
MacAppSupport | macOS | ~/Library/Application Support/ |
MacDocuments | macOS | ~/Documents/ |
LinuxHome | Linux | ~/ |
LinuxXdgDataHome | Linux | $XDG\_DATA\_HOME/ |
-
サブディレクトリ
ルートに対するクラウド化されたファイルへのサブディレクトリパスです。 サブディレクトリがない場合は、「.」を入力してください。
自動クラウド特別パス値
自動クラウドでは、サブディレクトリ
のパスに、一意のSteamユーザーIdを使用できます。 これで、Steamユーザー毎に別々に、ファイルが保存できるようになります。 ゲーム内でISteamUser::GetSteamIDを使うと、現在のユーザーのSteamIDまたはAccountIDを保存、読み込みできるようになります。
-
{64BitSteamID}
- Steamパスでのユーザーの64bit Steam IDにはこの値を使用。 64 bit Steam IDの例 : 76561198027391269
-
{Steam3AccountID}
- SteamパスでのユーザーのSteam 3アカウントIDにはこの値を使用。 アカウントIDの例:67125541
例 : SavesDir/{64BitSteamID}
-
パターン
一致するファイルマスクのパターン。 *
をワイルドカードとして使用できます。 ディレクトリ内の全ファイルが必要な場合には *
を使用してください。
例 : *.sav
-
OS
ファイルの同期元・先となるオペレーティングシステムを設定します。 これは、ファイルがOS固有である場合にのみ必要です。(そうでないことが望ましいですが!)
-
再帰検索
一致するファイルの検索時にサブディレクトリを含めます。 これはSteamユーザーの名前やIDではない、非確定的なの名前のサブディレクトリに有用です。 Steam IDを使用している場合には、サブディレクトリフィールド内に後述の特別パス値を使用することを強く推奨します。
ルートオーバーライド
アプリがクロスプラットフォーム対応で、OSごとに異なるディレクトリを必要とする場合は、 ルートオーバーライド機能を利用して代替パスを設定できます。
上記で指定したルートパスは、別のOS上の対応する別のパスにオーバーライドすることができます。 ルートオーバーライドを使用する場合は、上記の [ルートOS] ドロップダウンで [すべてのOS] を指定する必要があります。
ルートオーバーライドは5つの部分で構成されています。
-
オリジナルルート
これは上記で設定したルートの一つに相当します。
-
OS
オーバーライドを適用するオペレーティングシステムです。
-
新しいルート
指定したOS上で、オリジナルルートがマップする新しいロケーションです。
-
パスの追加 / 置き換え
これにより、オプションとして、新しいルートとオリジナルのサブディレクトリの間に挿入されるサブディレクトリパスを追加することができます。
-
パスの置き換え
「パスを置き換え」を有効にすると、「パスの追加 / 置き換え」で指定されたパスでオリジナルのサブディレクトリ全体を置き換えます。
例:Unityアプリケーションに自動クラウドを設定
以下は、OS毎に
Application.persistentDataPath
プロパティ値が異なる場合にUnityで自動クラウドを設定するための例です。 Windows版はUnity内でDefaultCompanyに設定された企業とAutocloudSampleと呼ばれるプロジェクトのルートパスとして設定されます。 macOS、Linux/SteamOS では、
Application.persistentDataPath
からの代替パスを、「パスの追加 / 置き換え」フィールド内に設定して「パスの置き換え」を有効にします。
これらを設定すると、プレビュー内のサンプルのように、自動クラウドファイルが3つのフォルダ間で同期されます。

リリース前のテスト
Steam自動クラウドをリリース済みのゲームに追加する場合には、
初期セットアップ期間中にデベロッパー専用モードを有効にして機能をテストするいくつかの追加の手順を完了してください。
- テストするアプリを所有するアカウントでSteamにログインします。
- ブラウザで
steam://open/console
を開いて、Steamコンソールを開きます。
- コンソールに
testappcloudpaths <AppId>
とテストするアプリのapp IDを入力します。 例 : testappcloudpaths 480
- コンソールに
set_spew_level 4 4
と入力します。
- Steamからアプリを起動します。
- コンソールでアクティビティをチェックしてください。自動クラウドパスに既存のファイルがある場合には、アップロードされることを確認してください。 ファイルが無ければ、アプリ用のいくつかのファイルが保存され、アプリを閉じると同期を開始します。
- 別のPCから上記ステップを繰り返して、Steam自動クラウドからファイルがダウンロードされるかを確認します。
- ゲームがサポートする全てのオペレーティングシステムでテストしてください。
- テストを終了するには
testcloudapppaths 0
とset_spew_level 0 0
を設定してください。 コンソールタブを取り除くには Steamクライアントを再起動してください。
テスト完了後は、デベロッパー専用モードを無効化にして変更を公開することをお忘れなく!
デバッグ
まず最初に、Steamworks上で確実に変更を公開し、その後最大10分間待つか、Steamクライアントを再起動して公開された変更を受け取ってください。
Steam クラウドで問題が発生した場合は、
%Steam Install%\logs\cloud_log.txt
内のログファイルを確認してください。
追加情報は
Steamworks APIのデバッグを参照してください。