Dokumentasi Steamworks
Steam Cloud
Secara singkat
Steam Cloud secara otomatis menyimpan file dari game-mu di server Steam sehingga pemain dapat login ke Steam dan mengakses game yang disimpan dari komputer mana pun.
Tingkat integrasi
Konfigurasi jalur file diperlukan di situs web Steamworks. Atau, panggilan API diperlukan dalam kode game ke Steamworks agar game dapat menghitung, membaca, menghapus, atau menulis file di Steam Cloud,

Ringkasan Steam Cloud

Steam Cloud menyediakan penyimpanan file jarak jauh yang mudah dan transparan untuk game-mu. File yang ditentukan dalam konfigurasi Auto-Cloud atau ditulis ke disk (dibuat, dimodifikasi, dihapus, dll.) menggunakan API Cloud akan secara otomatis digandakan ke server Steam setelah game keluar.

Jika pengguna mengganti komputer, file secara otomatis diunduh ke komputer baru sebelum peluncuran game. Game kemudian dapat mengakses file dengan membaca melalui API Cloud atau membacanya langsung dari disk seperti biasa. Hindari konfigurasi khusus perangkat seperti untuk pengaturan video.

Steam Client memastikan bahwa file tetap disinkronkan di semua komputer yang mungkin diakses pengguna.

Pengguna dapat secara global menonaktifkan sinkronisasi Cloud di Pengaturan Steam di tab Cloud dengan menghapus centang "Aktifkan sinkronisasi Steam Cloud untuk aplikasi yang mendukungnya."

Pengguna juga dapat menonaktifkan sinkronisasi Cloud berdasarakan per game di setiap properti game.

Spacewar_Cloud_Properties.png

Catatan dan Praktik Terbaik


Penting untuk diingat bahwa Steam akan menyinkron file Steam Cloud pengguna untuk game-mu sebelum dan setelah setiap sesi. Semua file sama yang berubah selama sesi akan diunggah ke penyimpanan Cloud segera setelahnya. Jika game-mu menulis file yang sangat besar (atau banyak file berukuran kecil) ke Steam Cloud, hal ini dapat menyebabkan dampak yang terlihat pada bandwidth internet pengguna dan juga menunda kemampuan untuk menutup Steam, atau meluncurkan ulang game.

Sebagai aturan umum, file yang lebih kecil lebih baik. Jika status penyimpanan untuk pengguna tertentu dapat dipisah menjadi beberapa kategori berbeda - hal yang mungkin sering berubah, dan hal yang mungkin tidak sering berubah - maka sebaiknya gunakan file terpisah untuk kategori tersebut. Dengan begitu, status yang tidak diubah tidak akan diunggah ulang setelah setiap sesi.

Batas Ukuran File


Batas mutlak ukuran file untuk Steam Cloud dapat berubah seiring waktu. Berikut adalah beberapa batas dan ambang batas saat ini:

UkuranBatasan
100MBBatas maksimum untuk memanggil ISteamRemoteStorage::FileWrite atau ISteamRemoteStorage::FileWriteStreamWriteChunk
256MBDapat menghasilkan pilihan titik akhir penyimpanan yang tidak optimal untuk lokasi pengguna, berdampak negatif pada kinerja pengunggahan/pengunduhan

Jalur Penyimpanan File

Saat memutuskan di mana akan menulis file simpananmu, pastikan jalurnya unik untuk pengguna Steam saat ini. Jika diperlukan, kamu bisa mendapatkan ID Steam unik pengguna via ISteamUser::GetSteamID. Dari situ, kamu dapat mengakses ID akun mereka dari GetAccountID(), yang memungkinkanmu memiliki variabel unik saat membuat jalur penyimpanan.

Penyimpanan Lintas Platform


Jika gamemu didukung di beberapa platform (atau bahkan jika kamu berencana untuk mendukungnya di masa mendatang) kamu harus mempertimbangkan hal ini saat menyiapkan Steam Cloud untuk game-mu.

Jika kamu berencana untuk membaca/menulis file secara langsung melalui antarmuka ISteamRemoteStorage, maka kamu dapat mengontrol penyinkronan platform via ISteamRemoteStorage::SetSyncPlatforms. Default untuk file baru adalah untuk menyinkronkan ke semua platform.

