Steamworks-Dokumentation
Steam Cloud
Ein kurzer Überblick
Die Steam Cloud speichert automatisch Daten Ihres Spiels auf Steam-Servern. So haben Ihre Spieler nach Anmeldung auf Steam von jedem Computer aus Zugriff auf ihre Speicherstände.
Integrationslevel
Auf der Steamworks-Website ist die Konfiguration der Dateipfade erforderlich. Alternativ sind API-Aufrufe aus dem Spielcode zu Steamworks erforderlich, damit das Spiel aufzählen, lesen, löschen bzw. Dateien in die Steam-Cloud schreiben kann.

Steam Cloud – Übersicht

Die Steam Cloud bietet ein einfaches und transparentes System zum externen Speichern von Dateien für Ihr Spiel. Alle in der Auto-Cloud-Konfiguration angegebenen oder über die Cloud-API auf das Laufwerk geschriebenen Dateien (erstellt, geändert, gelöscht usw.) werden nach Beendigung des Spiels automatisch auf den Steam-Servern repliziert.

Wenn der Benutzer zu einem anderen Computer wechselt, werden die Dateien automatisch auf den neuen Computer heruntergeladen, bevor das Spiel startet. Das Spiel liest dann die Daten entweder über die Cloud-API oder wie gewöhnlich direkt vom Laufwerk. Vermeiden Sie gerätespezifische Konfigurationen wie Grafikeinstellungen.

Der Steam-Client sorgt dafür, dass die Dateien auf allen Computern des Benutzers synchronisiert werden.

Benutzer können die Cloud-Synchronisation in den Steam-Einstellungen global deaktivieren, indem sie die Option „Steam-Cloud-Synchronisation für alle unterstützten Anwendungen aktivieren“ deaktivieren.

Benutzer können die Cloud-Synchronisation auch für einzelne Spiele in den Eigenschaften des jeweiligen Spiels deaktivieren.

Spacewar_Cloud_Properties.png

Hinweise und bewährte Praktiken


Steam synchronisiert die Steam-Cloud-Dateien von Nutzern vor und nach jeder Spielsitzung. Während einer Spielsitzung veränderte Dateien werden unmittelbar danach in die Steam Cloud hochgeladen. Das Speichern sehr großer oder vieler kleiner Dateien in der Steam Cloud kann die Bandbreite von Nutzern belasten und das Beenden von Steam sowie einen Neustart des jeweiligen Spiels verzögern.

Grundsätzlich eignen sich kleinere Dateien besser. Wenn Speicherdaten eines Benutzers in verschiedene Kategorien aufgeteilt werden können (Dinge, die sich oft ändern, und Dinge, die sich nicht oft ändern), dann empfehlen wir die Verwendung separater Dateien für diese Kategorien. Auf diese Weise werden unveränderte Speicherdaten nicht nach jeder Spielsitzung erneut hochgeladen.

Maximale Dateigröße


Die zulässigen Größen für Steam-Cloud-Dateien können sich mit der Zeit ändern. Hier die aktuellen Maximalgrößen:

GrößeBeschränkung
100 MBMaximale Größe für einen Aufruf von ISteamRemoteStorage::FileWrite oder ISteamRemoteStorage::FileWriteStreamWriteChunk.
256 MBKann dazu führen, dass ein nicht optimaler Speicherendpunkt für den Standort des Nutzers gewählt wird, wodurch die Leistung beim Hoch- und Herunterladen beeinträchtigt wird.

Pfade zu Speicherständen

Achten Sie bei der Festlegung des Pfades für Speicherstände darauf, dass dieser für den aktuellen Steam-Nutzer einzigartig ist. Falls nötig, kann die einzigartige Steam-ID eines Nutzers über ISteamUser::GetSteamID abgerufen werden. Von dieser kann man über GetAccountID() auf die Account-ID zugreifen, welche als einzigartige Variable für den Speicherpfad verwendet werden kann.

Plattformübergreifende Speicherstände


