Steamworks dokumentáció
Steam Felhő
Röviden
A Steam Felhő automatikusan tárolja a játékodból származó fájlokat a Steam szerverein, így játékosaid bármely számítógépen bejelentkezhetnek a Steambe és hozzáférhetnek mentett játékaihoz.
Az integrálás szintje
Szükség van a fájlútvonalak beállítására a Steamworks weboldalon. Alternatív megoldásként API-hívásokra van szükség a játékkódból a Steamworkshöz ahhoz, hogy a játék fájlokat gyűjtsön össze, olvasson, töröljön vagy írjon a Steam Felhőben.

Steam Felhő áttekintés

A Steam Felhő egyszerű és átlátszó távoli fájltároló rendszert biztosít a játékodhoz. Az automatikus felhő konfigurációban megadott, vagy a Felhő API használatával lemezre írt (létrehozott, módosított, törölt stb.) fájlok automatikusan lemásolódnak a Steam szerverekre a játék kilépése után.

Ha a felhasználó számítógépet vált, a fájlok a játék elindítása előtt automatikusan letöltődnek az új számítógépre. A játék ezután hozzáférhet a fájlokhoz a Felhő API-n keresztül, vagy a szokásos módon közvetlenül a lemezről olvasva. Kerüld az olyan gépspecifikus beállításokat, mint a képbeállítások.

A Steam kliens gondoskodik arról, hogy a fájlok szinkronban legyenek minden olyan számítógépen, amelyet a felhasználó esetleg használ.

A felhasználók globálisan le tudják tiltani a felhőszinkronizálást a Steam beállításaiban a Felhő kategóriában, a „Steam Felhő szinkronizálás engedélyezése
az azt támogató alkalmazásokban.” bejelölésének eltávolításával.

A felhasználók játékonként is le tudják tiltani a felhőszinkronizálást az egyes játékok tulajdonságaiban.

Spacewar_Cloud_Properties.png

Megjegyzések és bevált módszerek


Fontos megjegyezni, hogy a Steam minden munkamenet előtt és után szinkronizálja a felhasználó Steam Felhő fájljait a játékodhoz. A munkamenet során megváltozott bármely egyező fájl közvetlenül ezután feltöltődik a felhőtárhelyre. Ha a játékod nagyon nagy fájlokat vagy sok kis fájlt ír a Steam Felhőbe, akkor ez észrevehető hatást gyakorolhat a felhasználó internet-sávszélességére, és késleltetheti a Steam leállításának vagy a játék újraindításának képességét.

Általános szabályként a kisebb fájlok jobban működnek. Ha egy adott felhasználó mentett állapota felosztható különféle kategóriákra, olyanokra, amelyek gyakran változhatnak, és olyanokra, amelyek esetleg nem olyan gyakran, akkor javasoljuk külön fájlok használatát az ilyen kategóriákhoz. Így a változatlan állapot nem lesz minden munkamenet után feltöltve.

Fájlméret-korlátok


A Steam Felhő abszolút fájlméret-korlátai idővel változhatnak. Alább látható néhány jelenlegi küszöb és korlát:

MéretKorlátozás
100 MBMaximális méret az ISteamRemoteStorage::FileWrite és ISteamRemoteStorage::FileWriteStreamWriteChunk hívásakor.
256 MBNem optimális tárolási végpontot eredményezhet a felhasználó tartózkodási helye szerint, ami negatívan befolyásolja a fel-/letöltési teljesítményt.

Mentésfájl-útvonalak

Amikor eldöntöd, hová írod a mentési fájljaidat, gondoskodj róla, hogy az elérési út egyedi legyen a jelenlegi Steam felhasználónak. Ha szükséges, az ISteamUser::GetSteamID segítségével meg tudod kapni a felhasználó egyedi Steam azonosítóját. Ebből a GetAccountID() használatával hozzáférsz a fiókazonosítójához, ami ellát egy egyedi változóval a mentési útvonalad összeállításához.

Platformok közötti mentések


Ha a játékod több platformon is támogatott, vagy még ha csak a jövőben tervezel is ilyen támogatást, azt érdemes figyelembe venni a Steam Felhő beállításakor a játékodhoz.

Ha közvetlenül az ISteamRemoteStorage interfész használatával tervezel fájlokat olvasni/írni, akkor az ISteamRemoteStorage::SetSyncPlatforms használatával tudod vezérelni a platformszinkronizálást. Egy új fájl alapértelmezett beállítása a szinkronizálás minden platformra.

