Godot-SDK

Ein GDScript-Addon für Godot 4.2+ mit denselben Diensten wie das Unity-SDK.

Codekommentare und API-Namen bleiben auf Englisch, damit sie zu den SDKs passen.

Auf dieser Seite

Voraussetzungen#

  • Godot 4.2 oder neuer, GDScript. Desktop-, Mobile- und Web-Exporte.
  • Keine Abhängigkeiten: nur HTTPRequest, Crypto und FileAccess von Godot.

Installation#

  1. Laden Sie die .zip-Datei des Godot-SDK von Ihrer Projektseite oder der Seite Downloads herunter.
  2. Entpacken Sie sie so in Ihr Projekt, dass der Ordner res://addons/majacloud heißt (Namen nicht ändern).
  3. Project ▸ Project Settings ▸ Plugins: Aktivieren Sie Majacloud. Das Plugin fügt den Autoload Majacloud hinzu.

Projekteinstellungen#

Das Plugin fügt unter Project Settings ▸ General ▸ Majacloud diese Einträge hinzu:

EinstellungStandardBedeutung
connection/base_urlDie Adresse dieser Installation.
connection/project_idDashboard ▸ API-Schlüssel.
connection/client_keyDer öffentliche Schlüssel pk_live_….
connection/config_public_keyWird von Test connection ausgefüllt; bindet die Prüfung der Remote-Konfiguration fest an Ihren Server.
advanced/timeout_seconds15Sekunden, bis eine Anfrage mit timeout fehlschlägt.
advanced/max_retries2Wiederholungen sicherer Anfragen bei Netzwerk- und Serverfehlern.
advanced/fetch_config_on_starttrueRemote-Konfiguration beim Spielstart abrufen.
advanced/log_requestsfalseJede Anfrage in der Ausgabe protokollieren.

Verbindung testen#

Project ▸ Tools ▸ Majacloud: Test connection ruft die API mit Ihren Einstellungen auf, zeigt Projektname und Tarif an und speichert den öffentlichen Schlüssel der Remote-Konfiguration in majacloud/connection/config_public_key.

Konfiguration im Code#

Rufen Sie configure() auf, um die Umgebung im Code zu wechseln. Damit werden die Einstellungen für den Rest der Sitzung ersetzt:

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#

Jeder Aufruf wird mit await abgewartet und liefert ein MajacloudResult. Netzwerk- oder Serverfehler führen nie zu einem Absturz.

FeldBedeutung
oktrue, wenn der Aufruf erfolgreich war.
valueDie REST-Antwort als Dictionary (siehe REST-Referenz); Ganzzahlen kommen als int an.
errorBei Erfolg leer, sonst ein stabiler Code wie conflict oder network (siehe Fehlercodes).
messageEine verständliche Erklärung.
statusHTTP-Status; 0, wenn der Server nicht erreicht wurde.
request_idDanach können Sie auf der Seite Logs suchen.
detailsZusätzliche Daten vom Server, z. B. next_claim_at.
is_retryable() und is_not_found().

Signale#

Verbinden Sie sich mit diesen Signalen, um Ihre UI zu aktualisieren:

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

Speicherung auf dem Gerät#

Die Gastsitzung wird verschlüsselt in user://majacloud/<project id>.session gespeichert und beim nächsten Start wiederhergestellt. Die geprüfte Remote-Konfiguration wird für das Offline-Spiel daneben zwischengespeichert, und user://majacloud/device.id enthält eine zufällige Installations-ID (nicht hardwarebasiert).

Web-Exporte#

  • Liefern Sie den Export über HTTPS aus; die API sendet die CORS-Header, die Browser benötigen.
  • user:// liegt im Speicher des Browsers, daher überstehen Sitzungen ein Neuladen der Seite.
  • Rufen Sie link_account() aus einem Eingabeereignis auf (zum Beispiel einem Button-Klick), damit der Browser den neuen Tab zulässt.

Durchsucht Seitentitel, Überschriften und Text.

↑↓ zum Navigieren ↵ zum Öffnen Esc zum Schließen