Steamworks-Dokumentation
Hochladen auf Steam
Unten finden Sie eine Anleitung zur Verwendung von SteamPipe, Valves Werkzeug zur Veröffentlichung von Inhalten auf Steam. Weitere Informationen zu den bewährten Praktiken zur Aktualisierung Ihres Spiels finden Sie hier: Updating Your Game - Best Practices.

Einführung in das SteamPipe-Inhaltssystem

SteamPipe ist das Inhaltssystem für Spiele/Anwendungen, auf dem Steam basiert. SteamPipe bietet die folgenden Optionen:
  • Effiziente und schnelle Bereitstellung von Inhalten.
  • Unbegrenzt öffentliche und private „Beta“-Branches, sodass mehrere Builds getestet werden können.
  • Einfache webbasierte Verwaltung von Builds und Übertragen neuer Builds oder Rollbacks auf vorherige Builds mit wenigen Mausklicks.
  • Anzeigen der Update-Größe eines Builds, bevor Sie diesen live schalten.
  • Anwendungsübergreifende Verwendung von Inhalten.
  • Erstellen von Installationsdatenträgern aus öffentlichen oder Beta-Inhalten.
  • Spiele/Apps bleiben offline verfügbar, selbst wenn der Download eines Updates gestartet wird.
  • Alle Inhalte sind grundsätzlich verschlüsselt und inaktive Versionen sind für Kunden nicht sichtbar.
  • Ein SteamPipe Local Content Server, der während der Entwicklung verwendet werden kann.
HINWEIS: SteamPipe umfasst einige wesentliche Konzepte. Bevor Sie beginnen, sollten Sie sich mit den in der Anwendungen Dokumentation beschriebenen Konzepten vertraut machen. Schon ein grundlegendes Verständnis dessen, wie die einzelnen Komponenten zusammenwirken, wird Ihnen beim Hochladen Ihres Produkts auf Steam sehr nützlich sein.

Steamworks-Videoanleitung – Kompilieren Ihres Spiels in SteamPipe

Diese Anleitung führt SteamPipe ein und erläutert Schritt für Schritt, wie Sie mit den Steamworks-Werkzeugen eine Beispielanwendung für Steam erstellen.
https://www.youtube.com/watch?v=SoNH-v6aU9Q

Steamworks-Videoanleitung – Hinzufügen neuer Plattformen und Sprachen

Diese Videoanleitung zeigt Ihnen, wie Sie Ihrem Spiel neue Plattformen und Sprachen hinzufügen, indem Sie Ihrer Anwendung Depots hinzufügen.
https://www.youtube.com/watch?v=PShS32hcing

SteamPipe – Technische Details

SteamPipe nutzt das HTTP-Protokoll für die Inhaltsbereitstellung. Da es sich bei Downloads um herkömmlichen Webverkehr handelt, kann die Downloadgeschwindigkeit durch HTTP-Caches von Drittanbietern zwischen Kunden und Steam-Servern erhöht werden. Inhalte können durch externe CDN-Anbieter gehostet werden, die unserem Inhaltsnetzwerk problemlos hinzugefügt werden können. Die meisten Firewalls auf Kundenseite erlauben HTTP-Traffic und blockieren Downloads nicht.

SteamPipe nutzt einen effizienten Patching-Algorithmus, der auf binärer Deltareplikation basiert und nur die modifizierten Komponenten bestehender Inhaltsdateien ändert. Wenn dieser Inhalt aktualisiert wird, müssen nur diese Deltas gesendet werden. Dies bedeutet, dass die Übertragungen sowohl für den Entwickler als auch für den Benutzer kleiner und schneller sind. Die meisten Partner betrachten es als nicht notwendig, einen SteamPipe Local Content Server zu verwenden, da sie Builds effizient auf privaten Branches patchen können.

Steam-Build-Account

Bevor Sie auf Steam einen Build erstellen können, müssen Sie in Ihrem Steamworks-Account einen Steam-Account haben, der über die Berechtigungen „Metadaten der Anwendung bearbeiten“ und „App-Änderungen auf Steam veröffentlichen“ verfügt. Aus Sicherheitsgründen wird empfohlen, einen dedizierten Build-Account einzurichten, der ausschließlich diese Berechtigungen besitzt. Hierzu können Sie unter https://store.steampowered.com/join einen neuen Account erstellen.

Jeder Administrator in Ihrem Steamworks-Account kann einen Steam-Account hinzufügen und die erforderlichen Berechtigungen zuweisen. Weitere Informationen zu diesem Verfahren finden Sie in der Dokumentation Verwalten Ihres Steamworks-Accounts. Hier ein Beispiel für einen solchen Account:

create_build_account.png

Ersteinrichtung neuer SteamPipe-Apps

