Steamworks ドキュメンテーション
Steamへのアップロード

SteamPipeコンテンツシステムの概説

SteamPipeは、Steamのゲーム/アプリケーションコンテンツシステムです。 SteamPipeは、次のような機能を備えています:
  • 効率的かつ迅速なコンテンツ配信
  • 複数のビルドのテストを可能にする、無制限のパブリックおよびプライベート「ベータ」ブランチ
  • ウェブベースによるシンプルなビルド管理 - 数クリックで、新規ビルドのリリースまたは以前のビルドへのロールバックを実行
  • ライブ設定前にビルドのアップデートサイズを確認
  • 複数のアプリケーション間でのコンテンツを共有
  • パブリックまたはベータコンテンツから インストーラーディスクを構築
  • アップデートのダウンロードの開始後も、ゲーム/アプリをオフラインで使用可能
  • すべてのコンテンツを常に暗号化し、アクティブでないバージョンは顧客からは見えません
  • 開発中に使用可能なSteamPipe ローカルコンテンツサーバー
注: SteamPipeにはいくつかの重要な概念がありますので、先に進む前に アプリケーション の内容を理解しておいてください。 個々がどのように組み合わさるのかについて、基本概念を理解しておくだけでも、製品を Steam にアップロードする際には非常に役立ちます。

Steamworksビデオチュートリアル - Steampipeでのゲームの構築

このチュートリアルでは、Steam 用のサンプルアプリケーションの構築を通じて SteamPipe とその使い方の手順を解説します。
https://www.youtube.com/watch?v=SoNH-v6aU9Q

Steamworksビデオチュートリアル - 新しいプラットフォームと言語の追加

このチュートリアルでは、アプリにデポを追加することで、ゲームに新しいプラットフォームや言語を追加する手順を解説します。
https://www.youtube.com/watch?v=PShS32hcing

SteamPipeの技術概説

SteamPipeはHTTPプロトコルを使用してコンテンツを配信します。 ダウンロードは通常のウェブトラフィックを使って行われるため、顧客とSteamサーバーの間にサードパーティーHTTPキャッシュがある場合、ダウンロードスピードは向上します。 コンテンツを弊社のコンテンツネットワークに追加できる外部CDNプロバイダーにホストさせることもできます。 ほとんどの顧客のファイアウォールはHTTP トラフィックを許可し、ダウンロードをブロックすることはありません。

SteamPipeには、既存のコンテンツファイルの修正部分だけを変更する、バイナリ差分に基づく効率的なパッチアルゴリズムが搭載されています。 コンテンツがアップデートされると、こうした差分のみが送信されます。 こうすることで、開発者とユーザーによる転送量を少なく抑え、転送時間も短くすることができます。 ほとんどのパートナーは、プライベートブランチ上でビルドを効率よくパッチできるため、 SteamPipe ローカルコンテンツサーバー は不要だと感じています。

Steamのビルドアカウント

Steam上でビルドを作成する前に、「アプリのメタデータを編集する」および「Steam にアプリの変更を公開する」という権限を持つSteamアカウントをパートナーアカウントに追加してください。 セキュリティ上の理由から、専用のビルドアカウントを置くことをお勧めします。必要に応じて、https://store.steampowered.com/joinで新しいSteamアカウントを作成してください。

Steamworksアカウントの管理者であれば、Steamアカウントを追加し、必要な権限を付与することができます。 このプロセスについての詳細は、Steamworks アカウントの管理 を参照してください。 以下は、アカウント追加の例です:

create_build_account.png

新規SteamPipe アプリの初期設定

