Godot SDK

Аддон на GDScript для Godot 4.2+ с теми же сервисами, что и в Unity SDK.

Комментарии в коде и имена API оставлены на английском, чтобы совпадать с SDK.

На этой странице

Требования#

  • Godot 4.2 или новее, GDScript. Экспорт для десктопа, мобильных платформ и веба.
  • Без зависимостей: только HTTPRequest, Crypto и FileAccess из Godot.

Установка#

  1. Скачайте .zip с Godot SDK на странице проекта или на странице загрузок.
  2. Распакуйте его в проект так, чтобы получилась папка res://addons/majacloud (не переименовывайте её).
  3. 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_seconds15Через сколько секунд запрос завершается ошибкой timeout.
advanced/max_retries2Число повторов безопасных запросов при ошибках сети и сервера.
advanced/fetch_config_on_starttrueЗагружать удалённую конфигурацию при запуске игры.
advanced/log_requestsfalseВыводить каждый запрос в консоль.

Проверка подключения#

Project ▸ Tools ▸ Majacloud: Test connection вызывает API с вашими настройками, показывает название проекта и тариф и сохраняет публичный ключ удалённой конфигурации в majacloud/connection/config_public_key.

Настройка из кода#

Вызовите configure(), чтобы переключить окружение из кода. Вызов заменяет настройки до конца сессии:

GDScript
# 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. Он никогда не приводит к сбою при ошибках сети или сервера.

ПолеЗначение
oktrue, если вызов выполнен успешно.
valueОтвет REST в виде Dictionary (см. справочник REST); целые числа приходят как int.
errorПусто при успехе, иначе — постоянный код, например conflict или network (см. ошибки).
messageПонятное описание.
statusHTTP-статус; 0, если сервер недоступен.
request_idНайдите его на странице «Логи».
detailsДополнительные данные от сервера, например next_claim_at.
is_retryable() и is_not_found().

Сигналы#

Подключитесь к этим сигналам, чтобы обновлять интерфейс:

GDScript
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() из обработчика ввода (например, нажатия кнопки), чтобы браузер разрешил открыть новую вкладку.

Поиск по названиям страниц, заголовкам и тексту.

↑↓ навигация ↵ открыть Esc закрыть