Ha a Steam automatikus felhő használatát tervezed, tudnod kell néhány kulcsfontosságú dolgot. Az első, hogy az új fájlok alapértelmezetten csak a társított automatikus felhő gyökérkönyvtár útvonal Op. rendszer beállításának megfelelően szinkronizálnak. Ez azt jelenti, hogy ha az egyes operációs rendszerekhez külön gyökereket állítasz be, akkor az összes fájl platformonként szét lesz választva, így nem lesz platformok közötti mentési működés.

A platformok közti mentések lehetővé tételéhez ehelyett egyetlen gyökérútvonalat kell meghatároznod (valószínűleg Windowshoz), majd Gyökér-felülbírálásokat létrehozni a többi támogatott platformhoz. Egy adott gyökérútvonalnak megfelelő, de platformspecifikus gyökér-felülbírálással is rendelkező fájlok az összes platformra szinkronizálódni fognak az eredeti gyökérbe és minden felülbírálásba is. A részletekért lásd a Steam automatikus felhő dokumentációt.

Első beállítás

A Steam Felhő beállításához be kell állítanod a felhasználónkénti bájtkvóta és a felhasználónként engedélyezett fájlok száma beállításokat a Steamworks alkalmazás-adminisztrációs panel Steam Felhő beállítások oldalán.

Ez a kvóta minden olyan játékra alkalmazva van, amelynél be van kapcsolva a felhő, felhasználónként és játékonként. Javasolt ezeknek a játékodhoz észszerű értékűre állítása.

MEGJEGYZÉS: Ne felejts az oldal alján levő Mentés gombra kattintani, és tedd közzé frissített beállításaidat. Közzététel után a felhő ikon mindenkinek látható lesz a Steam kliensben, aki birtokolja a játékodat.

Ha a játékod már ki van adva a nyilvánosságnak, akkor bejelölheted a Felhő támogatás engedélyezése csak fejlesztőknek jelölőnégyzetet. Ha be van kapcsolva a csak fejlesztőknek mód, akkor csak a játékodhoz „fejlesztői tiszteletpéldány” licenccel rendelkező Steam fiókok fogják látni a felhő ikont és fogják tudni használni a Steam Felhőt. Ez a Steam Felhő integráció biztonságos teszteléséhez hasznos a nyilvános felhasználói élmény elrontása nélkül. Kiadatlan játékokra nincs hatása; mivel még senki sem birtokolja a játékot, senki sem fogja látni vagy használni az adott AppID-hez tartozó felhőtárhelyet.

A Megosztott felhő AppID-je mező kitöltésével meg tudsz osztani felhőtárhelyet két alkalmazásazonosító között. Ezt leggyakrabban a játékmentés demók és teljes játékok közötti megosztására használják. A 0 érték letiltja ezt a funkciót.

Steam Felhő API és Steam automatikus felhő

A Steam két különböző módszert kínál a Steam Felhő használatára; olvasd el itt, miben különbözik a két módszer, és döntsd el, melyik lenne a legjobb az alkalmazásodhoz.

Az első a Steam Felhő API.
A Felhő API egy sor olyan funkciót biztosít, amelyek lehetővé teszik a Steam Felhő közvetlen integrálását a játékodba. A Felhő API elkülöníti egymástól az egyes Steam felhasználók fájljait, és magasabb szintű irányítást ad a Steam Felhő felett.

A Steam Felhő API az ISteamRemoteStorage API interfészen keresztül érhető el, és a Steamworks API Example Application (SpaceWar) projektben találhatsz hozzá használati példát.

A második a Steam automatikus felhő.
A Steam automatikus felhőt olyan játékokhoz terveztük, amelyeknél úgy döntesz, nem integrálod a Steam Felhő API-t. Gyors és egyszerű módot biztosít az induláshoz, de hiányzik belőle a Steam Felhő API-val elérhető rugalmasság.

Ha a Steam Felhő mélyebb integrálását részesíted előnyben (például lehetővé tenni annak kiválasztását, hogy mely mentési fájlok tárolódjanak felhőben), akkor a Felhő API-t kellene használnod. Egyébként használhatod a Steam automatikus felhőt.

Steam automatikus felhő