以下のステップに従い、新規SteamPipeアプリを設定します:
  1. アプリケーションのAppIDを検索 (Steamworks内のホームページでアプリケーションを選択すると、見つけられます)
  2. アプリの 一般的なインストール設定 ページを開きます。
  3. 1 つ以上の起動オプションを定義します (ゲーム起動に必要なパスと任意の引数)。 フィールドの詳細を知るには(?) の上にマウスポインタを重ねてください。

    下のサンプルは 4 つの起動オプションを示しており、2 つが Windows向け、残りがそれぞれmacOSとLinux向けです。 起動オプション3はユーザーがWindows上に指定のDLCを所有している場合にのみ表示されます。

    updatedlaunchoptions.png
  4. デポページにアクセスして、このアプリに必要なデポを追加します。初期設定で、デポがすでにアプリケーションに設定済みの場合があります。
    1. 初期設定のデポをクリックし、デポの名前を ("ベースコンテンツ" または "Windowsコンテンツ" などの) 的確で覚えやすいものに変更します。
    2. 言語固有のデポでない場合、言語設定は「すべての言語」のままにします。
    3. OS固有のデポでない場合、OS設定は「全OS」のままにしておいてください(オールインワンアプリ、PC、またはMacの場合、「全OS」のままにしておいてください)。 OS固有のゲームのデポに対してのみ設定します。
    4. 新しいデポを追加するをクリックして、追加のデポを指定します。
    5. 変更を保存するをクリックして、変更点を保存します。
  5. デポの定義が完了したら、公開ページから変更を公開します。
  6. 自分に所有権を与えるには、新規に定義されたデポをパッケージ内に格納してください。 Steam 上の各ゲームには、パブリッシャーグループ内のメンバーアカウントに自動付与されるDeveloper Compパッケージがあります。
    新しいデポをAssociated Packages & DLCページ上の、パッケージ (または、これらのデポを持つ他のパッケージ) に追加することができます。
注:実行ファイルがメインのインストールフォルダのサブフォルダ内にある場合には、実行ファイルフィールド内にサブフォルダ名を追加してください。 スラッシュやドットを先頭に使用しないでください。

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 - ゲームのデポを構築するための全ビルドスクリプトを配置する場所です。
steampipebuilddir.png

ビルドシステムをブートストラップするために、steamcmd.exeを必ず一回実行してください。 ゲームデポを構築するのに必要な全ファイルが、ビルダーディレクトリに作成されます。

ContentServer ディレクトリには、専用のSteamPipe ローカルコンテンツサーバーを実行するツールが含まれています。

macOS向けSteamCmd

macOSでSteamCmd を有効にするには以下の手順に従ってください:
  1. ターミナルから \ContentBuilder\builder_osx\osx32 フォルダを参照します
  2. chmod +x steamcmdを実行します
  3. 親フォルダ (tools\ContentBuilder\builder_osx) を参照します
  4. 「bash ./steamcmd.sh」と入力します
  5. SteamCmdが実行されて最新のビルドにアップデートされSteamCmdプロンプトが表示されます
  6. 「exit」と入力してからreturnキーを押してプロンプトを終了します
その後、このドキュメントの以下の手順に従えば(必要に応じてパスを変更してください)、コンテンツをSteamにアップロードするためのデポとアプリ設定ファイルを作成できます。

SteamPipeビルド設定ファイルの作成

SteamPipeでアプリケーションをアップロードするには、ビルドとそれに含まれる各デポを記述するスクリプトを作成する必要があります。 ContentBuilder\scriptsフォルダに一つのデポを持つアプリ用の簡単なスクリプトの例があります。

注意: これらのスクリプトには任意の名前を付けることができますが、一貫性を保つために app_build_<AppID>depot_build_<AppID> という名前を使用しています。 このマシン上で複数のアプリ用のデポを構築する予定がある場合には、各アプリケーションのビルドスクリプトを整理しやすくするため、各アプリケーション用にスクリプトディレクトリにサブディレクトリを作成することをお勧めします。

SteamPipe GUIツール

Windows上で実行している場合、設定ファイルの作成とビルドのアップロードに役立つGUI ツールがSteamworks SDKのtoolsフォルダにあります。 zipファイルには、使用方法に関する追加インストラクションが含まれています。

GUIツールを使用する場合は、SteamPipeシステムの仕組みをさらに理解するために、以下のセクションを読むことをお勧めします。

デポのビルドスクリプト

まず、アップロード予定のデポごとにデポビルドスクリプトを作成します。 depot_build_1001.vdfスクリプトを複製し、アップロードするデポ ID に名前を変更します。