Jika kamu berencana menggunakan Steam Auto-Cloud, terdapat beberapa hal utama yang harus diketahui. Pertama, default untuk file baru adalah untuk menyinkron ke pengaturan OS saja di jalur Root Auto-Cloud terkait. Artinya, jika kamu mengatur root berbeda untuk setiap OS, semua file akan dipartisi oleh platform sehingga tidak akan ada fungsionalitas penyimpanan lintas platfrom.

Untuk mengaktifkan penyimpanan lintas platform, sebaiknya tentukan satu jalur Root (kemungkinan untuk Windows), lalu membuat Penimpaan Root untuk platform lain yang didukung. File yang sama dengan jalur Root tertentu, yang juga memiliki Penimpaan Root platform, akan disinkronkan ke semua platform di Root awal dan semua Penimpaan. Lihat dokumentasi Steam Auto-Cloud untuk rincian selengkapnya.

Pengaturan Awal

Untuk mengatur Steam Cloud, silakan atur opsi Kuato Byte per pengguna dan Jumlah file yang diizinkan untuk per pengguna di halaman Pengaturan Steam Cloud di panel Admin Aplikasi Steamworks.

Kuota ini diberlakukan pada setiap game yang mendukung Cloud, berdasarkan per pengguna per game. Disarankan untuk menetapkan nilai ke jumlah yang wajar untuk game-mu.

CATATAN: Jangan lupa klik "Simpan" di bagian bawah halaman, dan "Publikasikan" pembaruan pengaturanmu. Setelah dipublikasikan ikon cloud akan terlihat di Steam Client untuk siapa pun yang memiliki game-mu.

Jika game-mu sudah dirilis ke publik, maka centang kotak berlabel Aktifkan dukungan cloud hanya untuk pengembang. Jika mode khusus pengembang diaktifkan, maka hanya akun Steam yang memiliki lisensi "Dev Comp" game-mu akan melihat ikon cloud dan akan dapat menggunakan Steam Cloud. Ini berguna untuk menguji integrasi Steam Cloud dengan aman tanpa merusak UX publik. Hal ini tidak berpengaruh pada game yang belum dirilis karena belum ada yang memiliki game tersebut sehingga mereka tidak akan dapat melihat atau mengakses penyimpanan cloud apa pun untuk AppID tertentu.

Kamu dapat berbagi ruang penyimpanan Cloud antara dua AppID dengan mengisi kolom AppID cloud bersama. Ini paling sering digunakan untuk berbagi game yang disimpan antara demo dan game penuhnya. Nilai 0 dinonaktifkan untuk fitur ini.

API Steam Cloud dan Steam Auto-Cloud

Steam menyediakan dua metode berbeda untuk penggunaan Steam Cloud, baca perbedaan kedua metode, dan tentukan yang terbaik untuk aplikasimu.

Pertama API Steam Cloud.
API Cloud memberikan beberapa fungsi yang memungkinkan untuk mengintegrasi Steam Cloud langsung ke game-mu. API Cloud mengisolasi file individual milik pengguna Steam dari satu sama lain dan memberikan tingkat kontrol tinggi melalui Steam Cloud.

API Steam Cloud diekspos via API ISteamRemoteStorage. Contoh dapat ditemukan di Steamworks API Example Application (SpaceWar) proyek.

Kedua adalah Steam Auto-Cloud.
Steam Auto-Cloud didesain untuk game di mana kamu memilih untuk tidak mengintegrasikan API Steam Cloud. Ini memberikan cara cepat dan mudah untuk memulai, tapi tidak memilki fleksibilitas yang sama seperti yang dimiliki API Steam Cloud.

Jika kamu lebih suka integrasi yang lebih dalam dengan Steam Cloud (misalnya, memungkinkan untuk memilih file simpanan mana yang disimpan di cloud), sebaiknya gunakan API Cloud. Jika tidak, kamu dapat menggunakan Steam Auto-Cloud.

Steam Auto-Cloud

