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.
Requisitos#
- Godot 4.2 o posterior, GDScript. Exportaciones de escritorio, móviles y web.
- Sin dependencias: solo
HTTPRequest,CryptoyFileAccessde Godot.
Instalación#
- Descarga el
.zipdel SDK de Godot desde la página de tu proyecto o desde la página de descargas. - Descomprímelo en tu proyecto para que la carpeta sea
res://addons/majacloud(no cambies el nombre). - 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:
| Ajuste | Valor predeterminado | Significado |
|---|---|---|
connection/base_url | La dirección de esta instalación. | |
connection/project_id | Panel ▸ Claves de API. | |
connection/client_key | La clave pública pk_live_…. | |
connection/config_public_key | Se rellena con Test connection; fija la clave para verificar la configuración remota. | |
advanced/timeout_seconds | 15 | Segundos antes de que una solicitud falle con timeout. |
advanced/max_retries | 2 | Reintentos de solicitudes seguras ante errores de red y del servidor. |
advanced/fetch_config_on_start | true | Obtener la configuración remota al iniciar el juego. |
advanced/log_requests | false | Mostrar 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:
# 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.
| Campo | Significado |
|---|---|
ok | true si la llamada se completó correctamente. |
value | La respuesta REST como Dictionary (consulta la referencia REST); los números enteros llegan como int. |
error | Vacío si todo va bien; si no, un código estable como conflict o network (consulta los errores). |
message | Una explicación legible. |
status | Estado HTTP; 0 si no se llegó al servidor. |
request_id | Búscalo en la página Registros. |
details | Datos 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:
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.