Um neue SteamPipe-Anwendungen einzurichten, gehen Sie wie folgt vor:
  1. Suchen Sie die App-ID Ihrer Anwendung (Sie finden die ID, wenn Sie die Anwendung auf Ihrer Steamworks-Startseite auswählen).
  2. Rufen Sie die Seite Allgemeine Installationseinstellungen für Ihre App auf.
  3. Definieren Sie mindestens eine Startoption (den Pfad und optional die zum Starten des Spiels erforderlichen Argumente). Zeigen Sie mit der Maus auf das (?)-Symbol, um weitere Informationen zu jedem Feld zu erhalten.

    Das Beispiel unten zeigt 4 Startoptionen: 2 für Windows und jeweils 1 für MacOS und Linux. Startoption 3 wird nur unter Windows angezeigt, wenn der Benutzer auch den angegebenen DLC besitzt.

    updatedlaunchoptions.png
  4. Rufen Sie die Seite Depots auf und fügen Sie die für diese App erforderlichen Depots hinzu. Möglicherweise ist standardmäßig bereits ein Depot für Ihre Anwendung konfiguriert.
    1. Klicken Sie auf das Standarddepot und ändern Sie den Namen des Depots in einen aussagekräftigen und wiedererkennbaren Namen (zum Beispiel „Basisinhalt“ oder „Windows-Inhalt“).
    2. Lassen Sie die Sprache auf [All languages] eingestellt, es sei denn, es handelt sich um ein sprachspezifisches Depot.
    3. Lassen Sie das Betriebssystem auf [All OSes] eingestellt, außer es handelt sich um ein betriebssystemspezifisches Depot (wenn die App für alle Betriebssysteme gilt oder nur für PC oder nur für Mac ist, behalten Sie die Einstellung bei). Ändern Sie die Einstellung nur bei betriebssystemspezifischen Spieldepots.
    4. Klicken Sie auf Neues Depot hinzufügen, um neue Depots hinzuzufügen.
    5. Klicken Sie auf Änderungen speichern, um alle vorgenommen Änderungen zu speichern.
  5. Wenn Sie die Definition Ihrer Depots abgeschlossen haben, veröffentlichen Sie die vorgenommenen Änderungen auf der Seite Veröffentlichen.
  6. Sie müssen Ihre neu definierten Depots einem Paket hinzufügen, damit Sie als Eigentümer der Depots zugewiesen werden. Jedes Spiel auf Steam sollte über ein Developer Comp-Paket verfügen, das automatisch den in Ihrer Entwicklergruppe aufgelisteten Accounts zugewiesen wird.
    Diesem Paket (und/oder anderen Paketen, die über diese Depots verfügen müssen) können Sie auf der Seite Verknüpfte Pakete & DLCs die neuen Depots hinzufügen.
Hinweis: Wenn Ihre ausführbare Datei sich in einem Unterverzeichnis des Hauptinstallationsverzeichnisses befindet, fügen Sie den Namen des Unterverzeichnisses im Ausführungsfeld ein. Beginnen Sie nicht mit Schrägstrichen oder Punkten.

Einrichten des SDKs für SteamPipe-Uploads

Laden Sie auf dem Computer, auf den Sie Builds hochladen, die neueste Version des Steamworks-SDKs herunter und dekomprimieren Sie es.

Die SteamPipe-Werkzeuge finden Sie im SDK im Ordner Werkzeuge, in dem die 2 relevanten Unterverzeichnisse enthalten sind.

Im ContentBuilder-Verzeichnis werden Ihre Spielinhalte und die SteamPipe-Build-Werkzeuge gespeichert. Dieses Verzeichnis enthält folgende Unterverzeichnisse:
  • builder: In diesem Verzeichnis ist zu Beginn nur steamcmd.exe enthalten, die Befehlszeilenversion von Steam.
  • builder_linux: Die Linux-Version von steamcmd.
  • builder_osx: Die macOS-Version von steamcmd.
  • content: Dieses Verzeichnis enthält alle Spieldateien, die in Depots kompiliert werden.
  • output: Dieses Verzeichnis ist der Speicherort für Build-Protokolle, den Datenblock-Cache und Zwischenversionen. HINWEIS: Diesen Ordner können Sie jederzeit leeren oder löschen. Nach dem Löschen dauert der nächste Upload jedoch länger.
  • scripts: In diesem Verzeichnis speichern Sie alle Build-Skripts für die Erstellung Ihrer Spieldepots.
steampipebuilddir.png

Wir empfehlen Ihnen, steamcmd.exe einmal direkt im Ordner „builder“ für Ihre Plattform auszuführen, damit ein Bootstrap Ihres Build-Systems erfolgt. Dadurch sollten alle Dateien, die zum Kompilieren von Depots benötigt werden, in Ihr Verzeichnis „builder“ geschrieben werden.

Im ContentServer-Verzeichnis befinden sich die Werkzeuge, die Sie benötigen, um einen eigenen SteamPipe Local Content Server auszuführen, wenn Sie dies möchten.

SteamCmd auf macOS

Führen Sie folgende Schritte aus, um SteamCmd auf macOS zu aktivieren:
  1. Navigieren Sie im Terminal zum Ordner „tools\ContentBuilder\builder_osx\osx32“.
  2. Führen sie „chmod +x steamcmd“ aus.
  3. Navigieren Sie zum übergeordneten Ordner (tools\ContentBuilder\builder_osx).
  4. Geben Sie „bash ./steamcmd.sh“ ein.
  5. SteamCmd wird nun ausgeführt und auf den aktuellsten Build aktualisiert. Nach Abschluss befinden Sie sich in der SteamCmd-Eingabeaufforderung.
  6. Geben Sie „exit“ ein und drücken Sie die Eingabetaste, um die Eingabeaufforderung zu schließen.
Anschließend können Sie die verbleibenden Anleitungen dieser Dokumentation befolgen (und die Pfade wie erforderlich ersetzen), um Depot- und App-Konfigurationsdateien für das Hochladen Ihrer Inhalte auf Steam zu erstellen.

SteamPipe-Build-Konfigurationsdateien erstellen

Zum Hochladen Ihrer Anwendungsdateien mit SteamPipe sind Skripts erforderlich, in denen Ihr Build und jedes darin enthaltene Depot beschrieben ist. Im Ordner Tools\ContentBuilder\scripts der Steamworks-SDK finden Sie einfache Beispielskripts.

SteamPipe-GUI-Werkzeug

Wenn Sie Windows ausführen und ein GUI-Werkzeug verwenden möchten, das Ihnen hilft, diese Konfigurationsdateien zu erstellen und Ihre Builds hochzuladen, dann können Sie das Werkzeug SteamPipeGUI im Ordner „\tools\“ des Steamworks-SDKs verwenden. In der ZIP-Datei dieses Werkzeugs sind zusätzliche Anleitungen enthalten, die Ihnen bei Ihren ersten Schritten helfen.