Wenn Ihr Spiel für mehrere Plattformen verfügbar ist (oder dies in Zukunft geplant ist), sollten Sie dies bei der Einrichtung der Steam Cloud berücksichtigen.

Wenn Sie vorhaben, Dateien direkt über die Schnittstelle ISteamRemoteStorage zu lesen/schreiben, können Sie die Plattformsynchronisation über ISteamRemoteStorage::SetSyncPlatforms steuern. Standardmäßig wird eine neue Datei mit allen Plattformen synchronisiert.

Für die Nutzung der Steam-Auto-Cloud gibt es einige wichtige Dinge zu beachten. Erstens werden neue Dateien standardmäßig nur mit der Einstellung für das Betriebssystem auf dem damit verknüpften Auto-Cloud-Stammpfad synchronisiert. Dies bedeutet, dass, wenn Sie für jedes Betriebssystem ein eigenes Stammverzeichnis einrichten, alle Dateien nach Plattform unterteilt werden und es somit keine plattformübergreifende Speicherfunktion gibt.

Definieren Sie daher für plattformübergreifende Speicherstände einen einzigen Stammpfad (wahrscheinlich für Windows) und erstellen Sie dann Stammverzeichnis-Überbrückungen für die anderen unterstützten Plattformen. Dateien, die einem bestimmten Stammpfad entsprechen, der auch Stammverzeichnis-Überbrückungen für andere Plattformen hat, werden mit allen Plattformen sowohl im ursprünglichen Stammverzeichnis als auch in allen Überbrückungen synchronisiert. Weitere Informationen finden Sie in unserer Dokumentation zur Steam-Auto-Cloud.

Ersteinrichtung

Um die Steam Cloud einzurichten, müssen Sie die Optionen Bytekontingent pro Nutzer und Erlaubte Anzahl von Dateien pro Nutzer auf der Seite Steam-Cloud-Einstellungen in der Anwendungsverwaltung auf Steamworks einstellen.

Dieses Kontingent wird pro Benutzer und pro Spiel berechnet. Sie sollten diese Optionen auf sinnvolle Werte für Ihren Spieltitel einstellen.

HINWEIS: Vergessen Sie nicht, unten auf der Seite auf „Speichern“ zu klicken und die geänderten Einstellungen zu veröffentlichen. Nach der Veröffentlichung wird allen Besitzern Ihres Spiels das Cloud-Symbol im Steam-Client angezeigt.

Bei einem bereits veröffentlichten Spiel können Sie das Kontrollkästchen Cloud-Support nur für Entwickler aktivieren aktivieren. Wenn der Modus „Nur für Entwickler” aktiviert ist, sehen nur Steam-Accounts das Cloud-Symbol und können die Steam Cloud nutzen, die eine „Developer Comp” -Lizenz für Ihren Titel besitzen. So können Sie die Integration der Steam Cloud sicher testen, ohne das Spielerlebnis öffentlicher Benutzer zu beeinträchtigen. Dies hat keine Auswirkung auf unveröffentlichte Spiele, da noch niemand diese Spiele besitzt und daher auch niemand Cloud-Speicher für diese App-ID sehen oder aufrufen kann.

Sie können Cloud-Speicherplatz für zwei App-IDs gemeinsam verwenden, indem Sie das Feld Geteilte Cloud-App-ID ausfüllen. Diese Option wird hauptsächlich verwendet, um Speicherstände aus Demos in die Vollversion zu übernehmen. Ein Wert von 0 deaktiviert diese Funktion.

Steam-Cloud-API und Steam-Auto-Cloud

Steam bietet zwei verschiedene Methoden für die Nutzung der Steam Cloud. Im Folgenden geben wir Ihnen einen Überblick über die Unterschiede, damit Sie entscheiden können, welche Methode für Ihre Anwendung am besten geeignet ist.

Die erste Methode ist die Steam-Cloud-API.
Mit den Funktionen der Cloud-API können Sie die Steam Cloud direkt in Ihr Spiel integrieren. Die Cloud-API isoliert einzelne Steam-Benutzerdateien voneinander und bietet eine umfangreichere Kontrolle über die Steam Cloud.

