Не партнёр

Главная Документация и помощь
Документация Steamworks
Steam Cloud

Обзор Steam Cloud

Облачная синхронизация Steam Cloud представляет собой простую и прозрачную систему удаленного хранения файлов для игр. Файлы, указанные при настройке Auto-Cloud или записанные на диск (созданные, изменённые, удалённые и т. д.) с использованием Cloud API, автоматически будут продублированы на серверах Steam после выхода из игры.

Если пользователь меняет компьютеры, перед запуском игры файлы автоматически будут загружены на новый компьютер. Затем игра может получить доступ к файлам, как прочитав их через API синхронизации, так и напрямую с диска, как обычно. Следует избегать настроек, характерных для конкретного компьютера, таких как настроек видео.

Клиент Steam берет на себя работу по синхронизации файлов на всех компьютерах пользователя.

Пользователи могут отключить синхронизацию для всех игр в настройках Steam, сняв галочку «Включить синхронизацию со Steam Cloud для поддерживаемых приложений».

Пользователи также могут отключить синхронизацию для конкретной игры в ее настройках.

Spacewar_Cloud_Properties.png

Начальная настройка

Для настройки облачной синхронизации нужно установить квоту байтов на одного пользователя и квоту файлов на одного пользователя на странице настройки функции Cloud в админке Steamworks.

Квоты выдаются для каждой игры с поддержкой синхронизации. Рекомендуется установить разумные значения.

ВНИМАНИЕ: не забудьте нажать кнопку «Сохранить» внизу страницы, а затем опубликовать новые настройки. После публикации иконка Cloud будет показываться в клиенте всем пользователям, владеющим игрой.

Если игра уже общедоступна, можно поставить галочку напротив опции «Включить поддержку синхронизации только для разработчиков». В этом случае только аккаунты с доступом к набору разработчика Developer Comp для данной игры смогут видеть иконку Cloud и смогут использовать синхронизацию. Это удобно для случаев, когда необходимо протестировать интеграцию синхронизации, не сломав ничего для пользователей. Эта настройка не влияет на невыпущенные игры, поскольку ими никто не владеет, а соответственно ни у кого не будет доступа к облачному хранилищу конкретного приложения.

Для двух приложений возможно иметь общее облачное хранилище. Для этого необходимо заполнить поле «Номер приложения общего хранилища». Как правило, эта функция используется для сохранения игр, общих для демо-версии и полной версии игры. Значение 0 отключает её.

API синхронизации и функция автосинхронизации

Есть два способа использования Steam Cloud. Далее подробно излагается, чем различаются эти способы, и как выбрать подходящий для того или иного приложения.

Первый — API синхронизации Steam Cloud.
В Cloud API представлены функции, которые позволяют интегрировать Steam Cloud в игру. Cloud API изолирует друг от друга файлы отдельных пользователей Steam и предоставляет больший уровень контроля над синхронизацией.

API синхронизации предоставляется через интерфейс ISteamRemoteStorage, пример его использования можно найти в образце приложения Spacewar.

Второй — автосинхронизация Steam Auto-Cloud.
Steam Auto-Cloud была разработана для старых игр, для которых интеграция Cloud API затруднительна. Она позволяет быстро и просто начать работу, но не обладает мощью и гибкостью Cloud API.

В общем случае, если это возможно, рекомендуется использовать Cloud API, поскольку он дает больше возможностей для настройки под конкретную игру, а кроме того, позволяет вам предоставить пользователям Steam опыт, которого они ожидают от синхронизации.

Автосинхронизация Steam Auto-Cloud

Автосинхронизация является альтернативой API синхронизации, которая позволяет использовать облачное хранилище без необходимости писать код или менять игру. Все, что нужно, это указать группы файлов, которые нужно сохранять в облаке. Steam автоматически синхронизирует эти группы во время запуска приложения и выхода из него. Следует избегать настроек, характерных для конкретного компьютера, таких как настроек видео.

Настроить

После завершения начальной настройки на странице Steam Cloud в Steamworks появится секция настройки автосинхронизации.

Корневые пути описывают группы файлов, которые необходимо сохранить в облаке. Каждый корневой путь может и конкретным, указывая на один файл, и широким, указывая на все файлы в том или ином подкаталоге. Используйте новый путь для каждой группы файлов для синхронизации.

