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.
Voraussetzungen#
- Godot 4.2 oder neuer, GDScript. Desktop-, Mobile- und Web-Exporte.
- Keine Abhängigkeiten: nur
HTTPRequest,CryptoundFileAccessvon Godot.
Installation#
- Laden Sie die
.zip-Datei des Godot-SDK von Ihrer Projektseite oder der Seite Downloads herunter. - Entpacken Sie sie so in Ihr Projekt, dass der Ordner
res://addons/majacloudheißt (Namen nicht ändern). - Project ▸ Project Settings ▸ Plugins: Aktivieren Sie Majacloud. Das Plugin fügt den Autoload
Majacloudhinzu.
Projekteinstellungen#
Das Plugin fügt unter Project Settings ▸ General ▸ Majacloud diese Einträge hinzu:
| Einstellung | Standard | Bedeutung |
|---|---|---|
connection/base_url | Die Adresse dieser Installation. | |
connection/project_id | Dashboard ▸ API-Schlüssel. | |
connection/client_key | Der öffentliche Schlüssel pk_live_…. | |
connection/config_public_key | Wird von Test connection ausgefüllt; bindet die Prüfung der Remote-Konfiguration fest an Ihren Server. | |
advanced/timeout_seconds | 15 | Sekunden, bis eine Anfrage mit timeout fehlschlägt. |
advanced/max_retries | 2 | Wiederholungen sicherer Anfragen bei Netzwerk- und Serverfehlern. |
advanced/fetch_config_on_start | true | Remote-Konfiguration beim Spielstart abrufen. |
advanced/log_requests | false | Jede 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:
# 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.
| Feld | Bedeutung |
|---|---|
ok | true, wenn der Aufruf erfolgreich war. |
value | Die REST-Antwort als Dictionary (siehe REST-Referenz); Ganzzahlen kommen als int an. |
error | Bei Erfolg leer, sonst ein stabiler Code wie conflict oder network (siehe Fehlercodes). |
message | Eine verständliche Erklärung. |
status | HTTP-Status; 0, wenn der Server nicht erreicht wurde. |
request_id | Danach können Sie auf der Seite Logs suchen. |
details | Zusä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:
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.