Steamworks ドキュメンテーション
Steamへのアップロード
以下は、Steamにコンテンツを配信するためのValveのツール、SteamPipeの使い方の説明です。 ゲームをアップデートするためのベストプラクティスの詳細については、こちらUpdating Your Game - Best Practicesをご覧ください。

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プロトコルを使用してコンテンツを配信します。 ダウンロードは通常のWebトラフィックを使って行われるため、顧客と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でアプリ用にファイルをアップロードするには、ビルドとそれに含まれる各デポを記述するスクリプトを作成する必要があります。 ここに表示されているスクリプトの例は、Steamworks SDKのTools\ContentBuilder\scriptsフォルダーにあります。

SteamPipe GUIツール

Windows上で実行している場合、設定ファイルの作成とビルドのアップロードに役立つGUIツールがSteamworks SDKのtoolsフォルダーにあります。 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

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

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

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


ビルドが完了すると、アプリのビルドページに表示されます(この例では、https://partner.steamgames.com/apps/builds/1000)。 そのページでデフォルトブランチ、または任意のベータブランチのビルドをライブに設定することができ、ユーザーは数分でこのアップデートをダウンロードできるようになります。

高度なビルドスクリプト


アプリに、複雑なファイルマッピングルールを持つデポが多数ある場合は、アプリのビルドスクリプトによって参照されるデポごとのデポビルドスクリプトを作成できます。 まず、アプリのビルドスクリプトで使用可能なパラメーターを見てみましょう:

  • AppID -ゲームのAppID。 アップロードを行うSteamパートナーアカウントには「アプリのメタデータ編集」権限が必要です。
  • Desc -説明は、アプリ管理パネルの「ビルド」セクションにのみ表示されます。 これは「ビルド」ページでビルドをアップロードした後、いつでも変更できます。
  • ContentRoot -ゲームファイルのルートフォルダーです。絶対パスまたはビルドスクリプトファイルからの相対パスを指定できます。
  • BuildOutput -このディレクトリは、ビルドログ、デポマニフェスト、チャンクキャッシュ、および中間出力の保存先です。 最適なパフォーマンスを得るには、ビルドの出力に別のディスクを使用します。 これにより、ディスクへの入出力処理の負荷が分散され、コンテンツのルートディスクが読み取り要求を処理し、出力ディスクが書き込み要求を処理できるようになります。
  • Preview -このタイプのビルドは、ログとファイルマニフェストのみをビルドの出力フォルダーに出力します。 プレビュービルドの作成は、アップロードスクリプトの反復処理やファイルマッピング、フィルター、およびプロパティが意図したとおりに機能していることを確認するのに良い方法です。
  • Local -これをSteamPipeローカルコンテンツサーバー(LCS)のhtdocsパスに設定します。 LCSビルドはコンテンツをあなたのHTTPサーバーにのみ配置するので、Steamクライアントを使用してゲームのインストールテストをすることができます。
  • SetLive -ビルドが成功した場合に、自動的にライブに設定されるベータブランチ名。空白の場合は設定されません。 「default」ブランチは自動的にライブに設定できないことに注意してください。 アプリ管理パネルから設定する必要があります。
  • Depots-このセクションには、各デポのすべてのファイルマッピング、フィルター、ファイルプロパティか、またはデポごとの個々のスクリプトファイルへの参照が含まれます。

すべてのオプションの使用しているアプリビルドスクリプト例「app_build_1000.vdf」
"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" } }

このアプリビルドスクリプトは、すべてのファイルマッピングとファイルプロパティを指定する2つのデポビルドスクリプトファイルを参照します。 以下の設定がデポビルドスクリプトで利用できます(アプリビルドスクリプトにセクションが直接含まれている場合も同様に利用できます)。

  • DepotID -このセクションのDepotID
  • ContentRoot -オプションで、デポごとにアプリビルドスクリプトからContentRootフォルダーを上書きします。
  • FileMapping -これにより、単一のファイルまたは一連のファイルがローカルコンテンツルートからデポにマップされます。 デポにファイルを追加する複数のファイルマッピングが考えられます。 LocalPathパラメーターは、コンテンツルートフォルダーへの相対パスであり「?」や「*」などのワイルドカードを含めることができます。 再帰検索が有効の場合は、サブフォルダー内の一致するファイルにも適用されます。 DepotPathパラメーターは、選択したファイルのデポ内での場所を指定します(特別なマッピング指定がない場合は「.」のみを使用します)
  • FileExclusion -マップされたファイルを再度除外します。「?」や「*」などのワイルドカードを含めることができます。
  • InstallScript -ファイルをインストールスクリプト としてマークし、ビルドプロセス中にファイルに署名します。 Steamクライアントは、このデポをマウントするすべてのアプリケーションに対して署名を行う必要があることを認識しています。
  • FileProperties -特別なフラグでファイルをマークします:
    • userconfig-このファイルは、ユーザーまたはゲームによって変更されます。 これはアップデートにより上書きされず、ファイルの前のバージョンと異なる場合でも照合エラーを起こすことはありません。
    • versionedconfig -userconfigに似ていますが、デポ内のファイルがアップデートされた場合、ユーザーのゲームがアップデートされるときにローカルファイルを上書きします。 デポ内のファイルのアップデートは、フォーマット変更やバグ修正など必要があるときのみにしてください。

