SDK de Godot

Un addon de GDScript para Godot 4.2+ con los mismos servicios que el SDK de Unity.

Los comentarios del código y los nombres de la API se mantienen en inglés para que coincidan con los SDK.

En esta página

Requisitos#

  • Godot 4.2 o posterior, GDScript. Exportaciones de escritorio, móviles y web.
  • Sin dependencias: solo HTTPRequest, Crypto y FileAccess de Godot.

Instalación#

  1. Descarga el .zip del SDK de Godot desde la página de tu proyecto o desde la página de descargas.
  2. Descomprímelo en tu proyecto para que la carpeta sea res://addons/majacloud (no cambies el nombre).
  3. Project ▸ Project Settings ▸ Plugins: activa Majacloud. El plugin añade el autoload Majacloud.

Configuración del proyecto#

El plugin añade estas entradas en Project Settings ▸ General ▸ Majacloud:

AjusteValor predeterminadoSignificado
connection/base_urlLa dirección de esta instalación.
connection/project_idPanel ▸ Claves de API.
connection/client_keyLa clave pública pk_live_….
connection/config_public_keySe rellena con Test connection; fija la clave para verificar la configuración remota.
advanced/timeout_seconds15Segundos antes de que una solicitud falle con timeout.
advanced/max_retries2Reintentos de solicitudes seguras ante errores de red y del servidor.
advanced/fetch_config_on_starttrueObtener la configuración remota al iniciar el juego.
advanced/log_requestsfalseMostrar cada solicitud en la salida.

Test connection#

Project ▸ Tools ▸ Majacloud: Test connection llama a la API con tu configuración, muestra el nombre del proyecto y el plan, y guarda la clave pública de configuración remota en majacloud/connection/config_public_key.

Configuración desde código#

Llama a configure() para cambiar de entorno desde el código. Sustituye la configuración durante el resto de la sesión:

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#

Cada llamada se espera con await y devuelve un MajacloudResult. Los errores de red o del servidor nunca hacen fallar el juego.

CampoSignificado
oktrue si la llamada se completó correctamente.
valueLa respuesta REST como Dictionary (consulta la referencia REST); los números enteros llegan como int.
errorVacío si todo va bien; si no, un código estable como conflict o network (consulta los errores).
messageUna explicación legible.
statusEstado HTTP; 0 si no se llegó al servidor.
request_idBúscalo en la página Registros.
detailsDatos adicionales del servidor, p. ej., next_claim_at.
is_retryable() y is_not_found().

Señales#

Conéctate a estas señales para actualizar tu UI:

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", "")

Almacenamiento en el dispositivo#

La sesión de invitado se guarda cifrada en user://majacloud/<project id>.session y se restaura en el siguiente inicio. La configuración remota verificada se guarda en caché junto a ella para jugar sin conexión, y user://majacloud/device.id contiene un ID de instalación aleatorio (no basado en el hardware).

Exportaciones web#

  • Sirve la exportación por HTTPS; la API envía las cabeceras CORS que necesitan los navegadores.
  • user:// se conserva en el almacenamiento del navegador, así que las sesiones sobreviven a las recargas de la página.
  • Llama a link_account() desde un evento de entrada (por ejemplo, al pulsar un botón) para que el navegador permita abrir la nueva pestaña.

Busca en títulos, encabezados y texto de las páginas.

↑↓ para navegar ↵ para abrir Esc para cerrar