Wrapper Godot Ruang Game YouTube Eksperimental

Dengan wrapper ini, Anda dapat mengakses YouTube Playables SDK di Godot dengan .gd yang disediakan. Wrapper memiliki konektor SDK .js dan file .gd untuk membantu mempercepat pengembangan Anda. Ada juga project contoh yang tersedia yang menunjukkan cara menggunakan skrip ini dalam project Anda.

Paket zip Godot dapat didownload dari repositori contoh Playables kami.

Penggunaan

  1. Ekstrak GoogleYTGameWrapper-godot.zip di folder project tempat Anda ingin menempatkan skrip ini. File ZIP ini berisi dua file:
    • YTGameWrapper.gd: digunakan sebagai jembatan ke YT Playables Javascript SDK yang memungkinkan jalur untuk memanggil SDK dari dalam game.
    • YTGameSDK.js: digunakan untuk terhubung ke YT Playables SDK. Untuk contoh ini, kita akan menempatkan file ini di root project Anda. Anda dapat mengubahnya, tetapi Anda harus memperbarui lokasi Head Include.
    • Ada juga versi contoh project lengkap yang tersedia untuk didownload dari repositori contoh Playables kami. Untuk versi ini, gunakan file zip bernama GoogleYTGameWrapper-godot-with-sample.zip.
  2. Tambahkan Autoload Global baru untuk skrip YTGameWrapper.gd yang diekstrak. Hal ini dapat ditetapkan di bagian Project -> Project Settings... -> Globals. Pilih file YTGameWrapper.gd di kotak input Path dan tambahkan YTGameWrapper untuk kotak input Node Name. Terakhir, pilih + Add.
    • Tindakan ini akan membuat skrip tersedia secara global dalam kode Anda, sehingga Anda dapat memanggil YTGameWrapper sesuai kebutuhan.
  3. Pastikan Platform project Godot Anda disetel untuk diekspor ke Web. Setelan ini terdapat di tab Ekspor, pilih Project, lalu Export....
  4. Di panel Ekspor, tambahkan Preset baru dengan memilih Add..., lalu pilih Web. Setelah dibuat, tambahkan kode ini ke kotak setelan Head Include.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
  1. Ekspor project web Anda di panel Export dengan memilih Export Project... dan memilih lokasi build.
  2. Setelah project Anda di-build, buka folder build dan salin file YTGameSDK.js ke folder ini dan pastikan untuk menyertakannya saat mengirimkan build.
  3. Pastikan Anda mengikuti persyaratan teknis untuk project dan pastikan untuk menggunakan suite pengujian Playables.

Contoh

Bagian ini memiliki beberapa contoh cara menggunakan wrapper .gd, bukan daftar lengkap API yang tersedia. Untuk daftar lengkap API yang tersedia, lihat YouTube Playables SDK. Hal ini juga mengasumsikan bahwa project Anda disiapkan seperti yang dijelaskan di bagian Penggunaan.

sendScore

Contoh ini menunjukkan implementasi sendScore(int points) di .gd:

var current_game_score: int = 0

...

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

onPause

Berikut adalah contoh cara game memproses peristiwa Pause yang berasal dari YT Playables, untuk menjeda mesinnya jika diperlukan:

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

Berikut adalah contoh cara menggunakan saveData, yang mengirimkannya ke 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

Berikut adalah contoh cara menggunakan loadData, yang mengirimkannya ke 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

Ini adalah contoh cara menggunakan requestInterstitialAd, yang menunjukkan bahwa ini adalah waktu yang tepat untuk menampilkan Iklan interstisial, jika tersedia. Untuk hasil terbaik, lakukan panggilan ini selama jeda dalam gameplay, misalnya, di akhir level.

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

    # logic for game over

Cara membagi aset dalam project Godot Anda (Pemuatan Lambat)

Salah satu masalah utama yang disoroti developer saat menggunakan Godot adalah tetap berada di bawah persyaratan ukuran file individual dan persyaratan ukuran paket total.

Pemuatan lambat aset adalah pengoptimalan yang bagus yang dapat Anda lakukan untuk project karena Anda dapat memuat aset, level, dan data sesuai kebutuhan. Tim sertifikasi kami dapat menghapus batasan ukuran file secara keseluruhan jika hal ini dilakukan dengan benar, karena game lengkap Anda tidak akan dimuat di awal, tetapi saat pengguna menjelajahi produk Anda.

Untuk membantu pemuatan yang tepat, Godot menawarkan Ekspor paket, patch, dan mod (link bahasa Inggris). Sebaiknya buat file .pck yang dimuat sesuai kebutuhan.

Lihat referensi YT Playables API selengkapnya.