О плагине
GCloud
Плагин для Unreal Engine: сохранения игрока в Google Drive в скрытой папке приложения (appDataFolder), без собственного бэкенда.
Используется OAuth 2.0 с PKCE (безопасный вход из игры через браузер). Токены хранятся во внутреннем хранилище движка (encrypted game key).
🔐
OAuth + PKCE
Асинхронные ноды открытия браузера и обмена кода на токены.
📁
Слоты
Загрузка/выгрузка байтов или готового USaveGame.
⚙️
GameInstance Subsystem
UGCloudSubsystem на экземпляр игры.
Подключение
Подключение
Требования
- Unreal Engine 5.7 (как в
GCloud.uplugin)
- Проект в Google Cloud Console: OAuth client (Web или Android), redirect URI
- Включённый API Google Drive (доступ к файлам приложения)
Шаги
- Скопируйте папку
Plugins/GCloud в проект.
- Edit → Plugins — включите GCloud.
- Заполните Project Settings → Plugins → GCloud (Google Drive) (см. следующий раздел).
- В Blueprint используйте ноды категорий GCloud | Auth и GCloud | Slots.
Android Для публичного клиента без секрета используйте PKCE; Client Secret можно оставить пустым.
Project Settings
Project Settings → GCloud (Google Drive)
Параметры пишутся в DefaultGame.ini, секция [/Script/GCloud.GCloudDeveloperSettings].
| Поле | Описание |
| Client Id | OAuth 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_ |
Слоты и файлы
Слоты (Google Drive)
Имя слота — логическое имя сохранения; плагин сопоставляет его с файлом в appDataFolder с учётом Slot File Prefix.
| Async-нода | On Complete |
| Upload Slot | bool bSuccess |
| Download Slot | bool bSuccess, TArray<uint8> Bytes |
| Delete Slot | bool bSuccess |
| List Slots | bool bSuccess, массив FGCloudSlotInfo (имя, размер, дата) |
| Upload Save Game | bool bSuccess — сериализация USaveGame |
| Download Save Game | bool 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.