Die Steam-Cloud-API wird über die API-Schnittstelle ISteamRemoteStorage bereitgestellt. Beispiele für deren Verwendung finden Sie im Beispielprojekt.

Die zweite Methode ist die Steam-Auto-Cloud.
Steam-Auto-Cloud wurde für Spiele entwickelt, in die Sie die Steam-Cloud-API nicht integrieren. Mit Steam-Auto-Cloud können Sie schnell und einfach loslegen, allerdings bietet diese Methode nicht dieselbe Flexibilität wie die Steam-Cloud-API.

Wenn Sie eine tiefere Integration der Steam-Cloud bevorziegen (z. B. um die Auswahl von in der Cloud zu speichernden Speicherdateien zu ermöglichen), sollten Sie die Cloud-API verwenden. Andernfalls können Sie die Steam-Auto-Cloud einsetzen.

Steam-Auto-Cloud

Steam-Auto-Cloud ist eine Alternative zur Steam-Cloud-API, mit der Anwendungen die Steam Cloud verwenden können, ohne dass hierfür Code geschrieben oder das Spiel modifiziert werden muss. Sie müssen lediglich die Dateigruppen angeben, die in der Cloud gespeichert werden sollen. Steam synchronisiert diese Dateigruppen dann automatisch bei jedem Starten und Beenden der Anwendung. Gerätespezifische Konfigurationen wie Grafikeinstellungen sollten nicht in der Cloud gespeichert werden.
Hinweis: Die Datei „steam_autocloud.vdf“ wird an jedem in Ihrem Steamworks-Cloud-Pfad angegebenen Ort erstellt. Diese Datei wird von Steam verwendet und kann von Ihrem Spiel ignoriert werden.

Einrichtung

Nach Abschluss der Ersteinrichtung wird der Abschnitt zur Steam-Auto-Cloud-Konfiguration auf der Seite Steam-Cloud-Einstellungen aktiviert.

Stammverzeichnispfade geben Gruppen von Dateien an, die in der Steam Cloud gespeichert werden sollen. Jeder Stammverzeichnispfad kann beliebig spezifisch sein, von einer einzelnen Datei bis hin zu allen Dateien eines bestimmten Unterordners. Verwenden Sie für jede Gruppe zu synchronisierender Dateien einen neuen Pfad.

