О плагине

GCloud

Плагин для Unreal Engine: сохранения игрока в Google Drive в скрытой папке приложения (appDataFolder), без собственного бэкенда.

Используется OAuth 2.0 с PKCE (безопасный вход из игры через браузер). Токены хранятся во внутреннем хранилище движка (encrypted game key).

🔐

OAuth + PKCE

Асинхронные ноды открытия браузера и обмена кода на токены.

📁

Слоты

Загрузка/выгрузка байтов или готового USaveGame.

⚙️

GameInstance Subsystem

UGCloudSubsystem на экземпляр игры.

Возможности

Возможности

ФункцияBlueprintОписание
Вход Google✅ AsyncOpen Sign In In Browser → Exchange Auth Code
Проверка сессииIs G Cloud Signed In
Слот (байты)✅ AsyncUpload Slot / Download Slot / Delete Slot / List Slots
SaveGame✅ AsyncUpload Save Game / Download Save Game
ОшибкиG Cloud Get Last Error, Clear Last Error, Sign Out

Подключение

Подключение

Требования

  • Unreal Engine 5.7 (как в GCloud.uplugin)
  • Проект в Google Cloud Console: OAuth client (Web или Android), redirect URI
  • Включённый API Google Drive (доступ к файлам приложения)

Шаги

  1. Скопируйте папку Plugins/GCloud в проект.
  2. Edit → Plugins — включите GCloud.
  3. Заполните Project Settings → Plugins → GCloud (Google Drive) (см. следующий раздел).
  4. В Blueprint используйте ноды категорий GCloud | Auth и GCloud | Slots.
Android Для публичного клиента без секрета используйте PKCE; Client Secret можно оставить пустым.

Project Settings

Project Settings → GCloud (Google Drive)

Параметры пишутся в DefaultGame.ini, секция [/Script/GCloud.GCloudDeveloperSettings].

ПолеОписание
Client IdOAuth 2.0 Client ID из Google Cloud Console
Client SecretДля Web-клиента; для Android PKCE часто пусто
Redirect UriДолжен совпадать с консолью Google, например com.epicgames.unreal:/gcloud-oauth
ScopesПо умолчанию https://www.googleapis.com/auth/drive.appdata — доступ к скрытой папке приложения
Slot File PrefixПрефикс имён файлов слотов на диске, по умолчанию save_

Вход (OAuth)

Вход через Google

  1. Вызовите async-ноду Open Sign In In Browser — откроется системный браузер с URL авторизации (PKCE подготовлен в подсистеме).
  2. После успешного входа Google перенаправит на ваш Redirect Uri с параметром code.
  3. Передайте код в Exchange Auth Code — нода завершится с On Complete (bSuccess).
  4. Проверка: Is G Cloud Signed In (чистая функция, World Context).
НодаКатегория
Open Sign In In BrowserGCloud | Auth
Exchange Auth CodeGCloud | Auth
Is G Cloud Signed InGCloud | Auth
G Cloud Sign OutGCloud | Auth
G Cloud Get Last Error / Clear Last ErrorGCloud | Auth
G Cloud Get Sign In UrlGCloud | Auth — опционально получить URL без открытия браузера

Слоты и файлы

Слоты (Google Drive)

Имя слота — логическое имя сохранения; плагин сопоставляет его с файлом в appDataFolder с учётом Slot File Prefix.

Async-нодаOn Complete
Upload Slotbool bSuccess
Download Slotbool bSuccess, TArray<uint8> Bytes
Delete Slotbool bSuccess
List Slotsbool bSuccess, массив FGCloudSlotInfo (имя, размер, дата)
Upload Save Gamebool bSuccess — сериализация USaveGame
Download Save Gamebool bSuccess — в существующий объект SaveGame
Subsystem Вся логика на UGCloudSubsystem (Game Instance). Ноды сами берут подсистему из World Context.

Пример Blueprint

Пример цепочки

① Open Sign In In Browser → On Launched / On Failed
② (из redirect) Exchange Auth Code (Authorization Code)
③ On Complete (true) → List Slots
④ Download Save Game (SlotName, SaveGameObject) → загрузить в объект
⑤ После игры: Upload Save Game

FAQ

Частые вопросы

redirect_uri_mismatch

Точное совпадение Redirect URI в консоли Google и в Project Settings.

Нет доступа к Drive

Проверьте scope drive.appdata и что OAuth consent screen опубликован (или тестовые пользователи добавлены).

Где хранятся токены?

В зашифрованном хранилище UE после успешного Exchange Auth Code.