A Steam automatikus felhő a Steam Felhő API alternatívája, amely lehetővé teszi az alkalmazásoknak a Steam Felhő használatát programkód írása vagy a játék bármilyen módosítása nélkül. Csak azon fájlcsoportok megadására van hozzá szükség, amelyeket a felhőben akarsz tárolni. A Steam automatikusan szinkronizálja a fájlcsoportokat, amikor az alkalmazás elindul és kilép. Kerüld az olyan gépspecifikus beállításokat, mint a képbeállítások.
Megjegyzés: A Steamworks felhőútvonalaid által megadott mindegyik helyen létre fog jönni egy steam_autocloud.vdf fájl. Ezt a fájlt a Steam használja, és a játékod figyelmen kívül hagyhatja.

Beállítás

Az Első beállítás befejezése után fel fog oldódni a Steam automatikus felhő beállítási szakasz a Steam Felhőbeállítások oldalon.

A gyökérútvonalak azokat a fájlcsoportokat írják le, amelyek tárolódni fognak a Steam Felhőben. Mindegyik gyökérútvonal lehet olyan konkrét, mint egyetlen fájl, vagy olyan széles körű, mint az összes fájl egy adott alkönyvtárban. Minden szinkronizálandó fájlcsoporthoz használj új útvonalat.

Egy gyökérútvonal öt részből áll:
  1. Gyökér

    Ez azon útvonalak előre meghatározott listája, ahol gyakran tárolnak mentési fájlokat.
    GyökérTámogatott operációs rendszerekHozzá tartozó útvonal
    App Install DirectoryÖsszes[Steam telepítés]\SteamApps\common\[játékmappa]\
    SteamCloudDocumentsÖsszesPlatformspecifikus útvonal, pl. Linuxon: ~/.SteamCloud/[felhasználónév]/[játékmappa]/
    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/

    Megjegyzés a Windows %USERPROFILE% útvonalakkal kapcsolatban: A fent jelzett vonatkozó útvonalak az alapértelmezett helyek. A felhasználó beállíthatja a Windows telepítését úgy, hogy ezek a mappák eltérő helyeken legyenek (nem feltétlenül a %USERPROFILE% alatt). A Steam a szükséges Windows API-kat használja e mappák jelenlegi helyének megtalálására, legyen az az alapértelmezett vagy egyedi hely.

  2. Alkönyvtár

    A felhőben tárolt fájlok alkönyvtárútvonala a gyökérhez képest. Ha nincs alkönyvtár, használd a "." jelölést.

    Automatikus felhő speciális útvonalértékek:
    Az automatikus felhő megengedi egyedi Steam felhasználói azonosítók használatát az alkönyvtár útvonalban. Ez lehetővé teszi a mentési fájlok elkülönített tárolását a számítógép minden egyes Steam felhasználójának. Használhatod az ISteamUser::GetSteamID-t a játékodban a jelenlegi felhasználó SteamID-jének vagy AccountID-jének lekérésére, hogy oda ments és onnan olvass.
    • {64BitSteamID} – Használd ezt a változót a Steam útvonalban a felhasználó 64 bites Steam azonosítójának beillesztésére. Egy 64 bites Steam azonosító így néz ki: 76561198027391269
    • {Steam3AccountID} – Használd ezt a változót a Steam útvonalban a felhasználó Steam3 fiókazonosítójának beillesztésére. A fiókazonosító így néz ki: 67125541
    Példa: SavesDir/{64BitSteamID}
  3. Minta

    Keresendő fájlmaszk-minta. A * használható helyettesítőként. Ha a könyvtár összes fájlját akarod, használd egyszerűen a * mintát.

    Példa: *.sav
  4. Op. rendszer

    Beállítja azokat az operációs rendszereket, amelyekről/amelyekre ezek a fájlok szinkronizálva lesznek. Ez csak akkor szükséges, ha a fájlok operációs rendszer specifikusak, és remélhetőleg nem ez a helyzet!
  5. Rekurzív

    Alkönyvtárak bevonása az egyező fájlok keresésébe. Ez olyan alkönyvtárakhoz hasznos, amelyeknek nem olyan meghatározható neve van, mint egy nem Steames felhasználónév vagy azonosító. Ha Steam azonosítót használ, akkor erősen ajánlott az Alkönyvtár mezőben levő speciális útvonalértékek használata.

Gyökér-felülbírálások