Ein Stammverzeichnispfad besteht aus fünf Teilen:
  1. Stammverzeichnis

    Dies ist eine vordefinierte Liste von Pfaden, in denen Spielstände üblicherweise gespeichert werden.
    StammverzeichnisUnterstützte BetriebssystemeEntsprechender Pfad
    Installationsverzeichnis der AnwendungAlle[Steam-Installationsverzeichnis]\SteamApps\common\[Spielordner]\
    SteamCloudDocumentsAllePlattformspezifischer Pfad, z. B. für Linux: ~/.SteamCloud/[Benutzername]/[Spielordner]/
    WinMyDocumentsWindows%USERPROFILE%\Dokumente\
    WinAppDataLocalWindows%USERPROFILE%\AppData\Local\
    WinAppDataLocalLowWindows%USERPROFILE%\AppData\LocalLow\
    WinAppDataRoamingWindows%USERPROFILE%\AppData\Roaming\
    WinSavedGamesWindows%USERPROFILE%\Gespeicherte Spiele\
    MacHomemacOS~/
    MacAppSupportmacOS~/Library/Application Support/
    MacDocumentsmacOS~/Documents/
    LinuxHomeLinux~/
    LinuxXdgDataHomeLinux$XDG\_DATA\_HOME/

    Ein Hinweis zu Windows-Pfaden mit %USERPROFILE%: Die oben aufgeführten Pfade sind Standardorte. Benutzer können nun ihre Windows-Installataion so konfigurieren, dass sich diese Ordner an anderen Orten befinden (nicht unbedingt unter %USERPROFILE%). Steam verwendet die entsprechenden Windows-APIs, um den aktuellen Speicherort dieser Ordner zu finden, unabhängig davon, ob es sich um den Standardordner oder einen benutzerdefinierten Ort handelt.

  2. Unterverzeichnis

    Unterverzeichnispfad zu den Cloud-Dateien relativ zum Stammverzeichnis. Verwenden Sie einen Punkt (.), wenn es kein Unterverzeichnis gibt.

    Spezielle Auto-Cloud-Pfadwerte
    Auto-Cloud ermöglicht die Verwendung eindeutiger Steam-Benutzer-Bezeichner im Unterverzeichnis-Pfad. So können Sie Spielstände für jeden Benutzer des Computers separat speichern. Sie können in Ihrem Spiel ISteamUser::GetSteamID aufrufen, um die Steam-ID oder die Account-ID des aktuellen Benutzers abzufragen und im Speicherpfad zu verwenden.
    • {64BitSteamID}: Verwenden Sie diese Variable im Steam-Pfad, um die 64-Bit-Steam-ID des Benutzers einzufügen. Eine 64-Bit-Steam-ID sieht wie folgt aus: 76561198027391269.
    • {Steam3AccountID}: Verwenden Sie diese Variable im Steam-Pfad, um die Steam3-Account-ID des Benutzers einzufügen. Eine Account-ID sieht wie folgt aus: 67125541.
    Beispiel: SavesDir/{64BitSteamID}
  3. Muster

    Dateimaskenmuster. Sie können * als Platzhalter verwenden. Wenn Sie alle Dateien im Verzeichnis einschließen möchten, verwenden Sie einfach *.

    Beispiel: *.sav
  4. Betriebssystem

    Legt das Betriebssystem fest, mit/von dem diese Dateien synchronisiert werden. Dies ist nur erforderlich, wenn die Dateien betriebssystemspezifisch sind, was hoffentlich nicht der Fall ist!
  5. Rekursiv

    Bezieht Unterverzeichnisse bei der Suche nach Dateien mit ein. Dies ist sinnvoll für Unterverzeichnisse mit nicht-deterministischen Namen, z. B. Steam-fremde Benutzernamen oder IDs. Wenn der Pfad eine Steam-ID enthält, sollten im Feld „Unterverzeichnis“ die speziellen Pfadwerte verwendet werden.

Stammverzeichnis-Überbrückungen

Wenn Ihre Anwendung mehrere Plattformen unterstützt und für jedes Betriebssystem andere Verzeichnisse erforderlich sind, können Sie die oben eingestellten Stammverzeichnisse mit „Stammverzeichnisüberbrückungen“ überbrücken.

Die oben angegebenen Stammverzeichnispfade können überbrückt werden, um auf einem anderen Betriebssystem auf einen anderen Pfad zu verweisen. Wenn Sie einen Stammverzeichnispfad überbrücken möchten, müssen Sie oben für das entsprechende Stammverzeichnis als Betriebssystem „[Alle Betriebssysteme]” auswählen.

Eine Stammverzeichnis-Überbrückung besteht aus fünf Teilen:
  1. Ursprüngliches Stammverzeichnis

    Dies entspricht einem der oben eingestellten Stammverzeichnisse.
  2. Betriebssystem

    Das Betriebssystem, auf das die Überbrückung angewendet wird.
  3. Neues Stammverzeichnis

    Der neue Speicherort, auf den das ursprüngliche Stammverzeichnis auf dem angegebenen Betriebssystem verweist.
  4. Pfad anfügen/ersetzen

    Hiermit können Sie optional einen Unterverzeichnispfad angeben, der zwischen dem neuen Stammverzeichnis und dem ursprünglichen Unterverzeichnis angefügt wird.
  5. Pfad ersetzen

    Wenn aktiviert, ersetzt der unter „Pfad anfügen/ersetzen“ angegebene Pfad das Stammunterverzeichnis, statt es anzufügen.

Beispiel: Konfiguration von Auto-Cloud für Unity-Anwendungen

