Godot SDK
Аддон на GDScript для Godot 4.2+ с теми же сервисами, что и в Unity SDK.
Комментарии в коде и имена API оставлены на английском, чтобы совпадать с SDK.
Требования#
- Godot 4.2 или новее, GDScript. Экспорт для десктопа, мобильных платформ и веба.
- Без зависимостей: только
HTTPRequest,CryptoиFileAccessиз Godot.
Установка#
- Скачайте
.zipс Godot SDK на странице проекта или на странице загрузок. - Распакуйте его в проект так, чтобы получилась папка
res://addons/majacloud(не переименовывайте её). - Project ▸ Project Settings ▸ Plugins: включите Majacloud. Плагин добавит автозагрузку
Majacloud.
Настройки проекта#
Плагин добавляет эти параметры в Project Settings ▸ General ▸ Majacloud:
| Параметр | По умолчанию | Значение |
|---|---|---|
connection/base_url | Адрес этой установки. | |
connection/project_id | Панель управления ▸ API-ключи. | |
connection/client_key | Публичный ключ pk_live_…. | |
connection/config_public_key | Заполняется при Test connection; закрепляет проверку удалённой конфигурации. | |
advanced/timeout_seconds | 15 | Через сколько секунд запрос завершается ошибкой timeout. |
advanced/max_retries | 2 | Число повторов безопасных запросов при ошибках сети и сервера. |
advanced/fetch_config_on_start | true | Загружать удалённую конфигурацию при запуске игры. |
advanced/log_requests | false | Выводить каждый запрос в консоль. |
Проверка подключения#
Project ▸ Tools ▸ Majacloud: Test connection вызывает API с вашими настройками, показывает название проекта и тариф и сохраняет публичный ключ удалённой конфигурации в majacloud/connection/config_public_key.
Настройка из кода#
Вызовите configure(), чтобы переключить окружение из кода. Вызов заменяет настройки до конца сессии:
# Switch environments from code; the last argument pins the Remote Config key (PEM)
Majacloud.configure("https://staging.yourstudio.com", "<project id>", "pk_live_…", public_key_pem)MajacloudResult#
Каждый вызов ожидается через await и возвращает MajacloudResult. Он никогда не приводит к сбою при ошибках сети или сервера.
| Поле | Значение |
|---|---|
ok | true, если вызов выполнен успешно. |
value | Ответ REST в виде Dictionary (см. справочник REST); целые числа приходят как int. |
error | Пусто при успехе, иначе — постоянный код, например conflict или network (см. ошибки). |
message | Понятное описание. |
status | HTTP-статус; 0, если сервер недоступен. |
request_id | Найдите его на странице «Логи». |
details | Дополнительные данные от сервера, например next_claim_at. |
is_retryable() и is_not_found(). |
Сигналы#
Подключитесь к этим сигналам, чтобы обновлять интерфейс:
func _ready() -> void:
Majacloud.auth.player_changed.connect(_on_player_changed)
Majacloud.auth.session_expired.connect(func(): show_sign_in_screen())
Majacloud.remote_config.updated.connect(func(): apply_balance())
func _on_player_changed(player: Dictionary) -> void:
$NameLabel.text = player.get("display_name", "")Хранение на устройстве#
Гостевая сессия хранится в зашифрованном виде в user://majacloud/<project id>.session и восстанавливается при следующем запуске. Рядом кешируется проверенная удалённая конфигурация для игры офлайн, а в user://majacloud/device.id хранится случайный ID установки (не привязанный к оборудованию).
Экспорт для веба#
- Отдавайте экспорт по HTTPS; API отправляет заголовки CORS, которые нужны браузерам.
user://находится в хранилище браузера, поэтому сессии сохраняются после перезагрузки страницы.- Вызывайте
link_account()из обработчика ввода (например, нажатия кнопки), чтобы браузер разрешил открыть новую вкладку.