Steam Auto-Cloud adalah alternatif API Steam Cloud yang memungkinkan aplikasi untuk menggunakan Steam Cloud tanpa menulis kode atau memodifikasi game. Ini hanya mengharuskanmu untuk menentukan grup file mana yang kamu ingin tetap berada di Cloud. Steam akan secara otomatis menyinkronkan grup file saat aplikasi diluncurkan dan ditutup. Hindari konfigurasi khusus perangkat seperti untuk kualitas video.
Catatan: file steam_autocloud.vdf akan dibuat di setiap lokasi yang ditentukan oleh jalur cloud Steamworks milikmu. File ini digunakan oleh Steam dan dapat diabaikan oleh game-mu.

Pengaturan

Setelah menyelesaiakan Pengaturan Awal bagian konfigurasi Steam Auto-Cloud akan terbuka di halaman Pengaturan Steam Cloud.

Jalur Root mendeskripsikan kumpulan file yang akan selalu disimpan di Steam Cloud. Setiap Jalur Root dapat ditentukan sebagai sebuah file atau semua file dalam subfolder tertentu. Gunakan jalur baru untuk setiap kumpulan file untuk menyinkronkan.

Jalur Root terdiri atas lima bagian:
  1. Root

    Ini adalah daftar jalur yang ditentukan sebelumnya, di mana simpanan game biasanya berada.
    RootOS yang didukungJalur yang Sesuai
    Direktori Instalasi AplikasiSemua[Steam Install]\SteamApps\common\[Game Folder]\
    SteamCloudDocumentsSemuaJalur khusus platform, cth. pada Linux: ~/.SteamCloud/[username]/[Game Folder]/
    WinMyDocumentsWindows%USERPROFILE%\My Documents\
    WinAppDataLocalWindows%USERPROFILE%\AppData\Local\
    WinAppDataLocalLowWindows%USERPROFILE%\AppData\LocalLow\
    WinAppDataRoamingWindows%USERPROFILE%\AppData\Roaming\
    WinSavedGamesWindows%USERPROFILE%\Saved Games\
    MacHomemacOS~/
    MacAppSupportmacOS~/Library/Application Support/
    MacDocumentsmacOS~/Documents/
    LinuxHomeLinux~/
    LinuxXdgDataHomeLinux$XDG\_DATA\_HOME/

    Catatan terkait Windows jalur Windows %USERPROFILE%: Jalur sesuai yang sesuai yang dicantumkan di atas merupakan lokasi default. Sekarang pengguna dapat mengonfigurasi instalasi Windows mereka sehingga folder-folder ini berada di lokasi yang berbeda (tidak harus di dalam %USERPROFILE%). Steam menggunakan API Windows yang diperlukan untuk menemukan lokasi folder-folder saat ini, terlepas jika mereka merupakan default atau kustomisasi.

  2. Subdirektori

    Jalur subdirektori file terkait yang disimpan di cloud ke Root. Gunakan "." jika tidak ada subdirektori.

    Nilai jalur Auto-Cloud khusus
    Auto-Cloud memungkinkan penggunaan pengenal pengguna Steam unik di jalur Subdirektori. Ini memungkinkan untuk menyimpan file simpanan untuk setiap pengguna Steam di komputer secara terpisah. Gunakan ISteamUser::GetSteamID di game-mu untuk mendapatkan ID Steam pengguna saat ini atau ID akun untuk disimpan dan dibaca.
    • {64BitSteamID} - Gunakan variabel ini di jalur Steam untuk menyematkan ID Steam 64-bit pengguna. ID Steam 64-bit terlihat seperti: 76561198027391269
    • {Steam3AccountID} - Gunakan variabel ini di jalur Steam untuk menyematkan ID akun Steam pengguna. ID akun terlihat seperti: 67125541
    Contoh: SavesDir/{64BitSteamID}
  3. Pola

    Pola penyamaran file untuk menyamakan. Gunakan * sebagai karakter pengganti. Jika kamu ingin semua file ada di direktori, gunakan * saja.

    Contoh: *.sav
  4. OS

    Tentukan OS yang file-file ini akan disinkronkan dari/ke. Hal ini diperlukan jika file tersebut hanya untuk OS tertentu, dan semoga tidak demikian!
  5. Berulang

    Sertakan subdirektori saat mencari file yang sama. Ini berguna untuk subdirektori dengan nama tidak ditentukan seperti nama pengguna atau ID non-Steam. Disarankan untuk menggunakan nilai jalur khusus di kolom Subdirektori jika menggunakan ID Steam.

