گودو راپر آزمایشی YouTube Playables

با استفاده از این بسته بندی می توانید به SDK YouTube Playables در Godot با .gd ارائه شده دسترسی داشته باشید. بسته بندی دارای یک رابط .js SDK و یک فایل .gd است که به سرعت توسعه شما کمک می کند. همچنین یک پروژه نمونه موجود است که نشان می دهد چگونه می توانید از این اسکریپت ها در پروژه خود استفاده کنید.

بسته‌های فشرده Godot را می‌توانید از مخزن نمونه Playables ما دانلود کنید.

استفاده

  1. GoogleYTGameWrapper-godot.zip در پوشه پروژه خود، جایی که می‌خواهید این اسکریپت‌ها قرار گیرند، استخراج کنید. این زیپ شامل دو فایل است:
    • YTGameWrapper.gd : به عنوان پلی برای YT Playables Javascript SDK استفاده می شود که به مسیری برای فراخوانی SDK در بازی اجازه می دهد.
    • YTGameSDK.js : برای اتصال به YT Playables SDK استفاده می شود. برای این مثال ما این فایل را در ریشه پروژه شما قرار می دهیم. می‌توانید این را تغییر دهید، اما نیاز به به‌روزرسانی مکان Head Include شما دارد.
    • همچنین یک نسخه نمونه پروژه کامل برای دانلود از مخزن نمونه Playables ما موجود است. برای این نسخه از فایل فشرده با نام GoogleYTGameWrapper-godot-with-sample.zip استفاده کنید.
  2. یک Autoload Global جدید برای اسکریپت YTGameWrapper.gd اضافه کنید که از حالت فشرده خارج شده است. این را می توان در قسمت Project -> Project Settings... -> Globals تنظیم کرد. فایل YTGameWrapper.gd را در کادر ورودی Path انتخاب کنید و YTGameWrapper برای کادر ورودی Node Name اضافه کنید. در نهایت + Add انتخاب کنید.
    • این اسکریپت را به صورت جهانی در کد شما در دسترس قرار می دهد و به شما امکان می دهد در صورت نیاز YTGameWrapper را فراخوانی کنید.
  3. بررسی کنید که پلتفرم پروژه Godot شما برای صادرات برای Web تنظیم شده است. این تنظیم در تب Export یافت می شود، Project و سپس Export... انتخاب کنید.
  4. در پانل 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>
  1. با انتخاب Export Project... و انتخاب محل ساخت، پروژه وب خود را در پنل Export صادر کنید.
  2. هنگامی که پروژه شما ساخته شد، به پوشه build بروید و فایل YTGameSDK.js را در این پوشه کپی کنید و مطمئن شوید که هنگام ارسال ساخت، آن را اضافه کنید.
  3. بررسی کنید که الزامات فنی پروژه خود را دنبال می کنید و حتما از مجموعه آزمایشی 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 را ببینید.