Deneysel YouTube Hazır Oyunlar Godot Sarmalayıcısı

Bu sarmalayıcıyla, sağlanan .gd ile Godot'ta YouTube Playables SDK'sına erişebilirsiniz. Sarmalayıcıda, geliştirme sürecinizi hızlandırmaya yardımcı olacak bir .js SDK bağlayıcısı ve bir .gd dosyası bulunur. Ayrıca, bu komut dosyalarını projenizde nasıl kullanabileceğinizi gösteren bir örnek proje de mevcuttur.

Godot zip paketleri, Hazır Oyunlar örnek havuzumuzdan indirilebilir.

Kullanım

  1. GoogleYTGameWrapper-godot.zip dosyasını, bu komut dosyalarının bulunduğu proje klasörünüze çıkarın. Bu zip dosyası iki dosya içerir:
    • YTGameWrapper.gd: YT Playables JavaScript SDK'sına köprü olarak kullanılır ve SDK'nın oyun içinden çağrılmasına olanak tanır.
    • YTGameSDK.js: YT Playables SDK'sına bağlanmak için kullanılır. Bu örnekte, dosyayı projenizin kök dizinine yerleştireceğiz. Bunu değiştirebilirsiniz ancak Baş Dahil Et konumunuzu güncellemeniz gerekir.
    • Hazır Oyunlar örnek havuzumuzdan indirebileceğiniz tam proje örneği de mevcuttur. Bu sürüm için GoogleYTGameWrapper-godot-with-sample.zip adlı zip dosyasını kullanın.
  2. Sıkıştırılmış YTGameWrapper.gd komut dosyası için yeni bir Otomatik Yükleme Global ekleyin. Bu ayarı Project -> Project Settings... -> Globals bölümünden yapabilirsiniz. Path giriş kutusunda YTGameWrapper.gd dosyasını seçin ve Node Name giriş kutusuna YTGameWrapper ekleyin. Son olarak + Add simgesini seçin.
    • Bu işlem, komut dosyasını kodunuzda dünya genelinde kullanılabilir hale getirir ve gerektiğinde YTGameWrapper işlevini çağırmanıza olanak tanır.
  3. Godot projenizin Platform'unun Web için dışa aktarma işlemine ayarlandığını doğrulayın. Bu ayar, Dışa Aktarma sekmesinde bulunur. Project'yi, ardından Export...'yi seçin.
  4. Dışa aktarma panelinde Add...'yi ve ardından Web'yi seçerek yeni bir hazır ayar ekleyin. Oluşturduğunuz bu kodu Head Include ayar kutusuna ekleyin.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
  1. Export panelinde Export Project...'u ve derleme konumunu seçerek web projenizi dışa aktarın.
  2. Projeniz oluşturulduktan sonra derleme klasörüne gidin ve YTGameSDK.js dosyasını bu klasöre kopyalayın. Derlemenizi gönderirken bu dosyayı eklediğinizden emin olun.
  3. Projeniz için teknik şartlara uyduğunuzu doğrulayın ve Playables test paketini kullandığınızdan emin olun.

Örnekler

Bu bölümde, .gd sarmalayıcısının nasıl kullanılacağına dair bazı örnekler verilmiştir. Mevcut API'lerin tam listesi bu bölümde yer almamaktadır. Kullanılabilir API'lerin tam listesi için YouTube Playables SDK'sına bakın. Ayrıca, projenizin Kullanım bölümünde açıklandığı şekilde ayarlandığı varsayılır.

sendScore

Bu örnekte, .gd içinde sendScore(int points)'ün uygulanması gösterilmektedir:

var current_game_score: int = 0

...

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

onPause

Aşağıda, bir oyunun gerektiğinde motorunu duraklatmak için YT Playables'den gelen Pause etkinliklerini nasıl dinleyebileceğine dair bir örnek verilmiştir:

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

Aşağıda, saveData'ün YT Playables SDK'sına gönderilerek nasıl kullanılacağına dair bir örnek verilmiştir:

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

Aşağıda, loadData'ün YT Playables SDK'sına gönderilerek nasıl kullanılacağına dair bir örnek verilmiştir:

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

Bu, requestInterstitialAd değerinin nasıl kullanılacağını gösteren bir örnektir. Mevcutsa geçiş reklamı göstermenin iyi bir zaman olduğunu belirtir. En iyi sonuçlar için bu aramayı oyunda ara verdiğiniz sırada (ör. bir seviyenin sonunda) yapın.

func set_game_over(didWin: bool):
    YTGameWrapper.request_interstitial_ad()

    # logic for game over

Godot projenizdeki öğeleri bölme (Geçici Yükleme)

Geliştiricilerin Godot'u kullanırken vurguladıkları en önemli sorunlardan biri, tek tek dosya boyutu ve toplam paket boyutu koşullarına uymaktır.

Öğeleri, seviyeleri ve verileri gerektiğinde yükleyebildiğiniz için öğelerin gecikmeli yüklenmesi, projeniz için yapabileceğiniz mükemmel bir optimizasyondur. Oyununuzun tamamı önceden yüklenmediğinden, kullanıcı ürününüzde gezinirken yükleneceğinden, bu işlem doğru şekilde yapılırsa sertifika ekibimiz genel dosya boyutu kısıtlamalarını kaldırabilir.

Godot, paketleri, yamaları ve modları dışa aktarma (İngilizce bağlantı) özelliğiyle doğru yüklemeye yardımcı olur. Gerektiğinde yüklenen .pck dosyaları oluşturmanızı öneririz.

YT Playables API referansının tamamına bakın.