Godot SDK

Addon GDScript cho Godot 4.2+ với các dịch vụ giống Unity SDK.

Chú thích trong mã và tên API được giữ nguyên tiếng Anh để khớp với SDK.

Trên trang này

Yêu cầu#

  • Godot 4.2 trở lên, GDScript. Hỗ trợ xuất cho desktop, di động và Web.
  • Không phụ thuộc thư viện: chỉ dùng HTTPRequest, Crypto và FileAccess của Godot.

Cài đặt#

  1. Tải file .zip của Godot SDK từ trang dự án hoặc trang tải xuống.
  2. Giải nén vào dự án sao cho thư mục là res://addons/majacloud (giữ nguyên tên).
  3. Project ▸ Project Settings ▸ Plugins: bật Majacloud. Plugin sẽ thêm autoload Majacloud.

Cài đặt dự án#

Plugin thêm các mục sau vào Project Settings ▸ General ▸ Majacloud:

Cài đặtMặc địnhÝ nghĩa
connection/base_urlĐịa chỉ của bản cài đặt này.
connection/project_idBảng điều khiển ▸ Khóa API.
connection/client_keyKhóa công khai pk_live_….
connection/config_public_keyĐược điền bởi Test connection; ghim việc xác minh cấu hình từ xa.
advanced/timeout_seconds15Số giây trước khi yêu cầu thất bại với timeout.
advanced/max_retries2Số lần thử lại các yêu cầu an toàn khi gặp lỗi mạng và lỗi máy chủ.
advanced/fetch_config_on_starttrueTải cấu hình từ xa khi game khởi động.
advanced/log_requestsfalseIn mọi yêu cầu ra Output.

Kiểm tra kết nối#

Project ▸ Tools ▸ Majacloud: Test connection gọi API với cài đặt của bạn, hiển thị tên dự án và gói, rồi lưu khóa công khai của cấu hình từ xa vào majacloud/connection/config_public_key.

Cấu hình bằng mã#

Gọi configure() để chuyển môi trường bằng mã. Lệnh này thay thế cài đặt cho phần còn lại của phiê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#

Mọi lệnh gọi đều được await và trả về một MajacloudResult. Game không bao giờ bị crash khi gặp lỗi mạng hay lỗi máy chủ.

TrườngÝ nghĩa
oktrue khi lệnh gọi thành công.
valuePhản hồi REST dưới dạng Dictionary (xem tài liệu tham khảo REST); số nguyên được trả về dưới dạng int.
errorRỗng khi thành công, nếu không là một mã ổn định như conflict hoặc network (xem mã lỗi).
messageLời giải thích dễ đọc.
statusMã trạng thái HTTP, 0 khi không kết nối được máy chủ.
request_idTìm giá trị này trên trang Nhật ký.
detailsDữ liệu bổ sung từ máy chủ, ví dụ next_claim_at.
is_retryable() và is_not_found().

Signal#

Kết nối với các signal sau để cập nhật 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", "")

Lưu trữ trên thiết bị#

Phiên khách được lưu mã hóa trong user://majacloud/<project id>.session và khôi phục ở lần mở game tiếp theo. Cấu hình từ xa đã xác minh được lưu đệm ngay bên cạnh để chơi offline, và user://majacloud/device.id chứa một ID cài đặt ngẫu nhiên (không dựa trên phần cứng).

Xuất bản cho web#

  • Phục vụ bản xuất qua HTTPS; API gửi các header CORS mà trình duyệt cần.
  • user:// được lưu trong bộ nhớ của trình duyệt, nên phiên vẫn còn sau khi tải lại trang.
  • Gọi link_account() từ một sự kiện nhập (ví dụ khi nhấn nút) để trình duyệt cho phép mở tab mới.

Tìm theo tiêu đề trang, đề mục và nội dung.

↑↓ để di chuyển ↵ để mở Esc để đóng