با استفاده از این بسته بندی می توانید به SDK YouTube Playables در Godot با .gd
ارائه شده دسترسی داشته باشید. بسته بندی دارای یک رابط .js SDK و یک فایل .gd
است که به سرعت توسعه شما کمک می کند. همچنین یک پروژه نمونه موجود است که نشان می دهد چگونه می توانید از این اسکریپت ها در پروژه خود استفاده کنید.
بستههای فشرده Godot را میتوانید از مخزن نمونه Playables ما دانلود کنید.
استفاده
-
GoogleYTGameWrapper-godot.zip
در پوشه پروژه خود، جایی که میخواهید این اسکریپتها قرار گیرند، استخراج کنید. این زیپ شامل دو فایل است:-
YTGameWrapper.gd
: به عنوان پلی برای YT Playables Javascript SDK استفاده می شود که به مسیری برای فراخوانی SDK در بازی اجازه می دهد. -
YTGameSDK.js
: برای اتصال به YT Playables SDK استفاده می شود. برای این مثال ما این فایل را در ریشه پروژه شما قرار می دهیم. میتوانید این را تغییر دهید، اما نیاز به بهروزرسانی مکان Head Include شما دارد. - همچنین یک نسخه نمونه پروژه کامل برای دانلود از مخزن نمونه Playables ما موجود است. برای این نسخه از فایل فشرده با نام
GoogleYTGameWrapper-godot-with-sample.zip
استفاده کنید.
-
- یک Autoload Global جدید برای اسکریپت
YTGameWrapper.gd
اضافه کنید که از حالت فشرده خارج شده است. این را می توان در قسمتProject
->Project Settings...
->Globals
تنظیم کرد. فایلYTGameWrapper.gd
را در کادر ورودیPath
انتخاب کنید وYTGameWrapper
برای کادر ورودیNode Name
اضافه کنید. در نهایت+ Add
انتخاب کنید.- این اسکریپت را به صورت جهانی در کد شما در دسترس قرار می دهد و به شما امکان می دهد در صورت نیاز
YTGameWrapper
را فراخوانی کنید.
- این اسکریپت را به صورت جهانی در کد شما در دسترس قرار می دهد و به شما امکان می دهد در صورت نیاز
- بررسی کنید که پلتفرم پروژه Godot شما برای صادرات برای
Web
تنظیم شده است. این تنظیم در تب Export یافت می شود،Project
و سپسExport...
انتخاب کنید. - در پانل Export با انتخاب
Add...
یک Preset جدید اضافه کنید سپسWeb
انتخاب کنید. پس از ایجاد، این کد را به کادر تنظیماتHead Include
اضافه کنید.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
- با انتخاب
Export Project...
و انتخاب محل ساخت، پروژه وب خود را در پنلExport
صادر کنید. - هنگامی که پروژه شما ساخته شد، به پوشه build بروید و فایل
YTGameSDK.js
را در این پوشه کپی کنید و مطمئن شوید که هنگام ارسال ساخت، آن را اضافه کنید. - بررسی کنید که الزامات فنی پروژه خود را دنبال می کنید و حتما از مجموعه آزمایشی Playables استفاده کنید.
نمونه ها
این بخش چند نمونه از نحوه استفاده از wrapper .gd
دارد، لیست کامل APIهای موجود نیست. برای فهرست کامل APIهای موجود، به YouTube Playables SDK مراجعه کنید. این همچنین فرض می کند که پروژه شما همانطور که در بخش Usage توضیح داده شده است تنظیم شده است.
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
چگونه دارایی ها را در پروژه گودو خود تقسیم کنیم (بارگذاری تنبل)
یکی از اصلیترین مشکلاتی که توسعهدهندگان در هنگام استفاده از گودو بر آن تاکید کردهاند این است که تحت شرایط مورد نیاز اندازه فایل فردی و کل نیازهای اندازه بسته نرم افزاری قرار بگیرند.
بارگذاری تنبل دارایی ها یک بهینه سازی عالی است که می توانید برای پروژه خود انجام دهید زیرا می توانید دارایی ها، سطوح و داده ها را در صورت نیاز بارگیری کنید. اگر این کار به درستی انجام شود، ممکن است تیم صدور گواهینامه ما از محدودیت های کلی اندازه فایل چشم پوشی کند، زیرا بازی کامل شما از قبل بارگیری نمی شود، بلکه به عنوان کاربر محصول شما را هدایت می کند.
برای کمک به بارگذاری مناسب، گودو بستهها، وصلهها و مدهای صادراتی را ارائه میدهد ( لینک انگلیسی ). پیشنهاد میکنیم فایلهای .pck
را تولید کنید که در صورت نیاز بارگذاری میشوند.
مرجع کامل API YT Playables را ببینید.