以下は、Steamにコンテンツを提供するためのValveのツール、SteamPipeの使い方の説明です。 ゲームをアップデートするためのベストプラクティスの詳細については、こちら
ゲームのアップデート - ベストプラクティスをご覧ください。
SteamPipeコンテンツシステムの概説
SteamPipeは、Steamのゲーム/アプリケーションコンテンツシステムです。 SteamPipeは、次のような機能を備えています:
- 効率的かつ迅速なコンテンツ配信
- パブリックブランチと、複数のビルドのテストを可能にする、プライベートの「ベータ」ブランチ
- ウェブベースによるシンプルなビルド管理 - 数クリックで、新規ビルドのリリースまたは以前のビルドへのロールバックを実行
- ライブ設定前にビルドのアップデートサイズを確認
- 複数のアプリケーション間でのコンテンツを共有
- パブリックまたはベータコンテンツから インストーラーディスクを構築
- アップデートのダウンロードの開始後も、ゲーム/アプリをオフラインで使用可能
- すべてのコンテンツを常に暗号化し、アクティブでないバージョンは顧客からは見えません
- 開発中に使用可能なSteamPipeローカルコンテンツサーバー
注: SteamPipeにはいくつかの重要な概念がありますので、先に進む前に
アプリケーション の内容を理解しておいてください。 個々がどのように組み合わさるのかについて、基本概念を理解しておくだけでも、製品を Steam にアップロードする際には非常に役立ちます。
ゲームのコンテンツ構造-ベストプラクティス
SteamPipeは、ゲームの初回インストール時の効率的なダウンロードと、アップデートのパッチの効率的な適用を目的として設計されました。 一般に、SteamPipeはさまざまなゲームコンテンツ構造に適しています。 しかし、最適化および非効率な状況の回避のために知っておくべき重要な点がいくつかあります。
注: ゲームで
Unreal Engineを使用している場合は、このセクションの最後に記載されている、これらのパックファイルに関する注意事項を参照してください。
SteamPipeは、最初に各ファイルを約1メガバイト(MB)のチャンクに分割します。 次に、各チャンクは圧縮および暗号化された後、Steamコンテンツ配信システムにアップロードされます。 それらは、各クライアントによってダウンロードされるまでは、圧縮および暗号化されたままの状態で、ダウンロード後に復号化および展開され、必要なファイルの場所に配置されます。
SteamPipeは、既存のゲームのアップデートを処理する際に、ゲームの以前のビルドに一致するチャンクを検索します。 これにより、理想としては、ファイルの新規または変更部分のみが「新しい」チャンクに変換され、ゲームのアップデートのためにクライアントがダウンロードする必要があるのは、それらの新しいチャンクだけになります。
多くのゲームエンジンは、ゲームアセットの結合に「pack」ファイルを使用しており、より効率的なディスクアクセスを可能にすることでロード時間を短縮しています。 一般に、これはSteamPipeでうまく機能しますが、 一部のpackファイルシステムでは、問題を引き起こす可能性のある機能が使用または有効化されている場合があります。 ほとんどの場合、これらの問題による影響は、アップデートが必要以上に大きくなることです。 また、ローカル ディスクへの大量の入出力を要するため、ダウンロードは高速でもアップデートのプロセスが遅くなる場合があります。
以下は、ゲームでpackファイルを使用する場合の一般的なガイドラインです。
- アセットの変更がpackファイル内で可能な限り局所的であるようにします
- packファイル内でのアセットの順序をシャッフルしないようにします
- packファイルのサイズを制限します
- アセットは、レベル/レルム/機能ごとに個別のpackファイルにグループ化しておき、アップデートの場合は、既存のファイルを変更するのではなく、新しいpackファイルを追加することを検討してください
- 各アセットには、元のファイル名、またはファイルやビルドのタイムスタンプを含めないでください
上記の最初のポイントは、ひとつのアセットが変更されたときにファイル内で変更されるバイトの範囲を指しています。 そのアセットのデータがpackファイル内の同じ場所で変更、および/または拡大、縮小されていれば、それが理想的です。 SteamPipeは、アセットデータを含むファイルの部分に対してのみ新しいチャンクを作成します。 ただし、エンジンがアセットデータを見つけられるように、すべてのpackファイルには何らかの目次(TOC)が必要です。 このTOCの構造が、SteamPipeのパッチの効率に大きな影響を与える可能性があります。 ファイルの先頭か末尾付近にTOC、またはTOCツリーが1つあるのが理想的です。 他のアセットがファイル内のバイト位置をシフトする可能性があるため、それらのTOCエントリーも同様に変更されます。 この場合、SteamPipeは、変更されたアセットデータとTOCの変更部分に対して、新しいチャンクを作成します。
しかし、一部のゲーム エンジンでは、TOC情報がファイル全体に分散していることが確認されています。 それだけではなく、絶対バイトオフセット値が使われている場合も確認しています。 この場合、3450バイトのアセットのサイズが8バイト増えると、ファイル内のそれ以降のすべてのアセットのオフセット値も変わります。 各オフセット値はわずか4バイトか8バイトであっても、8バイトへの変更により、SteamPipeは1MBのチャンクを新たに作成することになります。 これにより、packファイル内の小さなアセットをいくつか変更しただけでも、クライアントがアップデートのためにファイル全体の半分以上をダウンロードしなければならないという、深刻な影響が出る可能性があります。 packファイルの構造がこの問題を引き起こしている、またはその疑いがある場合は、できるだけ早くValveの担当者に連絡してください。 トレードオフはありますが、この問題を軽減するのに役立つ代替ビルドアルゴリズムがあります。
さらに、SteamPipeはpackファイル内のアセットの境界を認識しません。 1MB未満のアセットがシャッフルされると、以前に構成されていた1MBのチャンクがファイル内に存在しなくなるため、この並べ替えを検出できない可能性が高くなります。 そのため、ゲームのアップデートを作成する過程で、packファイル内のアセットを並べ替えることによってロード時間を最適化したい場合は、そのアップデートのダウンロードが非常に大きくなる可能性があることに注意してください。 これは、パフォーマンスが大幅に向上する場合にのみ行うことを推奨します。
次に、クライアントデバイスでpackファイルを更新するために、SteamPipeは古いバージョンと並行して新しいバージョンをビルドします。 新しいファイルがすべてビルドされると、古いファイルを削除して新しいファイルを移動することにより、更新を「コミット」します。 これは、25GBのpackファイルを更新する場合、SteamPipeは常に新しい25GBのファイルを作成することを意味します。 更新でそのファイルに10バイトの変更しか必要ない場合でも、SteamPipeは古いファイルから新しいファイルに25GBのほぼ全体をコピーする必要があります。 クライアントストレージハードウェアによっては、これは非常に遅いプロセスになる場合があります。 そのため、次の2つを推奨します。
第一に、packファイルのサイズを制限します。 ゲームをロードするときに効率的にディスクを読み込むには、おそらく1~2ギガバイト(GB)で十分です。
第二に、1つのpackファイル内のアセットの範囲はかなり制限する必要があります。 1つのゲームレベルやアンロック可能な機能に制限してください。 こうすることで、ゲームの特定の部分に対するアップデートによって、他の部分のデータがクライアントマシン上にコピーされることがなくなります。 さらに、新しい機能やレベルなどを追加する場合は、それらの変更を新しいpackファイルに配置することもでき、おそらくそうすべきでしょう。 このアップデートをダウンロードするクライアントは、packファイルの修正に関する上記のような問題を回避しつつ、新しいファイルを単に一度だけダウンロードします。
疑問がある場合は、Beyond Compareなどのローカルバイナリ差分ツールを使用して、packファイルのバージョンを比較できます。 表示されている差分が、変更されたアセットに対して予想されるサイズであり、ファイル全体に数十または数百の小さな変更として分散していないことを確認します。 予期しない結果が表示された場合は、packファイルツールの設定を確認してください。
圧縮:Steamはアップロード/保存/ダウンロードのためにすべてのデータを圧縮するため、通常、packファイルに一般的な圧縮を使用することはお勧めしません。 ただし、ゲームのディスク上のサイズが気になる場合は、packファイルの圧縮をお勧めします。 上記が満たされている限り、SteamPipeで問題なく動作します。 特に、可能な限り圧縮がアセットごとに行われるようにする必要があります。 アセットの境界を越えた圧縮では、変更が分散されるため、クライアントでは必要以上のデータのダウンロードが必要になります。
暗号化:これは圧縮に似ています。ほとんどの場合は不要であり、上記と同じリスクがあります。
以上のルールに従えば、パッチのサイズを最小化でき、新コンテンツのみがダウンロードされるようになります。 こうすることで、顧客の満足度が高まり、また、より頻繁にアップデートを出すことが可能なため製品の質を高めることができます。
ゲームパッケージングがSteamPipeのアップデート処理とうまく作用していないように思われる場合、Valveまで連絡してください。これを支援するさらに高度な機能の有効化を検討します。
Unreal Engine -注意事項
Unreal Engineの一部のバージョンでは、パックファイルに、SteamPipeアップデートのサイズに非常に大きな影響を与える可能性のあるアセット「パディングアライメント」を使用しています。 This alignment can cause cascading asset shifts when building new versions, especially if pack file compression is enabled. Using a padding alignment of 1MB (1048576) will help ensure that re-alignments will shift assets by a multiple of the same blocksize that SteamPipe uses for delta calculations.
一例としては、ゲームパックファイルを「クッキング」する際に、パディングの配置を変更または指定するには、次のファイル内の1行を変更する必要があります。
UnrealEngine/Engine/Source/Programs/AutomationTool/Win/WinPlatform.Automation.cs
GetPlatformPakCommandLine
関数を含むファイルの、その関数内でこの行を変更します:
string PakParams = " -patchpaddingalign=2048";
変更後:
string PakParams = " -patchpaddingalign=1048576 -blocksize=1048576";
この変更により、パックファイルの圧縮を有効にしていても、SteamPipeのアップデートを最適化することができます。
Unreal Engineは、米国およびその他の国々におけるEpic Games, Inc.の商標または登録商標です。Steamworks Video Tutorial - Building Your Game in SteamPipe
このチュートリアルでは、Steam用のサンプルアプリケーションの構築を通じてSteamPipeとその使い方の手順を解説します。
https://www.youtube.com/watch?v=SoNH-v6aU9QSteamworksビデオチュートリアル-新しいプラットフォームと言語の追加
このチュートリアルでは、アプリにデポを追加することで、ゲームに新しいプラットフォームや言語を追加する手順を解説します。
https://www.youtube.com/watch?v=PShS32hcingSteamPipeの技術概説
SteamPipeはHTTPプロトコルを使用してコンテンツを配信します。 ダウンロードは通常のWebトラフィックを使って行われるため、顧客とSteamサーバーの間にサードパーティーHTTPキャッシュがある場合、ダウンロードスピードは向上します。 コンテンツを弊社のコンテンツネットワークに追加できる外部CDNプロバイダーにホストさせることもできます。 ほとんどの顧客のファイアウォールはHTTPトラフィックを許可し、ダウンロードをブロックすることはありません。
SteamPipeには、既存のコンテンツファイルの修正部分だけを変更する、バイナリ差分に基づく効率的なパッチアルゴリズムが搭載されています。 コンテンツがアップデートされると、こうした差分のみが送信されます。 こうすることで、開発者とユーザーによる転送量を少なく抑え、転送時間も短くすることができます。 ほとんどのパートナーは、プライベートブランチ上でビルドを効率よくパッチできるため、
SteamPipeローカルコンテンツサーバーは不要だと感じています。
Steamのビルドアカウント
Steam上でビルドを作成可能になるにはまず、「アプリのメタデータの編集」および「アプリの変更をSteamに公開」という権限を持つSteamアカウントをパートナーアカウントに追加してください。 セキュリティ上の理由から、これらの権限だけがある専用のビルドアカウントを使用することを推奨します。必要に応じて、
https://store.steampowered.com/joinで新しいSteamアカウントを作成してください。
Steamworksアカウントの管理者であれば、Steamアカウントを追加し、必要な権限を付与することができます。 このプロセスについての詳細は、
Steamworksアカウントの管理を参照してください。 以下は、追加するアカウントの例です:

新規SteamPipeアプリの初期設定
以下のステップに従い、新規SteamPipeアプリを設定します:
- アプリケーションのAppIDを検索 (Steamworks内のホームページでアプリケーションを選択すると、見つけられます)
- アプリの一般的なインストール設定ページを開きます
- 1つ以上の起動オプションを定義します(ゲーム起動に必要なパスと任意の引数)。 (?) にマウスオーバーすることで各フィールドの情報が得られます。
以下の例は5つの起動オプションです。Windows用に2例、macOS用に2例、Linux用に1例です。
3つ目の起動オプションは、ユーザーが特定のDLCを所有している場合にのみWindowsで表示されます。

- デポページにアクセスして、このアプリに必要なデポを追加します。初期設定で、デポがすでにアプリケーションに設定済みの場合があります。
- 初期設定のデポをクリックし、デポの名前を(「ベースコンテンツ」または「Windowsコンテンツ」などの)的確で覚えやすいものに変更します。
- 言語固有のデポでない場合、言語設定は「すべての言語」のままにします。
- OS固有のデポでない場合、OS設定は「全OS」のままにしておいてください(オールインワンアプリ、PC、またはMacの場合、「全OS」のままにしておいてください)。 OS固有のゲームのデポに対してのみ設定します。
- 新しいデポを追加するをクリックして、追加のデポを指定します。
- 変更を保存するをクリックして、変更点を保存します。
- デポの定義が完了したら、公開ページから変更を公開します。
- 自分に所有権を与えるには、新規に定義されたデポをパッケージ内に格納してください。 Steam上の各ゲームには、パブリッシャーグループ内のメンバーアカウントに自動付与されるDeveloper Compパッケージがあります。
新しいデポを関連アプリ&DLCページ上の、パッケージ(または、これらのデポを持つ他のパッケージ)に追加することができます。
注: 実行可能ファイルが、メインインストールフォルダーのサブフォルダーにある場合は、実行可能ファイルフィールドにサブフォルダー名を追加します。 スラッシュやドットを先頭に使用しないでください。
プラットフォーム注記: 上述のとおり、macOSアプリケーションはアプリバンドル(Game.app)またはスクリプト/バイナリ(Game.app/Contents/MacOS/Game)のいずれかを指定することで起動できます。 一般的に、可能な場合にはアプリバンドル形式が好まれます。これは、Steam外から手動で起動されたのと同じようにmacOSが起動パラメーターをより正確に決定できるためです。
Appleシリコンデバイスのアプリバンドルを通して起動されるアプリケーションは、アプリケーションで利用可能な最高のアーキテクチャを起動するのに対し、バイナリの直接起動は、Steamプロセスと同じアーキテクチャ(現時点ではx86_64)を使用することにご留意ください。
SteamPipeアップロードのためのSDKの設定
ビルドをアップロードするマシンに最新バージョンのSteamworks SDKをダウンロードして解凍します。
SteamPipeツールは、2つの関連するサブディレクトリを含む
tools
フォルダー内のSDK内にあります。
ContentBuilder
ディレクトリは、ゲームコンテンツとSteamPipeビルドツールがある場所です。 このディレクトリには、次のサブディレクトリがあります:
- builder-デフォルトでは、コマンドラインバージョンのSteamであるsteamcmd.exeのみを含みます。
- builder_linux-Linuxバージョンのsteamcmdです。
- builder_osx-macOSバージョンのsteamcmdです。
- content-デポを構築するすべてのゲームファイルを含みます。
- output-ビルドログ、チャンクキャッシュ、中間アウトプットが保存されます。 注:このフォルダーは、いつでも削除または空にすることができますが、削除してしまうと、次のアップロードにかかる時間が長くなります。
- scripts-ゲームのデポを構築するための全ビルドスクリプトを配置する場所です。