Auch bei Verwendung des GUI-Werkzeugs empfiehlt es sich, die folgenden Abschnitte zu lesen, um sich mit der Funktionsweise des SteamPipe-Systems besser vertraut zu machen.

Ein einfaches Build-Skript


Beginnen wir mit dem einfachsten Build-Skript. Für unser Beispiel nehmen wir ein Spiel (App-ID 1000) mit einem Depot (Depot-ID 1001) und möchten alle Dateien aus einem Inhaltsordner und seinen Unterordnern hochladen. Dafür brauchen wir nur ein einziges Build-Skript wie das im SDK enthaltene "simple_app_build.vdf":

"AppBuild" { "AppID" "1000" // Ihre App-ID "Desc" "Dies ist ein simples Build-Skript" // interne Beschreibung des Builds "ContentRoot" "..\content\" // Root-Verzeichnis des Inhaltsverzeichnisses, relativ zum Speicherort dieser Datei "BuildOutput" "..\output\" // Build-Ausgabeordner für Build-Protokolle und den Cache-Dateien des Builds "Depots" { "1001" // Ihre Depot-ID { "FileMapping" { "LocalPath" "*" // alle Dateien aus dem Inhaltsstammordner "DepotPath" "." // dem Stammverzeichnis des Depots zugeordnet "recursive" "1" // alle Unterordner miteinbeziehen } } } }

Passen Sie die App-ID und Depot-ID Ihres Spiels an, falls nötig. Um einen Build zu starten, müssen Sie steamcmd ausführen und einige Parameter übergeben:
tools\ContentBuilder\builder\steamcmd.exe +login <account_name> <password> +run_app_build ..\scripts\simple_app_build.vdf +quit

HINWEIS: Ihr erster Versuch, einen Build auszuführen, kann eventuell wegen Steam Guard fehlschlagen. Falls die Anmeldung wegen Steam Guard fehlschlägt, suchen Sie in Ihren E-Mails nach dem Steam Guard-Code und führen Sie steamcmd wie folgt aus: steamcmd.exe "set_steam_guard_code <code>". Nachdem Sie sich einmal mit Steam Guard angemeldet haben, wird eine Sicherheitsdatei verwendet, um die Anmeldung auf Echtheit zu überprüfen.

Wenn Sie „steamcmd“ auf einem Gerät oder VM verwenden, das häufig über Image wiederhergestellt wird, sollten Sie die Sicherheits- und Konfigurationsdatei zu Ihrem Image hinzufügen, damit Sie nicht jedes Mal für Steam Guard aufgefordert werden. Die Sicherheitsdatei befindet sich in <Steam>\ssfn<hashOfNumbers> und die Konfigurationsdatei in <Steam>\config\config.vdf.

Während eines SteamPipe-Builds geschieht Folgendes:
  1. Steamcmd.exe wird automatisch auf die aktuellste Version aktualisiert.
  2. Steamcmd.exe meldet sich mit dem angegebenen Steam-Build-Entwickler-Account beim Steam-Backend an.
  3. Der Start des App-Builds wird beim MDS (Master Depot Server) registriert, wodurch sichergestellt wird, dass der Benutzer über die richtigen Berechtigungen zum Modifizieren dieser App verfügt.
  4. Für jedes im App-Build enthaltene Depot wird basierend auf den Dateien im Inhaltsordner und den in der Depot-Build-Konfigurationsdatei definierten Filterregeln eine Dateiliste generiert.
  5. Jede Datei wird untersucht und in kleine Teile von ungefähr 1 MB aufgeteilt. Wenn das Depot bereits zuvor entwickelt wurde, bleiben durch diese Partitionierung so viele unveränderte Teile wie möglich erhalten.
  6. Neue Dateiteile werden komprimiert und verschlüsselt und danach auf den MDS hochgeladen.
  7. Für diese Depotversion wird ein endgültiges Manifest generiert; jedes Manifest wird durch eine eindeutige 64-Bit-Manifest-ID identifiziert.
  8. Sobald alle Depots verarbeitet wurden, stellt der MDS diesen App-Build fertig und weist ihm eine globale Build-ID zu.
  9. Wenn der Build fertig ist, befinden sich im Build-Ausgabeordner eventuell CSM- und CSD-Dateien. Diese Dateien sind temporäre Dateien und können gelöscht werden, beschleunigen jedoch alle nachfolgenden Builds.


Sobald Ihr Build vollständig ist, erscheint er auf der Build-Seite Ihrer Anwendung (in diesem Beispiel https://partner.steamgames.com/apps/builds/1000). Dort können Sie diesen Build für den Standardbranch oder einen beliebigen Beta-Branch live schalten, und Benutzer können dieses Update innerhalb weniger Minuten herunterladen.

Erweiterte Build-Skripts


Falls Ihre Anwendung über viele Depots mit komplexen Dateizuordnungsregeln verfügt, können Sie für jedes Depot ein Depot-Build-Skript erstellen, auf das das App-Build-Skript verweist. Sehen wir uns jedoch zunächst die verfügbaren Parameter im App-Build-Skript an:

  • App-ID : Die App-ID Ihres Spiels. Der zum Hochladen verwendete Steam-Partneraccount benötigt die Berechtigung zur Bearbeitung von Metadaten der Anwendung.
  • Desc > Die Beschreibung erscheint nur im Bereich „Ihre Builds“ im App-Verwaltungsfenster. Sie kann jederzeit nach dem Hochladen Ihres Builds auf die „Ihre Builds“-Seite geändert werden.
  • ContentRoot : Das Stammverzeichnis Ihrer Spieldateien. Kann ein absoluter Pfad oder relativ zur Build-Skript-Datei sein.
  • BuildOutput : Dieses Verzeichnis ist der Speicherort für Build-Protokolle, Depot-Manifeste, den Datenblock-Cache und Zwischenversionen. Wir empfehlen, für das beste Ergebnis eine separate Festplatte für Ihre Build-Ausgabe zu verwenden. Dadurch wird die IO-Arbeitslast des Datenträgers aufgeteilt, sodass Ihr Inhaltsstammdatenträger die Leseanforderungen und Ihr Ausgabedatenträger die Schreibanforderungen verarbeiten kann.
  • Vorschau : Diese Art Build gibt nur Protokolle und ein Dateimanifest im Build-Ausgabeordner aus. Das Erstellen von Vorschau-Builds ist eine gute Möglichkeit, Ihre Upload-Skripte zu durchlaufen und sicherzustellen, dass Ihre Dateizuordnungen, Filter und Eigenschaften wie beabsichtigt funktionieren.
  • Local : Legen Sie dies auf dem htdocs-Pfad Ihres SteamPipe Local Content Server (LCS/lokalen Inhaltsserver) fest. LCS-Builds stellen Inhalte nur auf Ihrem eigenen HTTP-Server bereit und ermöglichen es Ihnen, die Installation Ihres Spiels mit dem Steam-Client zu testen.
  • SetLive : Name des Beta-Branch. Wird nach einem erfolgreichen Build automatisch live geschaltet. Wenn leer, wird kein Name festgelegt. Bitte beachten Sie, dass der Standard-Branch nicht automatisch live geschaltet werden kann. Dieser Schritt kann nur über das App-Verwaltungsfenster Ihrer Anwendung vorgenommen werden.
  • Depots: Dieser Bereich enthält alle Dateizuordnungen, Filter und Dateieigenschaften für jedes Depot oder verweist auf eine separate Skriptdatei für jedes Depot.

Hier ein Build-Skript als Beispiel "app_build_1000.vdf", das alle Optionen verwendet:
"AppBuild" { "AppID" "1000" // Ihre App-ID "Desc" "Ihre Build-Beschreibung hier" // interne Beschreibung für diesen Build "Preview" "1" // diesen Build nur als Vorschau erstellen, es wird nichts hochgeladen "Local" "..\..\ContentServer\htdocs" // Inhalte werden nur auf den lokalen Inhaltsserver hochgeladen und nicht auf Steam "SetLive" "AlphaTest" // schaltet diesen Build auf einem Beta-Branch live "ContentRoot" "..\content\" // Inhaltsstammverzeichnis relativ zu dieser Skript-Datei "BuildOutput" "D:\build_output\" // legt den Build-Cache und die Protokolldateien für eine bessere Leistung auf einem anderen Laufwerk ab "Depots" { // file mapping instructions for each depot are in separate script files "1001" "depot_build_1001.vdf" "1002" "depot_build_1002.vdf" } }

Dieses App-Build-Skript verweist auf zwei Depot-Build-Skriptdateien, die alle Dateizuordnungen und Dateieigenschaften angeben. Die folgende Anleitung ist in einem Depot-Build-Skript verfügbar (auch, wenn der Bereich direkt im App-Build-Skript enthalten ist).

  • DepotID : Die Depot-ID für diesen Bereich.
  • ContentRoot : Ermöglicht optional das Überschreiben des Inhaltsstammordners aus dem App-Erstellungsskript pro Depot.
  • FileMapping : Dies ordnet Ihrem Depot eine einzelne Datei oder einen Satz Dateien aus dem lokalen Inhaltsstammverzeichnis zu. Es können mehrere Dateizuordnungen vorhanden sein, die Dateien zum Depot hinzufügen. Der Parameter LocalPath ist ein relativer Pfad zum Inhaltsstammverzeichnis und kann Symbole wie „?“ oder „*“ enthalten. Dies gilt auch für übereinstimmende Dateien in Unterordnern, falls Recursive aktiviert ist. Die Parameter von DepotPath gibt an, wo die ausgewählten Dateien im Depot angezeigt werden sollen (verwenden Sie nur '.' für nicht spezielle Zuordnungen).
  • FileExclusion : Schließt zugeordnete Dateien wieder aus und kann auch Platzhalter wie „?“ oder „*“ enthalten.
  • InstallScript : Markiert eine Datei als Installationsskript und signiert die Datei während des Erstellungsprozesses. Der Steam-Client kann sie für jede Anwendung ausführen, die dieses Depot bereitstellt.
  • FileProperties -Dateien können mit speziellen Flags markiert werden.
    • userconfig : Diese Datei wird durch den Benutzer oder das Spiel modifiziert. Sie kann nicht durch ein Update überschrieben werden und löst keinen Überprüfungsfehler aus, wenn sie sich von der vorherigen Version der Datei unterscheidet.
    • versionedconfig : Ähnlich zu „userconfig“, wird jedoch bei Aktualisierung der Datei im Depot lokal überschrieben, sobald das Spiel des Benutzers aktualisiert wird. Aktualisiert die Datei im Depot nur, wenn es eine notwendige Formatänderung oder Fehlerbehebung gibt.

Hier ein Depot-Skript als Beispiel depot_build_1002.vdf, das alle Optionen verwendet:
"DepotBuild" { "DepotID" "1002" "ContentRoot" "C:\content\depot1002" // überschreibt ContentRoot aus dem Build-Skript der Anwendung "FileMapping" { // alle Quelldateien und Ordner in ".\bin" werden dem Ordner ".\executables" im Depot "LocalPath" "bin\*" "DepotPath" "executables\" zugeordnet "Recursive" "1" // bezieht alle Unterordner mit ein } "FileMapping" { // überschreibt Audiodateien in \\Audio mit deutschen Versionen "LocalPath" "localization\german\audio\*" "DepotPath" "audio\" } "FileMapping" { // kopiert Installationsskript für deutsche Version in den Stammordner des Depos "LocalPath" "localization\german\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\server.exe" // Diese Datei ausschließen "FileExclusion" "*.pdb" // überall alle .PDB-Dateien ausschließen "FileExclusion" "bin\tools*" // alle Dateien unter bin\tools\ ausschließen "InstallScript" "localization\german\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\setup.cfg" "Attributes" "userconfig" // diese Datei wird während der Laufzeit geändert } }

HINWEIS: Sie können diese Skripts beliebig benennen, aber wir verwenden die Namen app_build_<AppID> und depot_build_<DepotID>, um Konsistenz zu gewährleisten. Wenn Sie wissen, dass dieser Computer zur Appentwicklung verwendet wird, empfiehlt es sich, für jede Anwendung ein Unterverzeichnis in Ihrem Skriptverzeichnis zu erstellen, um die Build-Skripts jeder Anwendung besser organisieren zu können.

Updates verwalten

Nach der Veröffentlichung Ihrer App, erhalten Ihre Kunden den als Standardbuild markierten Build. Beim Hochladen eines neuen Builds empfiehlt es sich immer, ihn zu testen, bevor Sie ihn für Ihre Kunden verfügbar machen. Wie Sie dies erfolgreich durchführen können, erfahren Sie unter Testen auf Steam.

Build-Probleme debuggen

Suchen Sie in Ihrem Ausgabeverzeichnis nach Fehlerinformationen, statt in der Konsole, in der das Build-Skript ausgeführt wurde, falls Ihr Build nicht funktioniert. Die meisten Fehlerinformationen können in den LOG-Dateien (*.log) gefunden werden.
Sie können zum Beheben von Problemen die folgenden Steam-Client-Befehle und Dateien auf der Client-Seite verwenden:
  • "app_status [appid]": Zeigt den aktuellen Status der App auf diesem Client.
  • "app_info_print [appid]": Zeigt die aktuelle Steamworks-Konfiguration für dieses Spiel (Depots, Startoptionen usw.).
  • "app_config_print [appid]": Zeigt die aktuelle Benutzerkonfiguration für dieses Spiel (aktuelle Sprache, Installationsverzeichnis usw.).
  • file "logs\content_log.txt": Listet alle protokollierten SteamPipe-Operationen und -Fehler auf.
  • file "steamapps\appmanifest_[appid].acf": Zeigt den aktuellen Installationsstatus dieser App (KeyValues).

Effiziente Depots für SteamPipe entwickeln

Im alten Steam-Inhaltssystem wurden Updates auf Dateiebene gepatcht. Wenn also ein einziges Byte in einer Datei geändert wurde, musste die komplette neue Datei von allen Benutzern heruntergeladen werden. Dies war vor allem dann ineffizient, wenn das Spiel Paketdateien verwendete, also Dateien, bei denen Sammlungen von Spielinhaltsdateien in einer einzigen großen Datei zusammengefasst werden. Da Paketdateien leicht 1 GB überschreiten können, führten Updates oft zu unnötig großen Downloads. Eine oft verwendete Methode dies zu vermeiden bestand darin, neue Paketdateien hinzuzufügen, die den Inhalt bereits gelieferter Paketdateien überschrieben. Dies funktionierte bei Updates, hatte jedoch langfristig Nachteile für neue Benutzer, da diese nicht verwendete Inhalte herunterladen mussten, die bereits gepatcht worden waren.

Das neue Inhaltssystem behebt dieses Problem, indem es jede Datei in Teile von ungefähr 1 MB aufteilt. Danach wird jeder Teil komprimiert und verschlüsselt, bevor er vom Steam-Inhaltssystem verteilt wird. Wenn der Spielinhalt große nicht benötigte Bestandteile umfasst, werden diese Teile wiederverwendet und der Benutzer muss jeden nur einmal herunterladen. Die wahre Stärke dieses Systems liegt jedoch im Erstellen effizienter Update-Patches. Während das System einen Patch erstellt, wird der neue Inhalt auf bereits bekannte Teile untersucht. Wenn das System solche Teile findet, verwendet es sie wieder. Dies bedeutet, wenn Sie in einer großen Datei ein paar Bytes ändern oder einfügen, muss der Benutzer nur die Änderungen herunterladen.

Dies funktioniert in den meisten Fällen gut, aber es gibt noch einige Fallstricke, die beim Entwickeln des Inhaltslayouts eines Spiels vermieden werden müssen. Wir empfehlen, Spieldaten nicht zu komprimieren oder zu verschlüsseln. Dies übernimmt bereits das Steam-Inhaltssystem beim Ausführen von Downloads und Datenträgern für den Einzelhandel. Wenn Sie diesen Schritt ebenfalls vornehmen, reduziert dies ggf. die Effektivität von Delta-Patching. Komprimierung und Verschlüsselung werden nur empfohlen, wenn jedes einzelne Element in einer Paketdatei separat komprimiert und/oder verschlüsselt wird. Andernfalls müssen für eine Änderung an einem Element immer mehrere andere potenziell unveränderte Elemente heruntergeladen werden.

Wenn Sie mehrere Elemente in eine einzelne Paketdatei packen, dann achten Sie darauf, bei jedem Umpacken keine überflüssigen Änderungen vorzunehmen. Eine der Vorgehensweisen, die Probleme verursachen, ist das Einfügen des vollständigen Namens der Originalquelldateien auf der Festplatte, weil sich diese Namen abhängig vom verwendeten Build-Computer ändern können. Eine weitere häufige Vorgehensweise, von der abgeraten wird, besteht darin, in jede Datei Build-Zeitstempel einzufügen. Fügen Sie neue Inhalte möglichst am Ende Ihrer Paketdateien hinzu und behalten Sie die Reihenfolge der existierenden Dateien bei. Behalten Sie auch die Metadaten Ihrer Paketdatei (Versatz und Größen einzelner Elemente) an einem einzigen Ort, statt sie durch Elementdateien einzustreuen. Vergleichen Sie mit einem binär arbeitenden Dateivergleichsprogramm wie Beyond Compare zwei Builds Ihrer Paketdateien, um sicherzustellen, dass nicht Hunderte von unerwünschten Änderungen vorkommen.

Wenn Sie sich an diese Regeln halten, minimieren Sie die Patch-Größen und es müssen nur neue Inhalte heruntergeladen werden. Ihre Kunden werden Ihnen dafür dankbar sein und Sie selbst können die Qualität Ihres Produkts durch Bereitstellen weiterer Updates erhöhen.

Wenn Sie vermuten, dass Ihre Spielepakete nicht gut mit dem SteamPipe-Aktualisierungsprozess interagieren, wenden Sie sich bitte an Ihren Valve-Vertreter. Wir können prüfen, ob erweiterte Funktionen dabei helfen können.

Installationsdatenträger für den Einzelhandel erstellen

Um Installationsdatenträger für den Einzelhandel für SteamPipe-Spiele zu entwickeln, müssen Sie zuerst eine Build-Projektdatei einrichten.
In diesem Beispiel heißt die SKU-Datei "sku_goldmaster.txt":
"sku" { "name" "Testspiel-Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
Bitte beachten Sie die folgenden Tipps:
  • Erstellen Sie einen neuen Ordner, in den die Abbilder der Datenträger für den Einzelhandel geschrieben werden sollen (z. B. „D:\retail_disks“). Es werden nur Depots in den Abschnitten „included_depots“ hinzugefügt. Den Abschnitt „exclude“ gibt es nicht mehr.
  • Sie können Steam.exe (mit den Befehlszeilenparametern -dev und -console) oder steamcmd.exe verwenden, um Installationsprogrammabbilder zu erstellen. Verwenden Sie in beiden Fällen den Befehl „build_installer“.
  • Melden Sie sich mit einem Steam-Account an, der sowohl das Spiel als auch alle Depots besitzt, die Sie auf dem Datenträger für den Einzelhandel speichern möchten. Andernfalls erfordert der Account keine speziellen Berechtigungen, sodass jede beliebige Person Installationsprogrammdatenträger erstellen kann.
  • Wenn Sie Steam.exe verwenden, dann stoppen Sie alle anderen Downloads.
  • Gehen Sie zur Konsolenseite und führen Sie den „build_installer“-Befehl aus:
    build_installer sku_goldmaster.txt "D:\retail_disks"
    Der Build kann einige Zeit dauern, da beim ersten Mal alle Depots erneut heruntergeladen werden.
  • Wenn Sie einen GM mit einem lokalen Inhaltsserver anfertigen, dann führen Sie Folgendes aus:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\retail_disks" local
    Die Ausgabe bezieht sich auf „Sicherung“, da „Installationsdatenträger für den Einzelhandel“ und lokale Spielsicherungen praktisch dasselbe sind.
  • Sobald Sie „Sicherung für App-ID ...“ abgeschlossen sehen, sind die Installationsdatenträgerabbilder bereit. Weitere Details über den Sicherungsbuild finden Sie in logs\backup_log.txt.
  • Es gibt neue Verzeichnisse (Disk_1, Disk_2, usw.) in „D:\retail_disks“, die nicht größer als 640 MB sind, wie durch „disk_size_mb“ spezifiziert. Jeder Datenträgerordner enthält für jedes Depot eine „sku.sis“-Datei sowie eine CSD- (.csd) und CSM-Datei (.csm). Größere Depots können sich über mehrere Datenträger erstrecken. Alle Inhalte von Installationsdatenträgern für den Einzelhandel sind immer verschlüsselt (im Gegensatz zu lokalen Spielsicherungsdateien). Kopieren Sie die Setup-Dateien (setup.exe, setup.ini usw.) des SDK-GMs in den Ordner Ihres ersten Datenträgers und das Installationsprogramm des Datenträgers für den Einzelhandel ist fertig.
  • Achten Sie beim Anfertigen eines GMs für macOS darauf, auf einem Mac das Abbild „goldmaster/disk_assets/SteamRetailInstaller.dmg“ zu öffnen. Kopieren Sie danach die App, die sich dort befindet, in das Stammverzeichnis Ihres Datenträgers. Es wird empfohlen, den Namen der Installationsanwendung zu ändern, das Symbol mit der Marke zu versehen und das Fenster zu dekorieren, damit nur das Installationsprogramm angezeigt wird.
  • Stellen Sie beim Anfertigen eines aus mehreren Datenträgern bestehenden GMs für macOS sicher, dass der Volumename für jeden Datenträger übereinstimmt. Der Volumename wird zu einem Bestandteil des Einbindungspfads. Wenn die Namen nicht übereinstimmen, kann das Installationsprogramm den nächsten Datenträger nicht finden.

Optionale Erstellung eines Installationsprogramms für den Einzelhandel ausgehend von einer Beta-Branch

In dem oben beschriebenen Prozess wird ein Installationsprogramm für den Einzelhandel basierend auf der Standardbranch erstellt. Wenn Sie ein Installationsprogramm basierend auf einer Beta-Branch erstellen wollen, dann müssen Sie zuerst eine Beta-Branch namens "baseline" erstellen. Verwenden Sie danach den folgenden Befehl, um ein Installationsprogramm ausgehend von der baseline-Branch zu erstellen:
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

Einen DLC mit einem Installationsprogramm für den Einzelhandel installieren

Unter Umständen möchten Sie ein Installationsprogramm für den Einzelhandel erstellen, in dem Ihre DLC-Pakete enthalten sind. In solchen Fällen erfordert der Prozess zum Erstellen des Installationsprogramms nur wenige Änderungen.
Fügen Sie in der Datei "sku_goldmaster.txt", die DLC-App-IDs im Abschnitt "included_depots" ein. Suchen Sie nach dem Ausführen des Prozesses "build_installer" die generierte Datei „sku.sis“ für das Installationsprogramm und öffnen Sie sie mit einem Texteditor.
Fügen Sie die DLC-App-ID im Abschnitt "apps" hinzu. Hätten Sie beispielsweise ein Spiel mit der App-ID 1000 und der DLC-App-ID 1010, könnten Sie den Abschnitt "apps" folgendermaßen anpassen:
"apps" { "0" "1000" "1" "1010" }
Dadurch wird gewährleistet, dass Steam das Eigentumsrecht des DLCs überprüft und den Benutzer zur Eingabe eines Schlüssels auffordert, wenn der DLC dem Account nicht gehört, mit dem sich der Benutzer bei Steam anmeldet.

Ein Installationsprogramm für den Einzelhandel für mehrere App-IDs auf einem einzigen Datenträger oder in einem einzigen Installationspaket erstellen

Damit kann ein GM angefertigt werden, der mehrere SteamPipe-Apps enthält. Erstellen Sie nacheinander alle App-Installationsprogramme, aber verweisen Sie in allen auf denselben Ausgabeordner. Jeder Build wird mit dem bereits existierenden Installationsabbild zusammengeführt.

Einen Installationsdatenträger für den Einzelhandel anpassen

Weitere Details zum Anpassen Ihres Installationsdatenträgers für den Einzelhandel finden Sie unter Einen Gold Master anpassen.

Spiele vor Veröffentlichung vorausladen

Standardmäßig sind alle Inhalte auf allen Datenträgern für den Einzelhandel und auf allen Inhaltsservern immer verschlüsselt. Ein Spiel auf Vorauslademodus zu wechseln ermöglicht es Besitzern, den Inhalt herunterzuladen. Da er aber auf den Datenträgern des Benutzers verschlüsselt bleibt, kann er nicht gespielt werden. Sobald das Spiel offiziell veröffentlicht wurde, entschlüsselt Steam diesen vorausgeladenen Inhalt und der Benutzer kann das Spiel spielen.

In den folgenden Fällen wird empfohlen, ein Spiel in den Vorauslademodus zu schalten:
  • Auslieferung von Datenträgern für den Einzelhandel mit Produktschlüsseln, bevor das Spiel wirklich erhältlich ist (0-Tage-Piraterie).
  • Spiele, die im Vorverkauf erhältlich sind und größer als 20 GB sind.

Bitte reichen Sie ein Ticket an Steam Publishing ein, wenn Sie denken, dass Ihr Spiel vorausgeladen werden muss.

DLCs erstellen

Ein Zusatzinhalt wird als ein Depot des Hauptspiels erstellt. Lesen Sie bitte den Dokumentationsartikel Zusatzinhalte (DLC) für weitere Informationen.

Fehlerbehebung für SteamPipe

„Anmeldefehler: Account-Anmeldung verweigert/fehlgeschlagen“ beim Anmelden über steamcmd.

Ursache: Wahrscheinlich verhindert SteamGuard die Anmeldung. Lösung:
  • Rufen Sie die E-Mail-Adresse ab, die mit dem Account verknüpft ist, mit dem Sie sich anzumelden versuchen. Suchen Sie nach einer E-Mail vom Steam-Support. Kopieren Sie den Code aus dieser E-Mail.
  • Führen Sie den folgenden steamcmd-Befehl aus: set_steam_guard_code <code>.
  • Versuchen Sie, sich über steamcmd erneut anzumelden: Steam>logon <buildaccount> <password>.

Allgemeine Fehlerbehebung für Probleme beim Herunterladen

  • Starten Sie den Computer, das Modem, den Router usw. neu.
  • Verifizieren Sie die Firewall-Einstellungen. Das neue System erfordert Port 80 (HTTP) und alle anderen Steam Ports, die hier aufgeführt sind.
  • Deaktivieren Sie vorübergehend die lokalen Antiviren- oder Spamschutzprogramme.
  • Überprüfen Sie die Steam-Downloadregion unter Einstellungen > Downloads. Diese Region sollte Ihrem Standort entsprechen.
  • Stoppen Sie den Download, deinstallieren Sie das Spiel und installieren Sie es erneut (dadurch werden die Manifest-Caches gelöscht).
  • Schließen Sie Steam und löschen Sie die beiden Ordner „appcache“ und „depotcache“ in Ihrem Steam-Installationsordner.
  • Versuchen Sie, Ihre Steam-Downloadregion auf einen anderen, weit entfernten Standort einzustellen. Dies könnte funktionieren, falls ein Inhaltsserver in Ihrer Nähe fehlerhafte Daten liefert.

Meine Mac- und/oder Linux-Builds installieren keine Dateien. Woran liegt das?

Wenn Sie über Steam die Installation Ihres Spiels oder Ihrer Anwendung über mehrere Plattformen hinweg testen, könnten Sie auf eine Situation stoßen, in der ein Build unter Windows funktioniert, aber bei einem Mac oder unter Linux keine Dateien implementiert, obwohl Ihr SteamPipe-Prozess dafür konfiguriert ist, Mac- und/oder Linux-Depots hochzuladen. Es gibt einen Schritt, den man leicht übersieht und bei dem Ihre alternativen Depots zu dem Paket hinzugefügt werden, das implementiert werden soll. Mit den folgenden Schritten können Sie überprüfen, welche Depots in einem Paket enthalten sind:
  1. Gehen Sie auf Ihre Seite App-Verwaltung.
  2. Klicken Sie im Abschnitt „Verwandte Elemente anzeigen“ auf Alle verknüpften Pakete, Zusatzinhalte, Videos und Werkzeuge.
  3. Klicken Sie auf den Titel des Pakets, das Sie herunterladen möchten.
  4. Prüfen Sie den Abschnitt Inbegriffene Depots.
  5. Verwenden Sie Depots hinzufügen/entfernen, um sicherzustellen, dass dem Paket der richtige Satz von Depots zugewiesen ist.
Es gibt eine Reihe von Diskussionsthreads zu diesem Thema, die Ihnen ebenfalls helfen könnten:

Das Ausführen von steamcmd.exe führt zu folgendem Fehler: „SteamUpdater: Fehler: Steam muss zum Aktualisieren online sein. Bitte überprüfen Sie Ihre Netzwerkverbindung und versuchen Sie es erneut.“

Lösung: Gehen Sie auf Internetoptionen > Verbindungen > LAN-Einstellungen und überprüfen Sie automatisch entdeckte Einstellungen.

Das Ausführen des App-Builds führt zu folgendem Fehler: „FEHLER! DepotBuild für scriptname.vdf“ fehlgeschlagen – Status = 6.“

Mögliche Ursachen:
  • Der Account verfügt nicht über die nötigen Berechtigungen für die App.
    • Überprüfen Sie, ob die App-ID in der Datei app_build.vdf korrekt ist.
    • Überprüfen Sie, ob der Build-Account die richtigen Berechtigungen für die App-ID hat.
  • Steamcmd kann die Depot-Inhalte nicht finden.
    • Überprüfen Sie, ob der „contentroot“-Wert im app_build-Skript ein gültiger Pfad in Relation zum Speicherort der Skriptdatei ist.
    • Überprüfen Sie, ob der "LocalPath"-Wert im depot_build-Skript ein gültiger Pfad in Relation zu dem Pfad im app_build-Skript ist. Überprüfen Sie, ob der Pfad tatsächlich Inhalte enthält.

Das Ausführen des App-Builds führt zu folgendem Fehler: „FEHLER! Abruf von Anwendungsinformationen für die App NNNNN fehlgeschlagen (Anmeldung und Abonnement überprüfen).“

Dies bedeutet, dass Steam keine Informationen über die App abrufen kann, weil sie entweder nicht existiert oder der Benutzer keinen Zugriff auf die App hat.
  • Überprüfen Sie, ob NNNNN die App-ID ist, die Ihnen für die App zugewiesen wurde.
  • Überprüfen Sie, ob die App-ID in der Datei app_build.vdf korrekt ist.
  • Wenn es eine neue App-ID ist, dann überprüfen Sie, ob die Steamworks-Appverwaltungskonfiguration veröffentlicht wurde. Bei neuen Apps sollte der Reiter „Konfiguration“ ein SteamPipe-Installationsverzeichnis, der Reiter „Depot“ ein Depot und der Reiter „Veröffentlichen“ alle veröffentlichten Änderungen enthalten.
  • Wenn das alles korrekt ist, dann stellen Sie sicher, dass Ihr Account die App-ID besitzt.

„Bei der Installation von [AppName] ist ein Fehler aufgetreten (ungültige Inhaltskonfiguration).“ (beim Start)

Mögliche Ursachen:
  • In der Branch, von der aus Sie zu installieren versuchen, wurde kein Build live gestellt.
    Lösung: Stellen Sie Ihren Build auf einer Branch live, indem Sie https://partner.steamgames.com/apps/builds/<YourGameAppId> aufrufen und die betreffende Branch im Steam-Client auswählen. (wie hier beschrieben wird).
  • Ungültige Spielstartoptionen.
    Lösung: Überprüfen Sie die Startoptionen in der Appverwaltung für Ihr Spiel auf dem Reiter „Konfiguration“: https://partner.steamgames.com/apps/config/<YourGameAppId>.
  • Sie besitzen die Depot-IDs nicht, aus denen das Spiel besteht.
    Lösung: Stellen Sie sicher, dass die erforderlichen Depots zum Entwicklungsabonnement hinzugefügt werden (weitere Details siehe Bearbeiten von Paketen).

„Fehlercode 15“ beim Start

Die CEG-Server haben die Anfrage abgewiesen, die EXE-Datei mit CEG zu schützen. Überprüfen Sie den Veröffentlichungsstatus auf der Spielseite. Wenn der Status nicht „Spielbar“ ist, müssen Sie Steam-Schlüssel anfordern, die den Veröffentlichungsstatus außer Kraft setzen.

„Die Steam-Server sind ausgelastet und können Ihre Anfrage nicht bearbeiten ... Fehlercode (2)“ (beim Start)

Die CEG-Server konnten keine übereinstimmende CEG-EXE-Datei finden. Überprüfen Sie noch einmal, ob im Reiter „CEG“ Ihrer Appverwaltung eine CEG-Ausführungsdatei angegeben ist. Klicken Sie auf die Schaltfläche „Status“, um sicherzustellen, dass sie konfiguriert ist.

Ich kann mich nicht mehr daran erinnern, wie der steamcmd-Befehl lautete oder wie er funktioniert hat.

Verwenden Sie in steamcmd den Befehl „find“, um nach steamcmd-Befehlen zu suchen. Der Befehl „find“ kann nach teilweise angegebenen Befehlsnamen suchen und listet die Befehlssyntax auf.
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>