Ha az alkalmazásod többplatformos, és mindegyik operációs rendszerhez különböző könyvtárakat igényel, a gyökér-felülbírálás funkcióval megadhatod a fent beállított gyökérútvonalak felülbírálását.

A fent megadott gyökérútvonalak felülbírálhatók, hogy más operációs rendszeren más útvonalnak feleljenek meg. Ha gyökér-felülbírálást használsz, a fenti Op. rendszer lenyíló menüben [Összes op. rendszer] értéket kell megadnod.

Egy gyökér-felülbírálás öt részből áll:
  1. Eredeti gyökér

    Ez a fent beállított egyik gyökérnek felel meg.
  2. Op. rendszer

    Az operációs rendszer, amelyen a felülbírálást alkalmazni kell.
  3. Új gyökér

    Az új hely, ahová az eredeti gyökér leképeződik a megadott operációs rendszeren.
  4. Útvonal hozzáadása/cseréje

    Ez lehetővé teszi egy alkönyvtárútvonal szükség szerinti hozzáadását, ami az új gyökér és az eredeti alkönyvtár közé lesz beszúrva.
  5. Útvonal cseréje

    Ha be van kapcsolva, akkor az Útvonal hozzáadása/cseréje részben megadott útvonal teljesen lecseréli az eredeti alkönyvtárat.

Példa: Az automatikus felhő konfigurálása Unity alkalmazásokhoz

A következő egy példa az automatikus felhő beállítására Unity és az Application.persistentDataPath tulajdonság használatával, ahol az érték operációs rendszerenként eltérő. A Windows változat van gyökérútvonalként beállítva, cég Unity-ben DefaultCompany-ra van állítva, a projekt neve pedig AutocloudSample. MacOS-en és Linuxon/SteamOS-en az alternatív útvonalak az Application.persistentDataPath-ból az Útvonal hozzáadása/cseréje mezőben vannak beállítva, és engedélyezve van az útvonal cseréje.

Ezekkel a beállításokkal az automata felhő fájlok szinkronizálva lesznek a három mappa között, ahogyan az előnézeti mintákban látható.

Cloud_Unity_Auto-Cloud_Example.png

Kiadás előtti tesztelés

Ha a Steam automatikus felhőt már kiadott játékhoz adod hozzá, és a Első beállítás során bekapcsoltad a csak fejlesztőknek módot, akkor néhány további lépést kell végrehajtanod a működőképesség teszteléséhez.
  1. Jelentkezz be a Steambe egy olyan fiókkal, amely birtokolja az alkalmazást, amit tesztelsz.
  2. Nyisd meg a Steam konzolt, a böngésződben megnyitva a steam://open/console címet.
  3. Írd be a konzolba a testappcloudpaths <AppID> parancsot azzal az AppID-vel, amit tesztelsz. Pl.: testappcloudpaths 480
  4. Írd be a konzolba: set_spew_level 4 4
  5. Indítsd el az alkalmazásodat a Steamből.
  6. Figyeld a tevékenységet a konzolban. Ha már léteznek fájlok az automatikus felhő útvonalakon, akkor látnod kellene a feltöltésüket. Ellenkező esetben ments fájlokat az alkalmazásodból, majd zárd be azt a szinkronizálás elindításához.
  7. Menj egy másik számítógéphez, és ismételd meg a fenti lépéseket a fájlok Steam automatikus felhőből letöltésének teszteléséhez.
  8. Ne felejtsd tesztelni minden támogatott operációs rendszeren.
  9. A tesztelés befejezéséhez állítsd be a testappcloudpaths 0 és set_spew_level 0 0 értékeket. A Steam kliens újraindításával el tudod tüntetni a Konzol fület.

Mikor végeztél a teszteléssel, ne felejtsd el kikapcsolni a csak tesztelőknek módot és közzétenni a változtatásokat.

Dinamikus felhőszinkronizálás