ビルドスクリプトの例:
"DepotBuildConfig" { // スクリプトがアップロードするビルドIDを設定。 "DepotID" "1001" // すべてのコンテンツのためのルートを設定。 // すべての関連パスは以下に指定(FileMappingエントリ内のLocalPathおよびFileExclusionパス) // がこのルートに対してリゾルブ。 // ContentRootを定義しなければ、次のように仮定 // このスクリプトファイルのロケーション:これを望んではいないでしょう "ContentRoot" "D:\MyGame\rel\master\" // サイキ的にすべてのファイルを含む "FileMapping" { // これはフルパス、あるいはContentRootからの相対パス "LocalPath" "*" // ゲームのインストールフォルダからのパス "DepotPath" "." // LocalPathにワイルドカードが含まれていれば、これを設定することは // LocalPathのサブディレクトリ内のすべてのマッチするファイルもまた // 含まれる "recursive" "1" } // シンボルファイルをすべて除外 // フルパス、又はContentRootからのパス "FileExclusion" "*.pdb" }

注: デポビルドスクリプトの「ContentRoot」を設定するとアプリのビルドスクリプト内の「ContentRoot」をオーバーライドします。

アプリのビルドスクリプト

デポビルドスクリプトを設定したら、ビルドの詳細を記述するアプリのビルドスクリプトが必要になります。 まずはapp_build_1000.vdfスクリプトを複製し、ビルドするアプリケーションIDに名前を変更します。

SteamPipeがサポートするビルドの種類はこちら:
  • プレビュー - このビルドタイプは、ログとマニフェストファイルのみを出力します。 プレビュービルドの構築は、デポのビルド設定ファイルの反復処理に役立ちます。
  • ローカル - doclink=sdk/uploading/local_content_server]