Penimppaan Root

Jika aplikasimu merupakan lintas platform dan memerlukan direktori berbeda untuk setiap OS, gunakan fungsionalitas Penimpaan Root untuk menentukan penimpaan untuk Jalur Root yang kamu atur di atas.

Jalur Root yang disebutkan di atas dapat ditimpa untuk menyesuaikan ke jalur berbeda pada OS lain. Jika menggunakan Penimpaan Root, tentukan [Semua OS] di menu dropdown OS Root di atas.

Penimpaan Root terdiri atas 5 bagian.
  1. Root Awal

    Ini sesuai dengan salah satu Root yang diatur di atas.
  2. OS

    OS untuk menerapkan penimpaan.
  3. Root Baru

    Lokasi baru yang Root Awal petakan ke OS tertentu.
  4. Tambahkan/Ubah Jalur

    Ini memungkinkan untuk secara opsional menambahkan jalur subdirektori, yang disematkan di antara root baru dan subdirektori awal.
  5. Ubah Jalur

    Jika diaktifkan, akan menyebabkan jalur yang ditentukan di "Tambahkan/Ubah Jalur" mengganti subdirektori awal secara keseluruhan.

Contoh: Mengonfigurasikan Auto-Cloud untuk Aplikasi Unity

Berikut adalah contoh pengaturan Auto-Cloud untuk digunakan dengan Unity dan properti Application.persistentDataPath di mana nilai dapat berbeda di setiap OS. Versi Windows dikonfigurasikan sebagai Jalur Root dengan didampingi set Unity ke DefaultCompany dan Proyek yang disebut AutocloudSample. Pada macOS dan Linux/SteamOS, jalur alternatif dari Application.persistentDataPath diatur di kolom "Tambahkan/Ubah Jalur" dan "Ubah Jalur" diaktifkan.

Dengan pengaturan ini, file Auto-Cloud akan disinkronkan di antara tiga folder seperti ditampilkan di contoh Pratinjau.

Cloud_Unity_Auto-Cloud_Example.png

Pengujian Prarilis

Jika kamu menambahkan Steam Auto-Cloud ke game yang telah dirilis dan kamu telah mengaktifkan mode khusus pengembang selama Pengaturan Awal maka kamu harus selesaikan beberapa langkah tambahan untuk menguji fungsionalitasnya.
  1. Login ke Steam dengan akun yang memiliki aplikasi yang akan diuji.
  2. Buka Steam Console dengan pergi ke steam://open/console di perambanmu.
  3. Masukkan testappcloudpaths <AppId> ke konsol dengan AppID yang diberikan yang kamu uji. Contoh: testappcloudpaths 480
  4. Masukkan set_spew_level 4 4 ke konsol.
  5. Luncurkan aplikasimu dari Steam.
  6. Periksa aktivitas konsol. Jika file sudah ada di jalur Auto-Cloud, maka seharusnya sudah diunggah. Jika tidak, simpan beberapa file dari aplikasimu, lalu tutup untuk memicu penyinkronan.
  7. Buka PC lain dan ulangi langkah di atas untuk menguji pengunduhan files dari Steam Auto-Cloud.
  8. Pastikan untuk menguji di semua OS yang didukung.
  9. Atur testappcloudpaths 0 dan set_spew_level 0 0 untuk mengakhiri pengujian. Silakan restart Steam Client untuk menutup tab console.

Jangan lupa untuk menonaktifkan mode khusus pengembang dan publikasikan perubahan saat kamu selesai menguji.

Penyinkronan Cloud Dinamis


