Godot SDK
แอดออน GDScript สำหรับ Godot 4.2+ ที่มีบริการเหมือนกับ Unity SDK
คอมเมนต์ในโค้ดและชื่อ API ยังคงเป็นภาษาอังกฤษเพื่อให้ตรงกับ SDK
ความต้องการของระบบ#
- Godot 4.2 ขึ้นไป ใช้ GDScript รองรับการส่งออกสำหรับเดสก์ท็อป มือถือ และเว็บ
- ไม่มี dependency โดยใช้เพียง
HTTPRequest,CryptoและFileAccessของ Godot
การติดตั้ง#
- ดาวน์โหลดไฟล์
.zipของ Godot SDK จากหน้าโปรเจกต์หรือหน้า ดาวน์โหลด - แตกไฟล์ลงในโปรเจกต์ให้โฟลเดอร์อยู่ที่
res://addons/majacloud(ห้ามเปลี่ยนชื่อ) - Project ▸ Project Settings ▸ Plugins: เปิดใช้ Majacloud ปลั๊กอินจะเพิ่ม autoload ชื่อ
Majacloud
การตั้งค่าโปรเจกต์#
ปลั๊กอินจะเพิ่มรายการเหล่านี้ใน Project Settings ▸ General ▸ Majacloud:
| การตั้งค่า | ค่าเริ่มต้น | ความหมาย |
|---|---|---|
connection/base_url | ที่อยู่ของระบบที่ติดตั้งนี้ | |
connection/project_id | แดชบอร์ด ▸ คีย์ API | |
connection/client_key | คีย์สาธารณะ pk_live_… | |
connection/config_public_key | กรอกให้อัตโนมัติโดย Test connection ใช้ปักหมุดการตรวจสอบรีโมตคอนฟิก | |
advanced/timeout_seconds | 15 | จำนวนวินาทีก่อนที่คำขอจะล้มเหลวด้วย timeout |
advanced/max_retries | 2 | จำนวนครั้งที่ลองส่งคำขอที่ปลอดภัยใหม่เมื่อเกิดข้อผิดพลาดของเครือข่ายหรือเซิร์ฟเวอร์ |
advanced/fetch_config_on_start | true | ดึงรีโมตคอนฟิกเมื่อเกมเริ่มต้น |
advanced/log_requests | false | พิมพ์ทุกคำขอลงในเอาต์พุต |
ทดสอบการเชื่อมต่อ#
Project ▸ Tools ▸ Majacloud: Test connection จะเรียก API ด้วยการตั้งค่าของคุณ แสดงชื่อโปรเจกต์และแพ็กเกจ และเก็บคีย์สาธารณะของรีโมตคอนฟิกไว้ใน majacloud/connection/config_public_key
ตั้งค่าจากโค้ด#
เรียก configure() เพื่อสลับสภาพแวดล้อมจากโค้ด ค่าที่กำหนดจะแทนที่การตั้งค่าตลอดเซสชันที่เหลือ:
# 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 เมื่อการเรียกสำเร็จ |
value | การตอบกลับจาก REST ในรูปแบบ Dictionary (ดู ข้อมูลอ้างอิง REST) จำนวนเต็มจะได้เป็น int |
error | ว่างเมื่อสำเร็จ หากไม่สำเร็จจะเป็นรหัสที่คงที่ เช่น conflict หรือ network (ดู รหัสข้อผิดพลาด) |
message | คำอธิบายที่อ่านเข้าใจได้ |
status | สถานะ HTTP เป็น 0 เมื่อติดต่อเซิร์ฟเวอร์ไม่ได้ |
request_id | ใช้ค้นหาในหน้าล็อก |
details | ข้อมูลเพิ่มเติมจากเซิร์ฟเวอร์ เช่น next_claim_at |
is_retryable() และ is_not_found() |
ซิกนัล#
เชื่อมต่อซิกนัลเหล่านี้เพื่ออัปเดต 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", "")การจัดเก็บข้อมูลบนอุปกรณ์#
เซสชันเกสต์จะถูกเข้ารหัสและจัดเก็บไว้ใน user://majacloud/<project id>.session และกู้คืนเมื่อเปิดเกมครั้งถัดไป รีโมตคอนฟิกที่ตรวจสอบแล้วจะถูกแคชไว้ข้างกันสำหรับการเล่นออฟไลน์ และ user://majacloud/device.id เก็บรหัสการติดตั้งแบบสุ่ม (ไม่ได้อิงกับฮาร์ดแวร์)
การส่งออกสำหรับเว็บ#
- ให้บริการไฟล์ที่ส่งออกผ่าน HTTPS โดย API จะส่งเฮดเดอร์ CORS ที่เบราว์เซอร์ต้องการให้
user://จะถูกเก็บไว้ในพื้นที่จัดเก็บของเบราว์เซอร์ เซสชันจึงคงอยู่แม้โหลดหน้าใหม่- เรียก
link_account()จากอินพุตอีเวนต์ (เช่น การกดปุ่ม) เพื่อให้เบราว์เซอร์อนุญาตให้เปิดแท็บใหม่