Das folgende Beispiel zeigt die Einrichtung von Auto-Cloud für die Verwendung mit Unity und der Eigenschaft Application.persistentDataPath, dessen Wert je nach Betriebssystem unterschiedlich ist. Die Windows-Version wird als Stammverzeichnispfad konfiguriert. Wir gehen in diesem Beispiel davon aus, dass das Unternehmen in Unity „DefaultCompany” und das Projekt „AutocloudSample” genannt wurde. Für macOS und Linux/SteamOS werden die alternativen Pfade von Application.persistentDataPath im Feld „Pfad anfügen/ersetzen“ eingetragen und „Pfad ersetzen“ aktiviert.

Mit diesen Einstellungen werden im Beispiel Auto-Cloud-Dateien zwischen den unter „Vorschau“ angezeigten drei Ordnern synchronisiert.

Cloud_Unity_Auto-Cloud_Example.png

Testen vor der Veröffentlichung

Wenn Sie Steam-Auto-Cloud zu einem bereits veröffentlichten Spiel hinzufügen und bei der Ersteinrichtung die Cloudunterstützung nur für Entwickler aktiviert haben, müssen Sie einige zusätzliche Schritte durchführen, um die Funktionalität zu testen.
  1. Melden Sie sich bei Steam mit einem Account an, der die zu testende Anwendung besitzt.
  2. Öffnen Sie die Steam-Konsole, indem Sie in Ihrem Browser steam://open/console aufrufen.
  3. Geben Sie in der Konsole testappcloudpaths <App-ID> mit der App-ID der zu testenden Anwendung ein. Beispiel: testappcloudpaths 480
  4. Geben Sie in der Konsole set_spew_level 4 4 ein.
  5. Starten Sie Ihre Anwendung über Steam.
  6. Überprüfen Sie die Konsole auf Aktivitäten. Wenn in den Auto-Cloud-Pfaden bereits Dateien vorhanden sind, sollten diese jetzt hochgeladen werden. Ansonsten speichern Sie einige Dateien aus Ihrer Anwendung und beenden sie dann, um eine Synchronisierung auszulösen.
  7. Wechseln Sie zu einem anderen PC und wiederholen Sie die oben beschriebenen Schritte, um das Herunterladen von Dateien aus Steam-Auto-Cloud zu testen.
  8. Führen Sie diesen Test unbedingt mit allen unterstützten Betriebssystemen durch.
  9. Beenden Sie den Test mit testcloudapppaths 0 und set_spew_level 0 0. Um den Konsolen-Tab zu schließen, können Sie den Steam-Client neu starten.

Vergessen Sie nicht nach Abschluss der Testphase den Entwicklermodus zu deaktivieren und die Änderungen zu veröffentlichen.

Dynamische Cloud-Synchronisierung


Steam Cloud unterstützt jetzt dynamische Synchronisierung, bei der Änderungen in der Cloud während einer Anwendungssitzung auf das lokale Gerät heruntergeladen werden können. Das aktuelle Beispiel ist eine pausierte Spielsitzung auf dem Steam Deck. Steam synchronisiert Dateien von Anwendungen mit Unterstützung von dynamischer Cloud-Synchronisierung zum Zeitpunkt der Pausierung (versetzen in den Bereitschaftszustand). Der Nutzer kann dann das Spiel auf einem anderen Gerät fortsetzen, das beim Start die Updates der Steam-Deck-Sitzung erhält. Beim Beenden werden diese Änderungen in die Steam Cloud hochgeladen. Wenn das Steam Deck aus dem Ruhemodus aktiviert wird, synchronisiert Steam die Änderungen mit diesem Gerät und sendet eine Benachrichtigung an die Anwendung, dass sich die lokalen Dateien geändert haben. Die Anwendung kann dann diese Änderungen durchlaufen und entsprechende Aktionen durchführen. Beispielsweise kann das Spiel einfach den aktualisierten Fortschritt vom Datenträger laden und dem Nutzer ermöglichen, dort weiterzumachen, wo er auf dem anderen Gerät aufgehört hat.