Steam Cloud sekarang mendukung penyinkronan dinamis, di mana perubahan yang muncul di Cloud dapat diunduh ke perangkat lokal selama sesi aplikasi. Contoh saat ini adalah sesi permainan yang ditangguhkan di Steam Deck. Untuk aplikasi yang ditandai mendukung Penyinkronan Cloud Dinamis, Steam akan menyinkronkan file ke Steam Cloud pada waktu penangguhan. Kemudian, pengguna dapat menjalankan game di perangkat lain, yang akan menerima pembaruan dari sesi Steam Deck saat peluncuran. Saat keluar, perubahan tersebut akan diunggah ke Steam Cloud. Terakhir, saat perangkat Steam Deck dibangunkan, Steam akan menyinkronkan perubahan ke perangkat tersebut, dan mengirimkan pemberitahuan ke aplikasi bahwa file lokal telah berubah. Kemudian, aplikasi dapat mengulangi perubahan tersebut dan mengambil tindakan yang sesuai. Misalnya, game dapat dengan mudah memuat progres yang diperbarui dari disk dan memungkinkan pengguna untuk melanjutkan langsung dari titik terakhir mereka bermain di perangkat lain.

Lihat postingan pengumuman kami untuk info lebih lanjut tentang alasan fitur ini tersedia dan cara penggunaannya.

Perlu diingat bahwa fitur ini mendukung aplikasi terlepas jika menggunakan API ISteamRemoteStorage atau Auto-Cloud untuk mengelola file.

Untuk rincian, lihat dokumentasi ISteamRemoteStorage, khususnya ISteamRemoteStorage::RemoteStorageLocalFileChange_t, ISteamRemoteStorage::GetLocalFileChangeCount, dan ISteamRemoteStorage::GetLocalFileChange.

Lihat juga ISteamRemoteStorage::BeginFileWriteBatch dan ISteamRemoteStorage::EndFileWriteBatch. Wrapper tersebut harus digunakan untuk memberikan petunjuk bagi Steam yang akan membantu menyinkronkan secara aman ke Steam Cloud saat pengguna memulai penghentian sistem.

Pengujian Prarilis


Kamu dapat mengaktifkan Penyinkronan Cloud Dinamis secara lokal untuk aplikasimu agar dapat menguji build. Hal ini direkomendasikan untuk game yang telah dirilis, karena mengaktifkan Penyinkronan Cloud Dinamis untuk semua pengguna dapat menyebabkan hilangnya data saat menjalankan build yang tidak menangani metode API dan callback baru.

Untuk menguji secara lokal dari PC:

  1. Login ke Steam dengan akun yang memiliki aplikasi yang akan diuji.
  2. Buka Steam Console dengan pergi ke steam://open/console di perambanmu. (Kamu juga dapat menjalankan Steam dengan baris perintah steam -console, lalu pergi ke bagian Console langsung).
  3. Masukkan @cloud_testdynamicsyncapp <AppId> ke konsol dengan AppID yang diberikan untuk pengujian. Contoh: @cloud_testdynamicsyncapp 480
  4. Luncurkan aplikasimu dari Steam.
  5. Mainkan game hingga titik yang diinginkan
  6. Di Steam Console, masukkan prepare_for_suspend. Steam akan menghentikan proses game dan mengunggah file apa pun yang diubah ke Steam Cloud.
  7. Opsional: mainkan game di perangkat lain, mainkan hingga titik lebih jauh, lalu keluar dan biarkan Steam Client mengunggah progres ke Steam Cloud.
  8. Kembali ke perangkat awal, di Steam Console, masukkan resume_suspended_games. Ini akan menyinkronkan semua file yang diperlukan dari Steam Cloud, memposting panggilan API yang relevan ke game-mu, lalu membatalkan penangguhan proses game.

Untuk menguji secara lokal dari Steam Deck:

  1. Hubungkan Steam Deck dengan Devkit
  2. Untuk menggunakan CEF Console, lihat di sini
  3. Pada JS Console, masukkan SteamClient.Console.ExecCommand(“@cloud_testdynamicsyncapp <AppId>”) untuk mengaktifkan pengujian. Masukkan SteamClient.Console.ExecCommand(“@cloud_testdynamicsyncapp 0”) untuk menonaktifkan

Debug

Pertama, selalu pastikan bahwa kamu sudah memublikasikan perubahanmu di situs web partner Steam dan sudah menunggu hingga 10 menit atau restart Steam Client-mu untuk dapat melihat perubahan yang sudah dipublikasikan.

Jika kamu mengalami kendala dengan Steam Cloud, periksa log di mana file berada di %Steam Install%\logs\cloud_log.txt.

Lihat Debugging the Steamworks API untuk info tambahan.