Godot SDK

Godot 4.2 以降向けの GDScript アドオンです。Unity SDK と同じサービスを利用できます。

コードのコメントと API 名は、SDK と一致させるため英語のままにしています。

このページの内容

動作要件#

  • Godot 4.2 以降、GDScript。デスクトップ、モバイル、Web へのエクスポートに対応しています。
  • 依存関係はありません。Godot の HTTPRequest、Crypto、FileAccess のみを使用します。

インストール#

  1. プロジェクトページまたはダウンロードページから、Godot SDK の .zip をダウンロードします。
  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_keyTest 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 を返します。ネットワークエラーやサーバーエラーでクラッシュすることはありません。

フィールド意味
ok呼び出しが成功した場合は true。
valueDictionary 形式の REST レスポンス(REST リファレンスを参照)。整数は int として渡されます。
error成功時は空。失敗時は conflict や network などの安定したコード(エラーを参照)。
message人が読める説明。
statusHTTP ステータス。サーバーに到達しなかった場合は 0。
request_idログページでこの ID を検索できます。
detailsサーバーからの追加データ(例: next_claim_at)。
is_retryable() と is_not_found()。

シグナル#

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

デバイス上の保存データ#

ゲストセッションは user://majacloud/<project id>.session に暗号化して保存され、次回の起動時に復元されます。検証済みのリモートコンフィグはオフラインプレイ用にその隣にキャッシュされ、user://majacloud/device.id にはランダムなインストール ID(ハードウェア情報に基づかないもの)が保存されます。

Web エクスポート#

  • エクスポートしたゲームは HTTPS で配信してください。ブラウザに必要な CORS ヘッダーは API が送信します。
  • user:// はブラウザのストレージに保持されるため、ページを再読み込みしてもセッションは維持されます。
  • ブラウザが新しいタブを開けるように、link_account() は入力イベント(ボタンの押下など)から呼び出してください。

ページタイトル、見出し、本文を検索します。

↑↓ で移動 ↵ で開く Esc で閉じる