In unserer Ankündigung finden Sie weitere Informationen darüber, warum es diese Funktion gibt und wie man sie nutzt.

Hinweis: Diese Funktion unterstützt Anwendungen, unabhängig davon, ob sie die API ISteamRemoteStorage zur Verwaltung von Dateien oder Auto-Cloud verwenden.

Weitere Informationen finden Sie in der Dokumentation zu ISteamRemoteStorage, insbesondere ISteamRemoteStorage::RemoteStorageLocalFileChange_t, ISteamRemoteStorage::GetLocalFileChangeCount und ISteamRemoteStorage::GetLocalFileChange.

Siehe auch: ISteamRemoteStorage::BeginFileWriteBatch und ISteamRemoteStorage::EndFileWriteBatch (Diese Wrapper sollten verwendet werden, um Steam Hinweise zu geben, damit die Anwendung sicher zu dem Zeitpunkt mit der Steam Cloud synchronisiert wird, an dem der Nutzer das System in den Bereitschaftszustand versetzt.)

Testen vor der Veröffentlichung


Sie können die dynamische Cloud-Synchronisierung lokal aktivieren, um Ihre Builds zu testen. Dies ist für bereits veröffentlichte Spiele empfehlenswert, da die Aktivierung der dynamischen Cloud-Synchronisierung für alle Nutzer zu Datenverlust führen kann, wenn diese einen Build ausführen, der die neuen Methoden und Rückrufe der API nicht verarbeiten kann.

Zum lokalen Testen mit einem PC:

  1. Melden Sie sich bei Steam mit einem Account an, der die zu testende Anwendung besitzt.
  2. Öffnen Sie die Steam-Konsole, indem Sie in Ihrem Browser steam://open/console aufrufen. (Sie können Steam auch über die Befehlszeile steam -console ausführen und dann direkt die Konsole aufrufen).
  3. Geben Sie in der Konsole @cloud_testdynamicsyncapp <App-ID> mit der App-ID der zu testenden Anwendung ein. Beispiel: @cloud_testdynamicsyncapp 480
  4. Starten Sie Ihre Anwendung über Steam.
  5. Spielen Sie das Spiel bis zum gewünschten Spielfortschritt.
  6. Geben Sie in der Steam-Konsole prepare_for_suspend ein. Steam pausiert Ihren Spielfortschritt und lädt alle geänderten Dateien in die Steam Cloud hoch.
  7. Optional: Spielen Sie das Spiel auf einem anderen Gerät weiter und beenden Sie das Spiel, damit der Steam Client den Fortschritt in die Steam Cloud hochlädt.
  8. Kehren Sie zum ursprünglichen Gerät zurück und geben Sie in der Steam-Konsole resume_suspended_games ein. Hierdurch werden alle benötigten Dateien mit der Steam Cloud synchronisiert, entsprechende API-Aufrufe an Ihr Spiel gesendet und Ihr Spielfortschritt fortgesetzt.

Zum lokalen Testen mit einem Steam Deck:

  1. Verbinden Sie Ihr Steam Deck mit einem Entwicklerkit.
  2. Weitere Informationen zur Nutzung der CEF-Konsole finden Sie hier.
  3. Geben Sie in der JS-Konsole SteamClient.Console.ExecCommand("@cloud_testdynamicsyncapp <App-ID>") ein, um den Testmodus zu aktivieren. Mit SteamClient.Console.ExecCommand("@cloud_testdynamicsyncapp 0") kann der Testmodus wieder deaktiviert werden.

Debuggen

Vergewissern Sie sich zunächst immer, dass Sie Ihre Änderungen auf der Steam-Partnerwebsite veröffentlicht und bis zu 10 Minuten gewartet oder Ihren Steam-Client neu gestartet haben, um die veröffentlichten Änderungen zu empfangen.

Sollten Probleme mit der Steam Cloud auftreten, prüfen Sie die Protokolldatei unter <Steam-Installationsverzeichnis>\logs\cloud_log.txt.

Weitere Informationen finden Sie unter Debuggen der Steamworks-API.