すべてのオプションの使用を示すデポビルドスクリプト例depot_build_1002.vdf
"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" // このファイルは実行時に変更されます } }

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

アップデートの管理

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

ビルドの問題をデバッグ

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

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

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

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

ほとんどのケースで問題なく実行できますが、ゲームのコンテンツレイアウトをデザインする際に避けるべき事項がいくつかあります。 ゲームデータの圧縮や暗号化は避けるのが得策です。 これはSteamコンテンツシステムによって、既に配信中のダウンロードやリテール版ディスクで実行済みです。 重複で行うと、差分パッチの効力が減少します。 圧縮および暗号化が推奨されるのは、パッケージファイル内の各アセットが個別に圧縮および/または暗号化される場合のみです。 そうしないと、1つのアセットを変更する際に(変更されていない可能性がある)他のいくつかのアセットのダウンロードが常に必要になります。

複数のアセットを一つのパックファイルに格納する場合には、それぞれの再パッケージングにおいて、不要な変更が無いようにしてください。 ファイル名はビルドマシンによって変わるため、オリジナルのソースファイルのフルネームをディスクに含める方法は問題になりがちです。 その他、各ファイルにビルドのタイムスタンプを含むことも悪い例です。 可能であれば、パックファイルの最後に新コンテンツを追加して、存在するファイルの順序を保ってください。 また、パックファイルのメタデータ(各アセットのオフセットとサイズ)は一つの場所に格納するようにし、アセットデータと共に散在させないでください。 BeyondoCompareのようなバイナリ差分チェックツールを使って、パックファイルの2つのビルドを比べ、何百もの不要な変更が現れないようにしてください。

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

ゲームパッケージングがSteamPipeのアップデート処理とうまく作用していないように思われる場合、Valveの担当者まで連絡してください。これを支援するさらに高度な機能の有効化を検討します。

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

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 など)を最初のディスクのフォルダにコピーすると、リテール版ディスクのインストーラーが完成します。
  • macOS用のGMを作成する場合には、必ず、Mac上でgoldmaster/disk_assets/SteamRetailInstaller.dmgイメージを開くようにしてください。 そして、その中にあるアプリをあなたのメディアのルートにコピーします。 また、インストーラーを見分けやすくするために、インストールアプリの名前を変更したり、アイコンのブランド化や、ウィンドウの装飾をお勧めします。
  • macOS用のマルチディスク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 Login Denied Failed」と表示される

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

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

  • コンピュータ、モデム、ルーターなどを再起動する
  • ファイアウォールの設定を確認する。 新システムはport 80 (HTTP) そその他すべてのSteamポートを必要とします。 必要なポートの一覧は こちらを参照してください。
  • 一時的にローカルのアンチウィルス、スパムブロックプログラムを無効にする。
  • Steamクライアント内の設定->ダウンロード地域を確認する。 お住いの地域と一致させてください。
  • ダウンロードを終了して、アンインストールして再度ゲームをインストールする(マニフェストキャッシュを消去します。)
  • Steamを終了し、Steamインストールフォルダ内のappcacheとdepotchacheという二つのフォルダを消去する。
  • 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:
  1. ゲームのアプリ管理ページを開きます
  2. From the View Associated Items section, click All Associated Packages, DLC, Demos and Tools.
  3. ダウンロードしようとしているパッケージのタイトルをクリックします。
  4. 含まれるデポセクションを確認します。
  5. デポの追加/削除ボタンを使って、パッケージに正しいデポが割り当てられていることを確認します。
There are a number of discussion threads about this that may also assist:

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

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 がアプリ用に割り当てられたapp IDであることを確認します。
  • app_build.vdf内のappIDが正しいことを確認します。
  • 新規のappIDの場合、Steamworksにおけるアプリ管理の設定が公開済みであることを確認します。 新規アプリは設定タブ、デポタブのデポ、そして公開タブの公開されたすべての変更に SteamPipe のインストールディレクトリがあるはずです。
  • 以上すべて問題なければ、アカウントがapp IDを所有していることを確認してください。

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

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.

起動時に"The Steam Servers are too busy to handle your request... 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>