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.
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öße | Beschränkung |
---|
100 MB | Maximale Größe für einen Aufruf von ISteamRemoteStorage::FileWrite oder ISteamRemoteStorage::FileWriteStreamWriteChunk. |
256 MB | Kann 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:
-
Stammverzeichnis
Dies ist eine vordefinierte Liste von Pfaden, in denen Spielstände üblicherweise gespeichert werden.
Stammverzeichnis | Unterstützte Betriebssysteme | Entsprechender Pfad |
Installationsverzeichnis der Anwendung | Alle | [Steam-Installationsverzeichnis]\SteamApps\common\[Spielordner]\ |
SteamCloudDocuments | Alle | Plattformspezifischer Pfad, z. B. für Linux: ~/.SteamCloud/[Benutzername]/[Spielordner]/ |
WinMyDocuments | Windows | %USERPROFILE%\Dokumente\ |
WinAppDataLocal | Windows | %USERPROFILE%\AppData\Local\ |
WinAppDataLocalLow | Windows | %USERPROFILE%\AppData\LocalLow\ |
WinAppDataRoaming | Windows | %USERPROFILE%\AppData\Roaming\ |
WinSavedGames | Windows | %USERPROFILE%\Gespeicherte Spiele\ |
MacHome | macOS | ~/ |
MacAppSupport | macOS | ~/Library/Application Support/ |
MacDocuments | macOS | ~/Documents/ |
LinuxHome | Linux | ~/ |
LinuxXdgDataHome | Linux | $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.
-
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}
-
Muster
Dateimaskenmuster. Sie können *
als Platzhalter verwenden. Wenn Sie alle Dateien im Verzeichnis einschließen möchten, verwenden Sie einfach *
.
Beispiel: *.sav
-
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!
-
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:
-
Ursprüngliches Stammverzeichnis
Dies entspricht einem der oben eingestellten Stammverzeichnisse.
-
Betriebssystem
Das Betriebssystem, auf das die Überbrückung angewendet wird.
-
Neues Stammverzeichnis
Der neue Speicherort, auf den das ursprüngliche Stammverzeichnis auf dem angegebenen Betriebssystem verweist.
-
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.
-
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.
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.
- Melden Sie sich bei Steam mit einem Account an, der die zu testende Anwendung besitzt.
- Öffnen Sie die Steam-Konsole, indem Sie in Ihrem Browser
steam://open/console
aufrufen.
- Geben Sie in der Konsole
testappcloudpaths <App-ID>
mit der App-ID der zu testenden Anwendung ein. Beispiel: testappcloudpaths 480
- Geben Sie in der Konsole
set_spew_level 4 4
ein.
- Starten Sie Ihre Anwendung über Steam.
- Ü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.
- Wechseln Sie zu einem anderen PC und wiederholen Sie die oben beschriebenen Schritte, um das Herunterladen von Dateien aus Steam-Auto-Cloud zu testen.
- Führen Sie diesen Test unbedingt mit allen unterstützten Betriebssystemen durch.
- 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:
- Melden Sie sich bei Steam mit einem Account an, der die zu testende Anwendung besitzt.
- Ö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).
- Geben Sie in der Konsole
@cloud_testdynamicsyncapp <App-ID>
mit der App-ID der zu testenden Anwendung ein. Beispiel: @cloud_testdynamicsyncapp 480
- Starten Sie Ihre Anwendung über Steam.
- Spielen Sie das Spiel bis zum gewünschten Spielfortschritt.
- 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.
- 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.
- 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:
- Verbinden Sie Ihr Steam Deck mit einem Entwicklerkit.
- Weitere Informationen zur Nutzung der CEF-Konsole finden Sie hier.
- 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.