[/doclink]用のビルドです。 LCS (ローカルコンテンツサーバー) にアップロードしたLCSビルドは、Steam クライアントを使用してゲームのインストールテストをすることができます。
  • SteamPipe - SteamPipeは実際にSteamにアップロードされたデポを構築します。 このビルドを顧客がダウンロードするには、公開に設定する必要があるため、既にリリース済みのゲームに対しても安全に実施できます。
  • [/list]

    アプリのビルドスクリプトの例:
    "appbuild" { // このスクリプトがアップロードするapp IDを設定。 "appid" "1000" // このビルドの説明。 // この説明はApp管理>「Steamworks設定を編集」 >「SteamPipeタブ」>ビルドでのみ表示。 // 説明は、「あなたのビルド」ページにビルドをアップロードした後ならいつでも変更可能。 "desc" "Your build description here" // プレビュービルドの有効化/無効化 // SteamPipe の初期セットアップ中はプレビュービルドの使用を推奨。 // デポマニフェストが正しいファイルを含むことを保証することが目的。 "preview" "1" // 有効化されている場合には、ローカルコンテンツサーバーのファイルパス "local" "" // ビルド構築後に自動でブランチ名をライブに設定、未設定の場合は空。 // 「デフォルト」ブランチは自動でライブに設定できません。 アプリ管理パネルから実施します。 "setlive" "" // 次のパスはスクリプトの位置に対して絶対又は相対的です。 // ディレクトリはビルドログ、チャンクキャッシュ、中間出力の位置となります。 // ここに保管されたキャッシュは、差分を使うことで将来のSteamPipeアップロードの完了を素早くします。 "buildoutput" "..\output\" // コンテンツフォルダーのroot。 "contentroot" "..\content\" // このビルドに含まれたビルドのリスト。 "depots" { "1001" "depot_build_1001.vdf" } }

    デポの構築

    ビルドを始めるには、Steamworksのビルドアカウント/パスワード (上記参照) とアプリのビルドスクリプトへのパスを盛り込んだ形に run_build.bat ファイルを編集してください:
    builder\steamcmd.exe +login "account" "password" +run_app_build ..\scripts\[build_script_name].vdf +quit

    注: ビルドの初回実行時には、Steamガードによりその実行が阻まれる場合があります。 Steamガードによってログインが失敗した場合は、メールで送られた Steamガードコードを確認し、steamcmdを次のように実行し再度ログインしてください: steamcmd.exe "set_steam_guard_code <code>"。 Steamガードでログインに成功すると、sentryファイルによって、正規のログインであることが確認されます。

    頻繁に再イメージされるマシーンまたは仮想マシンからsteamcmdを使用しているのであれば、画像内にsentryファイルを含めることでSteamガードが毎回プロンプトされないようにすることができます。 sentryファイルは<Steam>\ssfn<hashOfNumbers>内に格納されています。

    run_build.bat を実行すると、ビルドスクリプトファイル内で指定されたディレクトリにビルドの出力が生成されます。 プレビュービルドが期待通りのマニフェストを作成したら、アプリのビルドスクリプトで、"preview" "0" を実行してください。

    SteamPipeビルドプロセスでは以下の手順が発生します:
    1. Steamcmd.exeは、与えられたビルダーのSteamアカウントを使用して Steamバックエンドにログインします。
    2. アプリビルドの開始がMDS(マスターデポサーバー)に登録されます。それにより、ユーザーがこのアプリを修正するのに必要な権限があるかどうかを確認します。
    3. コンテンツフォルダのファイルとデポビルドの設定ファイルで定義されたフィルタールールに基づき、アプリビルド内の各デポのファイルリストが生成されます。
    4. 各ファイルはスキャンされ、約1MB のチャンクに分割されます。 デポが過去に構築されていた場合、この分割プロセスでは、変更のないチャンクはできるだけそのまま維持されます。
    5. 新しいファイルのチャンクは圧縮され、暗号化されてからMDSにアップロードされます。
    6. このデポバージョンの最終マニフェストが生成されます。各マニフェストは一意の64ビットのマニフェストIDで識別されます。
    7. デポがすべて処理されると、MDSはこのアプリビルドの処理を終了し、グローバルビルドIDを割り当てます。
    8. 構築が完了すると、ビルドの出力先フォルダに *.csm 、または *.csd ファイルが作られます。 これらは一時ファイルで削除することも可能ですが、これらがあるとその後のビルド時間が短縮できます。

    アップデートの管理

    顧客へのアプリのリリース後、顧客はデフォルトビルドとマークされたビルドを受け取ることになります。 新しいビルドをアップロードするときは、顧客に一般公開する前にテストすることをお勧めします。テストに関する詳細は、Steam 上でのテストを参照してください。

    高度なファイルマッピングルール

    デポにファイルを追加する複数のファイルマッピングが考えられます。 それらは、最初にリストされなければなりません。
    ファイルとサブフォルダはフィルタ式で除外できます。
    Steamインストールスクリプトは、ビルドプロセス中にマーク付けされるため、Steamクライアントは、デポをマウントするアプリケーションに対してそれらを実行すべきであることを認識します。
    ファイルまたはフォルダは再マップすることが可能で、コンテンツフォルダのサブフォルダはデポのどこにマップしても問題ありません。
    ファイルは、特別なフラグでタグ付けすることができます:
    • userconfig - このファイルは、ユーザーまたはゲームによって修正されます。 これはアップデートにより上書きされず、ファイルの前のバージョンと異なる場合でも照合エラーを起こすことはありません。
    • readonly - このファイルは、クライアントのファイルシステムで読み込み専用としてマークされます。
    • hidden - このファイルは、クライアントのファイルシステムで非表示としてマーク付けされます。
    • executable - 実行ファイルです (OS X 限定)
      "DepotBuildConfig" { "DepotID" "202931" "FileMapping" { // 動画ファイルをオーバーライド \\対象はドイツ語バージョン "LocalPath" "localization\\german\\videos\\*" "DepotPath" "videos\\" } "FileMapping" { // 音声ファイルをオーバーライド \\対象はドイツ語バージョン "LocalPath" "localization\\german\\audio\\*" "DepotPath" "audio\\" } "FileMapping" { "LocalPath" "localization\\german\\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\\server.exe" // このファイ不を除外 "FileExclusion" "*.pdb" // 場所を問わずすべての .PDB ファイルを除外 "FileExclusion" "maps\\testroom*" // maps/testroom/下のすべてのファイルを除外 "InstallScript" "localization\\german\\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\\setup.cfg" "Attributes" "userconfig" // このファイルはランタイム中に修正されるe } }

    ビルドの問題をデバッグ

    ビルドがうまくいかなかった場合、ビルドスクリプトが実行されたコンソールではなく、エラー情報を出力ディレクトリで探してください。 ほとんどのエラー情報は *.ログファイルで見つかります。
    Steamクライアントコマンドとクライアントサイドのファイルを使って問題のデバッグができます:
    • "app_status [appid]" - クライアント上の現在のアプリの状態を表示。
    • "app_info_print [appid]" - このゲームの現在のSteamworks設定(デポ、起動オプションなど)を表示。
    • "app_config_print [appid]" - このゲームの現在のユーザー設定(現在の言語、インストールディレクトリなど)を表示。
    • file "logs\content_log.txt" - 記録されたすべての重たいオペレーションとエラーをリスト。
    • file "steamapps\appmanifest_[appid].acf" - このアプリの現在のインストール状況を表示(KeyValuesフォーマット)。

    SteamPipeのための効率的なデポの構築

    以前のSteamコンテンツシステムは、パッチアップデートをファイルレベルで行っていたため、仮に1バイトの変更があったとすると、すべてのユーザーが新しいファイル全体を受け取る必要がありました。 ゲームが複数のパックファイル(一つの大きなファイルに格納されたゲームコンテンツの集合体)を使用していた場合に、これは非常に非効率的です。 パックファイルのサイズは簡単に1GBを超えることがあるため、アップデートによって不要な大きなダウンロードが発生していました。 大容量のダウンロードを避ける一般的な方法は、新しいパックファイルを追加して、既に配布済みのパックファイルのコンテンツを上書きすることです。 これは、アップデートに対して使える手法ですが、新規ユーザーにとっては既にパッチ対応された不要なコンテンツをダウンロードすることを意味します。

    新規のコンテンツシステムは、各ファイルをおよそ1-MBのチャンクに分割することでこの問題を解決しました。 各チャンクは圧縮され、Steamコンテンツシステムによる配信の前に暗号化されます。 ゲームコンテンツが大型の重複するパーツがある場合、これらのチャンクは再使用されるため、ユーザーは一度ダウンロードするだけで済みます。 しかしながら、このシステムの真の強みは、効率的なアップデートパッチを構築できることです。 システムがパッチを構築する間、新コンテンツにおける既知のチャンクがスキャンされます。 既知のチャンクが見つかれば、再利用されます。 こうすることで、大きなファイル内に数バイトの大きさの変更や追加があった場合、ユーザーがダウンロードするべきは差分だけとなります。

    ほとんどのケースで問題なく実行できますが、ゲームのコンテンツレイアウトをデザインする際に避けるべき事項がいくつかあります。 ゲームデータの圧縮や暗号化はしないでください。 これはSteamコンテンツシステムが既に配信中のダウンロードやリテール版ディスクで実行済みです。 重複で行うと、差分パッチの効力が減少します。 複数のデータファイルを一つのパックファイルに格納する場合には、それぞれの再パッケージングにおいて、不要な変更が無いようにしてください。 問題として挙げられるのは、オリジナルのソースファイルのフルネームをディスクに含むことです。ファイルの名称はビルドマシーンに基づいて付けられるため、問題となります。 その他、各ファイルにビルドのタイムスタンプを含むことがあげられます。 可能であれば、パックファイルの最後に新コンテンツを追加して、存在するファイルの順序を保ってください。 また、パックファイルのメタデータ(各ファイルのオフセットとサイズ)を一つの場所に格納し、コンテンツファイルと共に散在させないようにしてください。 BeyondoCompareのようなバイナリ差分チェックツールを使って、パックファイルの二つのビルドを比べ、何百もの不要な変更が現れないようにしてください。

    以上のルールに従えば、パッチのサイズを最小化でき、新コンテンツのみがダウンロードされるようになります。 こうすることで、顧客の満足度は高まり、また、アップデートを更に出荷することで製品の質を高めることができます。

    リテール版インストールディスクの構築

    SteamPipe ゲーム用にリテール版インストールディスクを構築するには、ビルド用のプロジェクトファイルを最初に設定する必要があります。
    この例では、SKU ファイルには「sku_goldmaster.txt」という名前が付けられています:
    "sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
    覚えておくべき注意点:
    • リテール版ディスクのイメージを書き込む新しいフォルダを作成してください。例 "D:\retail_disks" このincluded_depotsセクション内のデポのみが追加され、除外セクションは無くなります。
    • -dev と-console コマンドラインパラメーターと一緒にSteam.exeを使用するか、steamcmd.exe を使ってインストーラーイメージを作成してください。 いずれの場合も、"build_installer" コマンドを使用してください。
    • ゲームとリテールディスクに収録する予定のゲームと全デポを所有するSteamアカウントでログインします。 それ以外は、アカウントに特別な権限は必要なく、誰でもビルドインストーラーディスクを作成できます。
    • Steam.exeを使用する場合、その他すべてのダウンロードは終了してください。
    • コンソールページで、build_installerコマンドを実行します:
      build_installer sku_goldmaster.txt "D:\retail_disks"
      すべてのデポが再ダウンロードされるため、初めての時にはビルドには時間がかかるものです。
    • ローカルコンテんツサーバーを使用してゴールドマスターをビルドするには、次を実行します:
      @localcontentserver "webserver"
      build_installer sku_goldmaster.txt "D:\retail_disks" local
      「リテール版インストールディスク」とローカルのゲームのバックアップは基本的に同じなので、出力されたものは「バックアップ」を参照します。
    • 「Backup finished for AppID...」という表示が出れば、インストールディスクのイメージの完成です。 バックアップビルドの詳細については、logs\backup_log.txtを参照してください。
    • 「D:\retail_disks」内に新しいフォルダ (Disk_1、Disk_2 など) が作成され、「disk_size\mb」で指定した通り、それぞれは 640 MB 以下の大きさになります。 各ディスクフォルダに、それぞれのデポ用に「sku.sis」ファイルと .csd および .csm が作成されます。 より大きなデポの場合は、複数のディスクに収録されることになります。 すべてのリテール版インストールディスクのコンテンツは、ローカルのゲームバックアップファイルとは異なり、常に暗号化されます。 SDK GM設定ファイル(setup.exe, setup.ini など)を最初のディスクのフォルダにコピーすると、リテール版ディスクのインストーラーが完成します。
    • OS X用のGMを作成する場合には、必ず、Mac上の goldmaster/disk_assets/SteamRetailInstaller.dmgイメージを開くようにしてください。 そして、その中にあるアプリをあなたのメディアのルートにコピーします。 また、インストーラーを見分けやすくするために、インストールアプリの名前を変更したり、アイコンのブランド化や、ウィンドウの装飾をお勧めします。
    • OS X用のマルチディスクGM を作成する場合は、各ディスクのボリューム名を一致させてください。 ボリューム名はマウントパスの一部となるため、名前が一致しない場合、インストーラーが次のディスクを見つけることができません。

    任意でベータブランチからリテールインストーラを構築する

    上記のプロセスにより、デフォルトブランチに基づいて、リテール版インストーラーが作成されます。 ベータブランチに基づいてインストーラーを作成する必要がある場合、まずは 「baseline」と名付けたベータブランチを作る必要があります。 そして、次のコマンドを使用してbaselineブランチからビルドを作成します。
    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をインストールする

    場合によっては、DLCパッケージを含むリテール版インストーラーを作成しなければならない状況があるかもしれません。 そうした場合でも、インストーラーの作成プロセスを少し変更するだけで、作成できます。
    "sku_goldmaster.txt", 内の、"included_depots"セクション下にDLCのAppIDを追加します。 "build_installer"プロセスを実行したら、インストーラー用に作成されたsku.sisファイルを見つけ、テキストエディタで開きます。
    DLCのAppIDを"apps"セクションに追加します。 たとえば、AppID 1000 と DLC AppID 1010 のゲームがある場合には、次のように 「app」セクションを調整します:
    "apps" { "0" "1000" "1" "1010" }
    SteamはDLCの所有を確認し、ログイン済みでDLCを所有していないアカウントに対してはキーを入力するためのプロンプトを開きます。

    複数のApp ID用のリテール版インストーラーを単一ディスク/インストールパッケージ上に作成する

    複数のSteam Pipeアプリを含む GM を作成するには、 各アプリのインストーラーを1つずつ構築し、それぞれを同一の出力フォルダーに指定してください。 各ビルドは既存のインストールイメージと統合されます。

    リテール版インストールディスクのカスタマイズ

    リテール版インストールディスクのカスタマイズに関する詳細については ゴールドマスターのカスタマイズを参照してください。

    リリース前のゲームのプリロード

    デフォルトでは、全コンテンツは、すべてのリテールディスクとコンテンツサーバー上で必ず暗号化されています。 ゲームをプリロードモードに切り替えると、所有者はコンテンツをダウンロードできますが、コンテンツはユーザーのディスク上で暗号化されたままであり、プレイできません。 ゲームが正式にリリースされると、Steamはプリロードされたコンテンツを復号化し、ユーザーはゲームをプレイすることができるようになります。

    次の場合に、ゲームをプリロードモードに切り替えることを推奨します:
    • ゲームが実際に入手可能になる前に、製品キー付きでリテールディスクを出荷する場合 (ゼロデイ著作権侵害)。
    • ファイルサイズが 20GBを超える予約購入ゲームの場合。

    ゲームでプリロードが必要な場合は、Steamパブリッシングへチケットを提出してください。

    DLCの構築

    DLCはベースゲームのデポとして構築されます。 詳細はダウンロードコンテンツ (DLC)を参照してください。

    SteamPipeのトラブルシューティング

    steamcmd経由でログインする際に「Login Failure: Account Logon Denied Failed」と表示される

    原因:おそらくSteamガードがログインを妨げています。 解決方法:
    • ログインしようとしているアカウントに登録したメールアドレスをチェックして、Steamサポートからのメールを探してください。 メールのコードをコピーします。
    • 次のsteamcmdを実行します: set_steam_guard_code <code>
    • steamcmdからもう一度ログインしてください: Steam>logon <buildaccount> <password>

    ダウンロードの問題の一般的なトラブルシューティング

    • コンピュータ、モデム、ルーターなどを再起動する
    • ファイアウォールの設定を確認する。 新システムはport 80 (HTTP) そその他すべてのSteamポートを必要とします。 必要なポートの一覧は こちらを参照してください。
    • 一時的にローカルのアンチウィルス、スパムブロックプログラムを無効にする。
    • Steamクライアント内の設定->ダウンロード地域を確認する。 お住いの地域と一致させてください。
    • ダウンロードを終了して、アンインストールして再度ゲームをインストールする(マニフェストキャッシュを消去します。)
    • Steamを終了し、Steamインストールフォルダ内のappcacheとdepotchacheという二つのフォルダを消去する。
    • Steamダウンロード地域をどこか遠い場所に設定する。 これは近くのコンテンツサーバーが破損したデータを提供している場合に有効です。

    Mac・Linuxビルドがファイルをインストールしないのは 何故でしょうか。

    Steam経由で、複数のプラットフォームに渡るゲームやアプリケーションをインストールしようとしている場合、Windows用のビルドではファイルは展開し、SteamPipeプロセスがMac・Linuxデポをアップロードする用設定されているにも関わらず、Mac・Linux用のファイルが展開しないことがあります。 これは、展開されているパッケージに、異なるデポを加えてしまうという間違い安いステップがあるからです。 次のステップで、どのデポがどのパッケージに含まれているかを確認できます:
    1. ゲームのアプリ管理ページを開きます
    2. 「関連する全てのパッケージ、DLC、体験版、ツール」をクリックします。
    3. ダウンロードしようとしているパッケージのタイトルをクリックします。
    4. 含まれるデポセクションを確認します。
    5. デポの追加/削除ボタンを使って、パッケージに正しいデポが割り当てられていることを確認します。
    掲示板に訳に立つ情報がたくさん掲載されています:

    steamcmd.exe を実行すると、次のエラーが表示されます: "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again."

    解決策: インターネットオプション->接続->Lanの設定を開き自動的に設定を検出するを確認して下さい。

    アプリのビルドを実行すると、以下のエラーが表示されます: "ERROR! Failed 'DepotBuild for scriptname.vdf' - status = 6."

    考えられる原因:
    • アカウント上にアプリに対する権限が無い。
      • 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)"

    これは、ビルドが存在しないか、アプリへのアクセスがユーザーに付与されていないため、Steamがアプリ情報を取得できないことを意味します。
    • NNNNN がアプリ用に割り当てられたapp IDであることを確認します。
    • app_build.vdf内のappIDが正しいことを確認します。
    • 新規のappIDの場合、Steamworksにおけるアプリ管理の設定が公開済みであることを確認します。 新規アプリは設定タブ、デポタブのデポ、そして公開タブの公開されたすべての変更に SteamPipe のインストールディレクトリがあるはずです。
    • 以上すべて問題なければ、アカウントがapp IDを所有していることを確認してください。

    起動時に次のエラーが表示される:"An error occurred while installing [AppName] (Invalid content configuration)"

    考えられる原因:

    起動時に"Error code 15" が表示される

    CEGサーバーがCEGに出されたexeリクエストを拒否していることを意味します。 ゲームページでリリース状況を確認してください。 それが「プレイ可能」ではない場合、リリースステータスを上書きする Steamキーをリクエストする必要があります。

    起動時に"The Steam Servers are too busy to handle your request... Error Code (2)" と表示される

    CEGサーバーがマッチするCEG exe を見つけられないことを意味します。 アプリ管理>セキュリティタブ>CEGで、作動するCEG exeがあることを確認してください。ステータスボタンを使って、設定が正しいことを確認してください。

    steamcmd コマンドが何か、またはどのように作動するか思い出せません。

    steamcmdの「find」コマンドを使用して、steamcmd コマンドを検索できます。 コマンド名を部分的にマッチングさせ、コマンドの構文リストを作成できます。
    Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>