YouTube Playables के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध Godot रैपर

इस रैपर की मदद से, दिए गए .gd का इस्तेमाल करके Godot में YouTube Playables SDK को ऐक्सेस किया जा सकता है. आपके डेवलपमेंट को तेज़ करने के लिए, रैपर में .js SDK कनेक्टर और .gd फ़ाइल होती है. यहां एक सैंपल प्रोजेक्ट भी उपलब्ध है, जिसमें दिखाया गया है कि अपने प्रोजेक्ट में इन स्क्रिप्ट का इस्तेमाल कैसे किया जा सकता है.

Godot के ज़िप पैकेज, Playables के सैंपल रेपो से डाउनलोड किए जा सकते हैं.

इस्तेमाल

  1. GoogleYTGameWrapper-godot.zip को अपने प्रोजेक्ट फ़ोल्डर में निकालें, जहां आपको ये स्क्रिप्ट सेव करनी हैं. इस ज़िप में दो फ़ाइलें हैं:
    • YTGameWrapper.gd: इसका इस्तेमाल, YT Playables के JavaScript SDK टूल के ब्रिज के तौर पर किया जाता है. इससे गेम में SDK टूल को कॉल करने का पाथ मिलता है.
    • YTGameSDK.js: इसका इस्तेमाल, YT Playables SDK से कनेक्ट करने के लिए किया जाता है. इस उदाहरण के लिए, हम इस फ़ाइल को आपके प्रोजेक्ट के रूट में डालेंगे. इसे बदला जा सकता है. हालांकि, इसके लिए आपको हेड शामिल करने की जगह की जानकारी अपडेट करनी होगी.
    • हमारे Playables सैंपल रेपो से, प्रोजेक्ट का पूरा सैंपल वर्शन भी डाउनलोड किया जा सकता है. इस वर्शन के लिए, GoogleYTGameWrapper-godot-with-sample.zip नाम वाले ज़िप का इस्तेमाल करें.
  2. अनज़िप की गई YTGameWrapper.gd स्क्रिप्ट के लिए, एक नया ऑटोलोड ग्लोबल जोड़ें. इसे Project -> Project Settings... -> Globals में जाकर सेट किया जा सकता है. Path इनपुट बॉक्स में YTGameWrapper.gd फ़ाइल चुनें और Node Name इनपुट बॉक्स में YTGameWrapper जोड़ें. आखिर में, + Add को चुनें.
    • इससे स्क्रिप्ट आपके कोड में दुनिया भर में उपलब्ध हो जाएगी. साथ ही, ज़रूरत पड़ने पर YTGameWrapper को कॉल किया जा सकेगा.
  3. पुष्टि करें कि आपका Godot प्रोजेक्ट प्लैटफ़ॉर्म, Web के लिए एक्सपोर्ट करने के लिए सेट है. यह सेटिंग, एक्सपोर्ट टैब में मिलती है. इसके लिए, Project के बाद Export... को चुनें.
  4. एक्सपोर्ट पैनल में, Add... को चुनकर नया प्रीसेट जोड़ें. इसके बाद, 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 पैनल में अपना वेब प्रोजेक्ट एक्सपोर्ट करने के लिए, Export Project... को चुनें और बिल्ड की जगह चुनें.
  2. प्रोजेक्ट बन जाने के बाद, बिल्ड फ़ोल्डर पर जाएं और YTGameSDK.js फ़ाइल को इस फ़ोल्डर में कॉपी करें. साथ ही, बिल्ड सबमिट करते समय, इसे शामिल करना न भूलें.
  3. पुष्टि करें कि आपने अपने प्रोजेक्ट के लिए, तकनीकी ज़रूरी शर्तों का पालन किया है. साथ ही, Playables के टेस्ट सुइट का इस्तेमाल करना न भूलें.

उदाहरण

इस सेक्शन में, .gd रैपर का इस्तेमाल करने के कुछ उदाहरण दिए गए हैं. हालांकि, इसमें उपलब्ध एपीआई की पूरी सूची नहीं दी गई है. उपलब्ध एपीआई की पूरी सूची के लिए, YouTube Playables SDK देखें. यह भी माना जाता है कि आपका प्रोजेक्ट, इस्तेमाल सेक्शन में बताए गए तरीके से सेट अप किया गया है.

sendScore

इस उदाहरण में, .gd में sendScore(int points) को लागू करने का तरीका बताया गया है:

var current_game_score: int = 0

...

func add_score(scoreAdded: int):
    current_game_score += scoreAdded
    YTGameWrapper.send_score(current_game_score)

onPause

इस उदाहरण में बताया गया है कि ज़रूरत पड़ने पर अपने इंजन को रोकने के लिए, कोई गेम YT Playables से आने वाले Pause इवेंट को कैसे सुन सकता है:

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 फ़ाइलें जनरेट करें, जिन्हें ज़रूरत के हिसाब से लोड किया जा सके.

YT Playables API का पूरा रेफ़रंस देखें.