ビルドシステムをブートストラップするために、プラットフォームのビルダーフォルダーでsteamcmd.exeを必ず一回直接実行してください。 デポを構築するのに必要な全ファイルが、ビルダーディレクトリに作成されます。
ContentServer
ディレクトリには、専用の
SteamPipeローカルコンテンツサーバーを実行するツールが含まれています。
macOS用SteamCmd
macOSでSteamCmdを有効にするには以下の手順に従ってください:
- ターミナルから\tools\ContentBuilder\builder_osxフォルダーを参照します
- chmod +x steamcmdを実行します
- 「bash ./steamcmd.sh」と入力します
- SteamCmdが実行されて最新のビルドにアップデートされSteamCmdプロンプトが表示されます
- 「exit」と入力してからreturnキーを押してプロンプトを終了します
その後、このドキュメントの以下の手順に従えば(必要に応じてパスの変更が必要です)、コンテンツをSteamにアップロードするためのデポとアプリ設定ファイルを作成できます。
SteamPipeビルド設定ファイルの作成
SteamPipeでアプリ用にファイルをアップロードするには、ビルドと含まれる各デポを記述するスクリプトを作成する必要があります。 以下のスクリプトの例は、Steamworks SDKの
Tools\ContentBuilder\scripts
フォルダーにあります。
SteamPipe GUIツール
Windowsで実行していて、構成ファイルの作成とビルドのアップロードに役立つGUIツールが必要な場合は、Steamworks SDKのtoolsフォルダー内のSteamPipeGUIを使用できます。 zipファイルには、使用方法に関する追加インストラクションが含まれています。
GUIツールを使用する場合は、SteamPipeシステムの仕組みをさらに理解するために、以下のセクションを読むことをお勧めします。
簡単なビルドスクリプト
最も基本的なビルドスクリプトから始めてみましょう。 この例では、ゲーム(AppID 1000)に1つのデポ(DepotID 1001)があり、コンテンツフォルダーとサブフォルダーからすべてのファイルをアップロードします。 そのために必要なビルドスクリプトは1つだけです。SDKに含まれる
「simple_app_build.vdf」
を見てみましょう。
"AppBuild"
{
"AppID" "1000" // あなたのAppID
"Desc" "This is a simple build script" // このビルドの内部的な説明
"ContentRoot" "..\content\" // このファイルの場所からの相対的なコンテンツのルートフォルダー
"BuildOutput" "..\output\" // ビルドログとビルドキャッシュファイル用のビルド出力フォルダー
"Depots"
{
"1001" // あなたのDepotID
{
"FileMapping"
{
"LocalPath" "*" // contentrootフォルダーのすべてのファイル
"DepotPath" "." // デポのルートにマップされます
"recursive" "1" // すべてのサブフォルダーを含めます
}
}
}
}
適宜ゲームに合ったAppIDとDepotIDに変更してください。 ビルドを開始するには、steamcmdを実行し、いくつかのパラメーターを渡す必要があります:
tools\ContentBuilder\builder\steamcmd.exe +login <account_name> <password> +run_app_build ..\scripts\simple_app_build.vdf +quit
The following steps occur during a SteamPipe build:
- steamcmd.exe will update itself to the latest version.
- steamcmd.exe is logging into the Steam backend using the given builder Steam account.
- アプリビルドの開始がMDS(マスターデポサーバー)に登録されます。それにより、ユーザーがこのアプリを修正するのに必要な権限があることを確認します。
- コンテンツフォルダーのファイルとデポビルドの設定ファイルで定義されたフィルタールールに基づき、アプリビルド内の各デポのファイルリストが生成されます。
- 各ファイルはスキャンされ、約1MBのチャンクに分割されます。 デポが以前に構築されていた場合、この分割プロセスでは、変更のないチャンクはできるだけそのまま維持されます。
- 新しいファイルのチャンクは圧縮され、暗号化されてからMDSにアップロードされます。
- このデポバージョンの最終マニフェストが生成されます。各マニフェストは一意の64ビットのマニフェストIDで識別されます。
- デポがすべて処理されると、MDSはこのアプリビルドの処理を終了し、グローバルビルドIDを割り当てます。
- 構築が完了すると、ビルドの出力先フォルダーに*.csm、と*.csdファイルができることがあります。 これらは一時ファイルですので削除することも可能ですが、これらがあるとその後のビルド時間が短縮できます。
Once the build is complete you can see it on your app builds page, in this case it would be
https://partner.steamgames.com/apps/builds/1000. There you can set that build live for the default branch or any beta branch and users will be able to download this update within a couple of minutes.
高度なビルドスクリプト
If your app has a lot of depots with complex file mapping rules, you can create a depot build script for each depot which will be referenced by the app build script. First let's take a look at available parameters in the app build script:
-
AppID
-ゲームのAppID。 アップロードを行うSteamパートナーアカウントには「アプリのメタデータ編集」権限が必要です。
-
Desc
-説明は、アプリ管理パネルの「ビルド」セクションでのみ表示されます。 これはビルドをアップロードした後、「ビルド」ページでいつでも変更できます。
-
ContentRoot
-ゲームファイルのルートフォルダーです。絶対パスまたはビルドスクリプトファイルからの相対パスを指定できます。
-
BuildOutput
-このディレクトリは、ビルドログ、デポマニフェスト、チャンクキャッシュ、および中間出力の保存先です。 最適なパフォーマンスを得るには、ビルドの出力に別のディスクを使用します。 これにより、ディスクへの入出力処理の負荷が分散され、コンテンツのルートディスクが読み取り要求を処理し、出力ディスクが書き込み要求を処理できるようになります。
-
Preview
-このタイプのビルドは、ログとファイルマニフェストのみをビルドの出力フォルダーに出力します。 プレビュービルドの作成は、アップロードスクリプトの反復処理やファイルマッピング、フィルター、およびプロパティが意図したとおりに機能していることを確認するのに良い方法です。
-
Local
-これをSteamPipeローカルコンテンツサーバー(LCS)のhtdocsパスに設定します。 LCSビルドはコンテンツをあなたのHTTPサーバーにのみ配置するので、Steamクライアントを使用してゲームのインストールテストをすることができます。
-
SetLive
-ビルドが成功した場合に、自動的にライブに設定されるベータブランチ名。空白の場合は設定されません。 「default」ブランチは自動的にライブに設定できないことに注意してください。 アプリ管理パネルから設定する必要があります。
-
Depots
-このセクションには、各デポのすべてのファイルマッピング、フィルター、ファイルプロパティか、またはデポごとの個々のスクリプトファイルへの参照が含まれます。
Example app build script
"app_build_1000.vdf"
is using all options:
"AppBuild"
{
"AppID" "1000" // あなたのAppID
"Desc" "Your build description here" // このビルドの内部的な説明
"Preview" "1" // プレビュービルドのみに設定し、何もアップロードしません
"Local" "..\..\ContentServer\htdocs" // コンテンツをSteamにアップロードせず、ローカルコンテンツサーバーに配置します
"SetLive" "AlphaTest" // このビルドをベータブランチでライブに設定します
"ContentRoot" "..\content\" // このスクリプトファイルからの相対的なコンテンツのルートフォルダー
"BuildOutput" "D:\build_output\" // 最適なパフォーマンスを得るために、ビルドキャッシュとログファイルを別のドライブに置きます
"Depots"
{
// 各デポのファイルマッピング情報は、別のスクリプト内にあります
"1001" "depot_build_1001.vdf"
"1002" "depot_build_1002.vdf"
}
}
This app build script references two depot build script files that specify all file mappings and file properties. The following instructions are available in a depot build script ( and also if the section is included directly into the app build script).
-
DepotID
-このセクションのDepotID
-
ContentRoot
-オプションで、デポごとにアプリビルドスクリプトからContentRootフォルダーを上書きします。
-
FileMapping
-これにより、単一のファイルまたは一連のファイルがローカルコンテンツルートからデポにマップされます。 デポにファイルを追加する複数のファイルマッピングが考えられます。 LocalPath
パラメーターは、コンテンツルートフォルダーへの相対パスであり「?」や「*」などのワイルドカードを含めることができます。 再帰検索
が有効の場合は、サブフォルダー内の一致するファイルにも適用されます。 DepotPath
パラメーターは、選択したファイルのデポ内での場所を指定します(特別なマッピング指定がない場合は「.」のみを使用します)
-
FileExclusion
-マップされたファイルを再度除外します。「?」や「*」などのワイルドカードを含めることができます。
-
InstallScript
-ファイルをインストールスクリプトとしてマークし、ビルドプロセス中にファイルに署名します。 Steamクライアントは、このデポをマウントするすべてのアプリケーションに対して署名を行う必要があることを認識しています。
-
FileProperties
-特別なフラグでファイルをマークします:
-
userconfig
-このファイルは、ユーザーまたはゲームによって変更されます。 これはアップデートにより上書きされず、ファイルの前のバージョンと異なる場合でも照合エラーを起こすことはありません。
-
versionedconfig
-userconfigに似ていますが、デポ内のファイルがアップデートされた場合、ユーザーのゲームがアップデートされるときにローカルファイルを上書きします。 デポ内のファイルのアップデートは、フォーマット変更やバグ修正など必要があるときのみにしてください。
Example depot build script
depot_build_1002.vdf
showing use of all options:
"DepotBuild"
{
"DepotID" "1002"
"ContentRoot" "C:\content\depot1002" // アプリビルドスクリプトからContentRootを上書きします
"FileMapping"
{
// 「.\bin」内のすべてのソースファイルとフォルダーは、デポ内の「.\executables」フォルダーにマップされます
"LocalPath" "bin\*"
"DepotPath" "executables\"
"Recursive" "1" // すべてのサブフォルダーを含めます
}
"FileMapping"
{
// \\audio内のオーディオファイルをドイツ語版で上書きする
"LocalPath" "localization\german\audio\*"
"DepotPath" "audio\"
}
"FileMapping"
{
// ドイツ語版のインストールスクリプトをデポルートフォルダーにコピーします
"LocalPath" "localization\german\german_installscript.vdf"
"DepotPath" "."
}
"FileExclusion" "bin\server.exe" // このファイルを除外します
"FileExclusion" "*.pdb" // あらゆる場所のすべての.PDBファイルを除外します
"FileExclusion" "bin\tools*" // bin\tools\以下のすべてのファイルを除外します
"InstallScript" "localization\german\german_installscript.vdf"
"FileProperties"
{
"LocalPath" "bin\setup.cfg"
"Attributes" "userconfig" // このファイルは実行時に変更されます
}
}
注意: You can name these scripts what ever you want, but we use the names
app_build_<AppID>
and
depot_build_<DepotID>
for consistency. If you know that you'll be building apps on this machine, it might be a good idea to create sub-directories in your scripts directory for each application, to help organize each application's build scripts.
Using SteamPipe In A CI/CD Environment
To setup steamcmd for continuous integration, or just on a machine or VM that will get re-imaged frequently, you'll need to include the config file that contains your login token. Follow these steps so that your initial login token is properly saved:
- Run "steamcmd.exe +login <username>"
- Enter your password, and the SteamGuard token
- Type "info", and you should see your account listed as connected
- Type "quit"
- For each future run, do not enter a password. Simply run "steamcmd.exe +login <username>"
- Be sure that the config file stored in <Steam>\config\config.vdf is saved and preserved between runs, as this file may be updated after a successful login
注意: If you do login again and provide your password, a new SteamGuard token will be issued and required to login.
Managing Updates
After your app releases to customers, your customers will be receiving the build marked as the Default build. When uploading a new build it's always a good idea to test it before shipping it to your customers, for more information on how to successfully do this see
Steam上でのテスト.
Debugging Build Issues
If your build wasn't successful, you should look in your output directory for error information, not the console where the build script was run. Most error information can be found in the *.log files.
You can use these Steam client commands and client-side files to debug issues:
-
"app_status [appid]"
-クライアント上の現在のアプリの状態を表示。
-
"app_info_print [appid]"
-このゲームの現在のSteamworks設定(デポ、起動オプションなど)を表示。
-
"app_config_print [appid]"
-このゲームの現在のユーザー設定(現在の言語、インストールディレクトリなど)を表示。
-
file "logs\content_log.txt"
-ログに記録されたすべてのSteamPipe操作とエラーを表示。
-
file "steamapps\appmanifest_[appid].acf"
-このアプリの現在のインストール状況を表示(KeyValuesフォーマット)。
Building Retail Install Discs
To build retail install disc for SteamPipe games, you must first setup a build project file.
In this example, the SKU file is called "sku_goldmaster.txt":
"sku"
{
"name" "Test Game Installer"
"appid" "202930"
"disk_size_mb" "640"
"included_depots"
{
"1" "202931"
"2" "202932"
}
}
Some tips to keep in mind:
任意でベータブランチからリテールインストーラーを構築する
The process above will create a retail installer based on the default branch. If you need to create an installer based on a beta branch, you must first create a beta branch named "baseline". Then use the following command to build from the baseline branch:
build_installer <project file> <target folder> <beta key> <beta pwd>
steamcmd ex: build_installer sku_goldmaster.txt "D:\retail_disks" baseline superSecret
script ex: steamcmd.exe +login user_name password +build_installer "..\Build\GameDataSku.txt" c:\destination beta_key beta_password +exit
リテール版インストーラーからDLCをインストールする
In some circumstances, you may wish to create a retail installer that includes your DLC packages. In such cases, the process to create the installer requires only a few changes.
In "sku_goldmaster.txt", include the DLC AppIDs under the "included_depots" section. Once you have run the "build_installer" process, find the generated sku.sis file for the installer and open it with a text editor.
Add the DLC AppID in the "apps" section. For example, if I had a game with AppID 1000 and DLC AppID 1010, I would adjust the "apps" section as follows:
"apps"
{
"0" "1000"
"1" "1010"
}
This will ensure that Steam checks for ownership of the DLC and prompt the user for a key if the DLC is not owned by the account that they are logging into on Steam.
複数のApp ID用のリテール版インストーラーを単一ディスク/インストールパッケージ上に作成する
To build a GM containing multiple Steam Pipe apps. Build each app installer one by one but point them all to the same output folder. Each build will merge itself with the already existing install image.
リテール版インストールディスクのカスタマイズ
See
Customizing a gold master for more details on customizing your retail install disk.
Preloading Games before Release
By default, all content is always encrypted, on all retail discs and on all content servers. Switching a game to preload mode means owners can download the content, but it stays encrypted on the users' disk and can't be played. Once the game becomes officially released, Steam will decrypt the preloaded content and the user can play the game.
Switching a game to preload mode is recommended in these cases:
- ゲームが実際に利用可能になる前に、製品キー付きでリテールディスクを出荷する場合(ゼロデイ著作権侵害)。
- 予約購入ゲームで、ファイルサイズが20GBを超える場合。
Please submit a ticket to Steam Publishing if you believe your game requires preloading.
Building DLC
DLC is built as a depot of the base game. See the
ダウンロードコンテンツ (DLC) documentation for more information.
Troubleshooting SteamPipe
steamcmd経由でログインする際に「Login Failure: Account Login Denied Failed」と表示される
Cause: Probably SteamGuard is preventing login. Resolution:
- ログインしようとしているアカウントに登録したメールアドレスをチェックして、Steamサポートからのメールを探してください。 メールのコードをコピーします。
- 次のSteamCMDを実行します:
set_steam_guard_code <code>
- SteamCMDからもう一度ログインしてください:
Steam>login <buildaccount> <password>
ダウンロードの問題の一般的なトラブルシューティング
- コンピューター、モデム、ルーターなどを再起動する。
- ファイアウォールの設定を確認する。 新システムはport 80(HTTP)とその他すべてのSteamポートを必要とします。必要なポートの一覧はこちらを参照してください。
- 一時的にローカルのウイルス対策、スパムブロックプログラムを無効にする。
- Steamクライアント内の設定->ダウンロード地域を確認する。 お住まいの地域と一致させてください。
- ダウンロードを中止して、アンインストールして再度ゲームをインストールする(マニフェストキャッシュを消去します)。
- Steamを終了し、Steamインストールフォルダー内のappcacheとdepotchacheという2つのフォルダーを消去する。
- Steamダウンロード地域をどこか遠い場所に設定する。 これは近くのコンテンツサーバーが破損したデータを提供している場合に有効です。
Mac/Linuxビルドがファイルをインストールしないのは 何故でしょうか。
If you're testing via Steam the installation of your game or application across multiple platforms, you may run into a situation where the build deploys on Windows but doesn't deploy any files on Mac or Linux despite your SteamPipe process being setup to upload Mac and/or Linux depots. There is a step that is easily missed which involves adding your alternate Depots to the Package being deployed. You can check what depots are included in a package via the following steps:
- Navigate to your App Admin page
- From the View Associated Items section, click All Associated Packages, DLC, Demos and Tools.
- Click on the title of the Package you're attempting to download
- Review the Depots Included section
- Use the Add/Remove Depots to ensure the correct set of Depots are assigned to the Package
There are a number of discussion threads about this that may also assist:
steamcmd.exeを実行すると、次のエラーが表示されます:「SteamUpdater:Steamの更新にはインターネットにアクセスする必要があります。 ネットワーク接続をご確認のうえ、もう一度お試しください。」
Resolution: Go to
Internet Options->
Connections->
Lan Settings and check
Automatically detect settings.
アプリのビルドを実行すると、以下のエラーが表示されます:「ERROR! Failed 'DepotBuild for scriptname.vdf' - status = 6.」
Possible Causes:
- アカウント上にアプリに対する権限がない。
- app_build.vdf内のappIDが正しいことを確認します。
- ビルドアカウントにそのappIDにおける適切な権限があることを確認します。
- SteamCMDがデポコンテンツを見つけられない。
- app_buildapp_buildスクリプト内のcontentrootの値が、スクリプトファイルの位置に対して有効なパスであることを確認します。
- depot_buildスクリプト内のLocalPathの値が、app_buildスクリプト内パスの位置に対して有効なパスであることを確認します。 パスに実際のコンテンツが含まれていることを確認します。
アプリのビルドを実行すると、以下のエラーが表示されます:「ERROR! Failed to get application info for app NNNNN (check login and subscription)」
This means that Steam can't retrieve information about the app, either because it doesn't exist or the user doesn't have access to the app.
- NNNNNがアプリ用に割り当てられたappIDであることを確認します。
- app_build.vdf内のappIDが正しいことを確認します。
- 新規のappIDの場合、Steamworksにおけるアプリ管理の設定が公開済みであることを確認します。 New apps should have a Steam Pipe install directory as well as a depot, both can be found in Edit Steamwork Settings; the installation directory is in General Installation under the Installation tab, and Depots is under the SteamPipe tab. All changes published is done through the publish tab.
- 以上すべて問題なければ、アカウントがappIDを所有していることを確認してください。
起動時に次のエラーが表示されます:「[AppName]のインストール中にエラーが発生しました」
Possible Causes:
起動時に「Error code 15」が表示されます
This is the CEG servers rejecting the request to CEG the exe. Check the release state on the game page. If it is not 'playable', you will need to request Steam keys that override the release state.
起動時に「Steamサーバーが混みあっているため、あなたのリクエストを処理することができません。
Error Code (2)」と表示されます
This is the CEG servers failing to find a matching CEG exe. Double check that you have a working CEG executable on the CEG tab of your app admin. Click the 'status' button to make sure that it's propped.
SteamCMDコマンドが何なのか、またはどのように使うかを思い出せません。
Use the 'find' command in steamcmd to search for any steamcmd command. It will do partial matching on the command name and it will list out the command syntax.
Steam>find build_installer
ConVars:
Commands:
build_installer : <project file> <target folder> <beta key> <beta pwd>