การใช้ Wrapper นี้จะช่วยให้คุณเข้าถึง YouTube Playables SDK ใน Godot ได้โดยใช้ .gd
ที่ให้มา Wrapper นี้มีตัวเชื่อมต่อ SDK .js และไฟล์ .gd
เพื่อช่วยเร่งการพัฒนา นอกจากนี้ยังมีโปรเจ็กต์ตัวอย่างที่แสดงวิธีใช้สคริปต์เหล่านี้ในโปรเจ็กต์ด้วย
แพ็กเกจ zip ของ Godot สามารถดาวน์โหลดได้จากที่เก็บตัวอย่างของฟีเจอร์เล่นเกม
การใช้งาน
- แตกไฟล์
GoogleYTGameWrapper-godot.zip
ในโฟลเดอร์โปรเจ็กต์ที่ต้องการให้สคริปต์เหล่านี้อยู่ ไฟล์ ZIP นี้มี 2 ไฟล์ ดังนี้YTGameWrapper.gd
: ใช้เป็นตัวเชื่อมกับ SDK JavaScript ของ YT Playables เพื่อให้มีเส้นทางในการเรียกใช้ SDK จากในเกมYTGameSDK.js
: ใช้เพื่อเชื่อมต่อกับ YT Playables SDK ในตัวอย่างนี้ เราจะวางไฟล์นี้ไว้ในรูทของโปรเจ็กต์ คุณเปลี่ยนแปลงข้อมูลนี้ได้ แต่จะต้องอัปเดตตําแหน่งการรวมส่วนหัว- นอกจากนี้ คุณยังดาวน์โหลดเวอร์ชันตัวอย่างโปรเจ็กต์แบบสมบูรณ์ได้จากที่เก็บตัวอย่างของฟีเจอร์เล่นเกม สําหรับเวอร์ชันนี้ ให้ใช้ไฟล์ ZIP ที่ชื่อ
GoogleYTGameWrapper-godot-with-sample.zip
- เพิ่ม Autoload Global ใหม่สำหรับสคริปต์
YTGameWrapper.gd
ที่แตกไฟล์แล้ว ซึ่งตั้งค่าได้ที่Project
->Project Settings...
->Globals
เลือกไฟล์YTGameWrapper.gd
ในช่องป้อนข้อมูลPath
และเพิ่มYTGameWrapper
ในช่องป้อนข้อมูลNode Name
สุดท้าย ให้เลือก+ Add
- ซึ่งจะทำให้สคริปต์พร้อมใช้งานทั่วโลกในโค้ดของคุณ ซึ่งจะช่วยให้คุณเรียกใช้
YTGameWrapper
ได้ตามต้องการ
- ซึ่งจะทำให้สคริปต์พร้อมใช้งานทั่วโลกในโค้ดของคุณ ซึ่งจะช่วยให้คุณเรียกใช้
- ตรวจสอบว่าแพลตฟอร์มโปรเจ็กต์ Godot ของคุณตั้งค่าให้ส่งออกสำหรับ
Web
แล้ว การตั้งค่านี้อยู่ในแท็บ "ส่งออก" ให้เลือกProject
แล้วเลือกExport...
- ในแผง "ส่งออก" ให้เพิ่มค่าที่กำหนดล่วงหน้าใหม่โดยเลือก
Add...
แล้วเลือกWeb
เมื่อสร้างแล้ว ให้เพิ่มโค้ดนี้ลงในช่องการตั้งค่าHead Include
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
- ส่งออกโปรเจ็กต์เว็บในแผง
Export
โดยเลือกExport Project...
แล้วเลือกตำแหน่งการสร้าง - เมื่อสร้างโปรเจ็กต์แล้ว ให้ไปที่โฟลเดอร์บิลด์และคัดลอกไฟล์
YTGameSDK.js
ลงในโฟลเดอร์นี้ และอย่าลืมรวมไฟล์ดังกล่าวเมื่อส่งบิลด์ - ตรวจสอบว่าคุณปฏิบัติตามข้อกำหนดทางเทคนิคสำหรับโปรเจ็กต์ และอย่าลืมใช้ชุดทดสอบของฟีเจอร์เล่นเกม
ตัวอย่าง
ส่วนนี้มีตัวอย่างวิธีใช้ .gd
wrapper แต่ไม่ใช่รายการ API ทั้งหมดที่ใช้ได้ ดูรายการ API ทั้งหมดที่ใช้ได้ได้ที่ YouTube Playables SDK การดำเนินการนี้ยังถือว่าโปรเจ็กต์ของคุณได้รับการตั้งค่าตามที่อธิบายไว้ในส่วนการใช้งานด้วย
sendScore
ตัวอย่างนี้แสดงการใช้งาน sendScore(int points)
ใน .gd
var current_game_score: int = 0
...
func add_score(scoreAdded: int):
current_game_score += scoreAdded
YTGameWrapper.send_score(current_game_score)
onPause
ต่อไปนี้เป็นตัวอย่างวิธีที่เกมสามารถฟังเหตุการณ์ Pause
ที่มาจาก YT
Playables เพื่อหยุดการทำงานของเครื่องยนต์ชั่วคราวเมื่อจำเป็น
func _ready() -> void:
# hook up on game paused
YTGameWrapper.game_paused.connect(self._on_game_paused)
# hook up on game resumed and game save data received events
YTGameWrapper.game_resumed.connect(self._on_game_resumed)
func _on_game_paused():
# Pause your game logic, audio, etc.
get_tree().paused = true
func _on_game_resumed():
# Resume your game logic, audio, etc.
get_tree().paused = false
saveData
ต่อไปนี้คือตัวอย่างวิธีใช้ saveData
โดยส่งไปยัง YT Playables SDK
var current_game_score: int = 0
var time_elapsed: float = 0.0
...
func save_game_data():
YTGameWrapper.save_data('{"BestScore": "' + str(current_game_score) + '","BestTime": "' +str(time_elapsed)+ '"}')
loadData
ต่อไปนี้คือตัวอย่างวิธีใช้ loadData
โดยส่งไปยัง YT Playables SDK
func _ready() -> void:
# hook up game load data received event
YTGameWrapper.load_data_received.connect(self._on_load_data)
# Request to load data when the game starts
YTGameWrapper.load_data()
func _on_load_data(save_data_string: String):
if not save_data_string.is_empty():
# Add logic to parse the save_data_string and restore game state
print("Loaded data: ", save_data_string)
requestInterstitialAd
นี่เป็นตัวอย่างวิธีใช้ requestInterstitialAd
ซึ่งบ่งบอกว่าเป็นเวลาที่เหมาะในการแสดงโฆษณาคั่นระหว่างหน้า (หากมี) เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ให้โทรระหว่างช่วงพักระหว่างเกม เช่น เมื่อจบด่าน
func set_game_over(didWin: bool):
YTGameWrapper.request_interstitial_ad()
# logic for game over
วิธีแบ่งชิ้นงานในโปรเจ็กต์ Godot (การโหลดแบบเลื่อนเวลา)
ปัญหาหลักอย่างหนึ่งที่นักพัฒนาแอปได้ไฮไลต์เมื่อใช้ Godot คือการรักษาขนาดไฟล์แต่ละไฟล์ให้เป็นไปตามข้อกำหนดและขนาดแพ็กเกจรวม
การโหลดเนื้อหาแบบ Lazy Loading เป็นการเพิ่มประสิทธิภาพที่ยอดเยี่ยมที่คุณทำได้สำหรับโปรเจ็กต์ เนื่องจากคุณสามารถโหลดเนื้อหา ระดับ และข้อมูลได้ตามต้องการ ทีมการรับรองของเราอาจยกเว้นข้อจำกัดด้านขนาดไฟล์โดยรวมหากดำเนินการอย่างถูกต้อง เนื่องจากระบบจะไม่โหลดเกมทั้งหมดตั้งแต่ต้น แต่ระบบจะโหลดเมื่อผู้ใช้ไปยังส่วนต่างๆ ของผลิตภัณฑ์
Godot มีการส่งออกแพ็กเกจ การแก้ไข และม็อดเพื่อช่วยในการโหลดอย่างถูกต้อง (ลิงก์ภาษาอังกฤษ) เราขอแนะนําให้สร้างไฟล์ .pck
ที่โหลดตามต้องการ