Корневой путь состоит из 5 частей:
  1. Корень

    Это предопределенный список путей, где обычно сохраняются игры.
    КореньПоддерживаемые ОСПуть
    Директория установки приложенияВсе[Steam Install]/SteamApps/common/[Game Folder]/
    SteamCloudDocumentsВсеСпецифический для платформы путь, к примеру на 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/
  2. Подкаталог

    Путь подкаталога к файлам в облаке является относительным по отношению к корню. Если подкаталога нет, используется `.`

    Специальный путь при автосинхронизации
    Auto-Cloud позволяет использовать индентификаторы пользователей Steam в пути Подкаталог. Это позволяет хранить файлы каждого пользователя Steam на одном компьютере отдельно. Для получения SteamID или AccountID текущего пользователя при сохранении и чтении файлов используется ISteamUser::GetSteamID.
    • {64BitSteamID} — эта переменная используется для вставки в путь 64-битного SteamID. 64-битный SteamID выглядит так: 76561198027391269
    • {Steam3AccountID} — эта переменная используется для вставки в путь AccountID. AccountID выглядит так: 67125541
    Пример: SavesDir/{64BitSteamID}
  3. Шаблон

    Это шаблон, которому должна соответствовать маска имени файлов. Можно использовать * в качестве символа-джокера. Если вам нужны все файлы в папке, просто используйте *.

    Пример: *.sav
  4. ОС

    Здесь выбираются операционные системы, для которых будут синхронизироваться файлы. Это необходимо только если файлы относятся только к той или иной операционной системе. Надеемся, что это не так!
  5. Вкл. подпапки

    Искать подходящие файлы во вложенных папках. Это можно использовать для подпапок, с неопредленными названиями, такими как имена пользователей или ID извне Steam. Если используется Steam ID, рекомендуется использовать специальные значения пути в поле «Подкаталог».

Замена корня

Если приложение является кросс-платформенным и в разных ОС использует разные каталоги, можно использовать замену корня, который определен выше.

Тогда обозначенные выше корневые пути будут заменяться в зависимости от операционной системы. В этом случае в пункте «ОС» необходимо выбрать пункт «Все операционные системы».

Замена корня состоит из 5 частей.
  1. Исходный корень

    Соответствует одному из значений для пункта «Корень».
  2. ОС

    Операционная система, в которой применяется замена корня.
  3. Новый корень

    Новый путь, который используется на месте исходного в определенной выше ОС.
  4. Добавление/замена пути

    Эта настройка позволяет при необходимости добавить путь подкаталога, который вставляется между новым путем и исходным подкаталогом.
  5. Заменить путь

    При включении подкаталог, определённый в поле «Добавление или замена пути», не дополнит, а заменит корневой подкаталог.

Пример: настройка Auto-Cloud для приложений Unity

Далее описан пример настройки Auto-Cloud для приложения Unity, в рамках которого значение свойства Application.persistentDataPath различается для разных ОС. Версия для Windows настраивается как корневая, при этом в данном примере в Unity используется значение DefaultCompany, а проект называется AutocloudSample. Для macOS и Linux/SteamOS альтернативные пути, которые прописаны в Application.persistentDataPath, используются в поле «Добавление или замена пути», а также устанавливается параметр «Замена пути».

С такими настройками Auto-Cloud будет выполняться синхронизация между тремя папками, как показано в примере.

Cloud_Unity_Auto-Cloud_Example.png

Тестирование перед выпуском

Если Auto-Cloud добавляется в уже выпущенную игру, а во время начальной настройки включен режим «только для разработчиков», тогда для тестирования функциональности необходимо выполнить несколько дополнительных действий.
  1. Зайдите в Steam, используя аккаунт, который комплектом разработчика Developer Comp для тестируемого приложения.
  2. Откройте консоль Steam (steam://open/console в браузере).
  3. Введите в консоль testappcloudpaths <AppId>, где App ID — номер приложения, которое вы тестируете. К примеру: testappcloudpaths 480
  4. Введите в консоль set_spew_level 4 4.
  5. Запустите приложение из Steam.
  6. Если в каталогах, которые использует функция Auto-Cloud, уже находятся файлы, в консоли вы увидите их загрузку. В противном случае сохраните несколько файлов для этого приложения и затем закройте его, чтобы запустить синхронизацию.
  7. Перейдите на другой компьютер и повторите описанные выше действия, чтобы протестировать, как работает загрузка из Auto-Cloud.
  8. Протестируйте на всех операционных системах, которые поддерживает приложение.
  9. Для завершения тестирования введите testcloudapppaths 0 и set_spew_level 0 0. Перезагрузите клиент Steam для закрытия консоли.

После окончания тестирования отключите режим «только для разработчиков» и опубликуйте изменения.

Отладка

Во-первых, всякий раз убедитесь, что вы опубликовали изменения на партнерском сайте и для получения опубликованных изменений подождали до 10 минут или перезапустили клиент Steam.

Если при работе Steam Cloud возникают проблемы, проверьте файл %Steam Install%\logs\cloud_log.txt.

Для получения дополнительной информации см. раздел «Отладка API Steamworks».