Godot SDK

แอดออน GDScript สำหรับ Godot 4.2+ ที่มีบริการเหมือนกับ Unity SDK

คอมเมนต์ในโค้ดและชื่อ API ยังคงเป็นภาษาอังกฤษเพื่อให้ตรงกับ SDK

ในหน้านี้

ความต้องการของระบบ#

  • Godot 4.2 ขึ้นไป ใช้ GDScript รองรับการส่งออกสำหรับเดสก์ท็อป มือถือ และเว็บ
  • ไม่มี dependency โดยใช้เพียง HTTPRequest, Crypto และ FileAccess ของ Godot

การติดตั้ง#

  1. ดาวน์โหลดไฟล์ .zip ของ Godot SDK จากหน้าโปรเจกต์หรือหน้า ดาวน์โหลด
  2. แตกไฟล์ลงในโปรเจกต์ให้โฟลเดอร์อยู่ที่ res://addons/majacloud (ห้ามเปลี่ยนชื่อ)
  3. 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_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 โดยจะไม่แครชเมื่อเกิดข้อผิดพลาดของเครือข่ายหรือเซิร์ฟเวอร์

ฟิลด์ความหมาย
oktrue เมื่อการเรียกสำเร็จ
valueการตอบกลับจาก REST ในรูปแบบ Dictionary (ดู ข้อมูลอ้างอิง REST) จำนวนเต็มจะได้เป็น int
errorว่างเมื่อสำเร็จ หากไม่สำเร็จจะเป็นรหัสที่คงที่ เช่น conflict หรือ network (ดู รหัสข้อผิดพลาด)
messageคำอธิบายที่อ่านเข้าใจได้
statusสถานะ HTTP เป็น 0 เมื่อติดต่อเซิร์ฟเวอร์ไม่ได้
request_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 เก็บรหัสการติดตั้งแบบสุ่ม (ไม่ได้อิงกับฮาร์ดแวร์)

การส่งออกสำหรับเว็บ#

  • ให้บริการไฟล์ที่ส่งออกผ่าน HTTPS โดย API จะส่งเฮดเดอร์ CORS ที่เบราว์เซอร์ต้องการให้
  • user:// จะถูกเก็บไว้ในพื้นที่จัดเก็บของเบราว์เซอร์ เซสชันจึงคงอยู่แม้โหลดหน้าใหม่
  • เรียก link_account() จากอินพุตอีเวนต์ (เช่น การกดปุ่ม) เพื่อให้เบราว์เซอร์อนุญาตให้เปิดแท็บใหม่

ค้นหาจากชื่อหน้า หัวข้อ และเนื้อหา

↑↓ เพื่อเลื่อน ↵ เพื่อเปิด Esc เพื่อปิด