באמצעות העטיפה הזו תוכלו לגשת ל-YouTube Playables SDK ב-Godot באמצעות .gd
שסופק. למעטפת יש מחבר SDK מסוג .js וקובץ .gd
שיעזרו לכם לפתח מהר יותר. יש גם פרויקט לדוגמה שבו מוסבר איך משתמשים בסקריפטים האלה בפרויקט.
אפשר להוריד חבילות zip של Godot ממאגר הדוגמאות של Playables.
שימוש
- לחלץ את
GoogleYTGameWrapper-godot.zip
בתיקיית הפרויקט שבה רוצים שהסקריפטים האלה יהיו. קובץ ה-ZIP מכיל שני קבצים:YTGameWrapper.gd
: משמש כגשר ל-SDK של YT Playables ב-JavaScript, ומאפשר נתיב לקריאה ל-SDK מתוך המשחק.YTGameSDK.js
: משמש להתחברות ל-YT Playables SDK. בדוגמה הזו נמקם את הקובץ ברמה הבסיסית של הפרויקט. אפשר לשנות את זה, אבל צריך לעדכן את המיקום של הקוד של ה-Head Include.- יש גם גרסה מלאה של פרויקט לדוגמה שזמינה להורדה ממאגר הדוגמאות שלנו ל-Playables. לגרסה הזו צריך להשתמש בקובץ ה-zip בשם
GoogleYTGameWrapper-godot-with-sample.zip
.
- מוסיפים משתנה גלובלי חדש של Autoload לסקריפט
YTGameWrapper.gd
שפורק. אפשר להגדיר את זה בקטעProject
->Project Settings...
->Globals
. בוחרים את הקובץYTGameWrapper.gd
בתיבת הקלטPath
ומוסיפים את הערךYTGameWrapper
לתיבת הקלטNode Name
. בסיום, בוחרים באפשרות+ Add
.- כך הסקריפט יהיה זמין באופן גלובלי בקוד, ותוכלו להפעיל את
YTGameWrapper
לפי הצורך.
- כך הסקריפט יהיה זמין באופן גלובלי בקוד, ותוכלו להפעיל את
- מוודאים שהפלטפורמה של פרויקט Godot מוגדרת לייצוא ל-
Web
. ההגדרה הזו נמצאת בכרטיסייה Export (ייצוא). בוחרים באפשרות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...
ובחירת מיקום ה-build. - אחרי ה-build של הפרויקט, עוברים לתיקיית ה-build ומעתיקים את הקובץ
YTGameSDK.js
לתיקייה הזו. חשוב לכלול אותו כששולחים את ה-build. - חשוב לוודא שאתם פועלים בהתאם לדרישות הטכניות של הפרויקט, ולהשתמש בחבילת הבדיקות של Playables.
דוגמאות
בקטע הזה מפורטות כמה דוגמאות לשימוש ב-wrapper של .gd
, אבל זו לא הרשימה המלאה של ממשקי ה-API הזמינים. בYouTube Playables SDK תוכלו למצוא רשימה מלאה של ממשקי ה-API הזמינים. ההנחה היא גם שהפרויקט הוגדר כפי שמתואר בקטע 'שימוש'.
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 היא עמידה בדרישות לגבי גודל הקובץ הבודד ודרישות גודל החבילה הכוללת.
טעינה איטית של נכסים היא אופטימיזציה מצוינת שאפשר לבצע בפרויקט, כי אפשר לטעון נכסים, רמות ונתונים לפי הצורך. צוות האישור שלנו עשוי לבטל את ההגבלות הכוללות על גודל הקובץ אם הדבר יבוצע בצורה תקינה, מאחר שהמשחק המלא לא יהיה נטען מראש, אלא כאשר המשתמש מנווט במוצר.
כדי לעזור לכם לטפל בבעיות טעינה, Godot מציע ייצוא של חבילות, תיקונים ומודים (קישור לאנגלית). מומלץ ליצור קובצי .pck
שיוטענו לפי הצורך.