A Steam Felhő támogatja a dinamikus szinkronizálást, amelynél a felhőben megjelenő változások egy alkalmazás-munkamenet alatt is letölthetők a helyi gépre. Ez a példa egy felfüggesztett játékmenet a Steam Decken. A dinamikus felhőszinkronizálást támogatóként jelölt alkalmazásoknál a Steam a felfüggesztés időpontjában szinkronizálja a fájlokat a Steam Felhőbe. Ezután a felhasználó futtathatja a játékot egy másik eszközön, amely indításkor megkapja a frissítéseket a Steam Deck munkamenetből. Kilépéskor ezek a változások feltöltődnek a Steam Felhőbe. Végül a Steam Deck felébresztésekor a Steam szinkronizálja a változtatásokat arra a készülékre, és értesítést küld az alkalmazásnak, hogy helyi fájlok változtak meg. Az alkalmazás ezután végigmehet ezeken a változásokon és megteheti a megfelelő lépéseket. Például, a játék képes lehet egyszerűen betölteni a frissített haladást lemezről, és lehetővé tenni, hogy a felhasználó ott folytassa, ahol a másik eszközön abbahagyta.

Nézd meg a bejelentésünket további információkért arról, miért létezik ez a funkció, és hogyan lehet használni.

Megjegyzendő, hogy ez a funkció attól függetlenül támogatja az alkalmazásokat, hogy az ISteamRemoteStorage API-t használják-e fájlok kezelésére, vagy az automatikus felhőt.

További részletekért lásd az ISteamRemoteStorage dokumentációt, konkrétabban: ISteamRemoteStorage::RemoteStorageLocalFileChange_t, ISteamRemoteStorage::GetLocalFileChangeCount és ISteamRemoteStorage::GetLocalFileChange.

Lásd még: ISteamRemoteStorage::BeginFileWriteBatch és ISteamRemoteStorage::EndFileWriteBatch. Ezeket a wrappereket kell használni olyan jelzések adására a Steamnek, amelyek segítenek biztonságosan szinkronizálni a Steam Felhővel, amikor a felhasználó rendszerfelfüggesztést kezdeményez.

Kiadás előtti tesztelés


Helyileg engedélyezni tudod a dinamikus felhőszinkronizálást alkalmazásodnak a buildjeid teszteléséhez. Ez olyan játékokhoz javasolt, amelyek már ki vannak adva, mivel a dinamikus felhőszinkronizálás engedélyezése minden játékosnak adatvesztéshez vezethet olyan buildek futtatásakor, amelyek nem kezelik az új API metódusokat és callbackeket.

Helyi teszteléshez PC-ről:

  1. Jelentkezz be a Steambe egy olyan fiókkal, amely birtokolja az alkalmazást, amit tesztelsz.
  2. Nyisd meg a Steam konzolt, a böngésződben megnyitva a steam://open/console címet. (A steam -console parancssori kapcsolóval is futtathatod a Steamet, majd közvetlenül átválthatsz a Konzolra.)
  3. Írd be a konzolba a @cloud_testdynamicsyncapp <AppID> parancsot azzal az AppID-vel, amit tesztelsz. Pl.: @cloud_testdynamicsyncapp 480
  4. Indítsd el az alkalmazásodat a Steamből.
  5. Haladj a játékban a kívánt mennyiséget.
  6. Írd be a Steam konzolba a prepare_for_suspend parancsot. A Steam felfüggeszti a játékfolyamatodat, és feltölt minden megváltozott fájlt a Steam Felhőbe.
  7. Elhagyható: játssz a játékkal egy másik eszközön, további haladást eredményezve, majd lépj ki, és hagyd, hogy a Steam kliens feltöltse a haladást a Steam Felhőbe.
  8. Az eredeti eszközben írd be a Steam Konzolba a resume_suspended_games parancsot. Ez le fog szinkronizálni minden szükséges fájlt a Steam Felhőből, elküldi a vonatkozó API-hívásokat a játékodnak, majd feloldja a játékfolyamatod felfüggesztését.

Helyi teszteléshez Steam Deckről:

  1. Csatlakoztasd Steam Deckedet egy Devkittel.
  2. A CEF Konzol használatát lásd itt.
  3. A tesztelés engedélyezéséhez a JS konzolban írd be: SteamClient.Console.ExecCommand("@cloud_testdynamicsyncapp <AppID>") A letiltáshoz majd írd be a SteamClient.Console.ExecCommand("@cloud_testdynamicsyncapp 0") parancsot.

Hibakeresés

Először is, mindig gondoskodj a változtatásaid közzétételéről a Steamworks partner weboldalon, és várj akár 10 percet, vagy indítsd újra a Steam kliensedet a közzétett változtatások fogadására.

Ha problémákba ütközöl a Steam Felhővel, nézd meg a <Steam telepítés>\logs\cloud_log.txt naplófájlt.

További információkért nézd meg a Debugging the Steamworks API dokumentációt.