このラッパーを使用すると、提供された .gd
を使用して Godot で YouTube Playables SDK にアクセスできます。ラッパーには、開発を高速化するための .js SDK コネクタと .gd
ファイルがあります。また、これらのスクリプトをプロジェクトで使用する方法を示すサンプル プロジェクトも用意されています。
Godot ZIP パッケージは、Playables のサンプル リポジトリからダウンロードできます。
用途
- これらのスクリプトを配置するプロジェクト フォルダに
GoogleYTGameWrapper-godot.zip
を展開します。この ZIP には次の 2 つのファイルが含まれています。YTGameWrapper.gd
: YT Playables Javascript SDK へのブリッジとして使用され、ゲーム内から SDK を呼び出すパスを可能にします。YTGameSDK.js
: YT Playables SDK への接続に使用されます。この例では、このファイルをプロジェクトのルートに配置します。この設定は変更できますが、ヘッド インクルードの場所を更新する必要があります。- ゲームルーム サンプル リポジトリから、プロジェクトの完全なサンプル バージョンをダウンロードすることもできます。このバージョンでは、
GoogleYTGameWrapper-godot-with-sample.zip
という名前の ZIP を使用します。
- 解凍した
YTGameWrapper.gd
スクリプト用に新しい Autoload Global を追加しました。これは、Project
->Project Settings...
->Globals
で設定できます。Path
入力ボックスでYTGameWrapper.gd
ファイルを選択し、Node Name
入力ボックスにYTGameWrapper
を追加します。最後に、+ Add
を選択します。- これにより、コードでスクリプトをグローバルに使用できるようになり、必要に応じて
YTGameWrapper
を呼び出すことができます。
- これにより、コードでスクリプトをグローバルに使用できるようになり、必要に応じて
- Godot プロジェクトのプラットフォームが
Web
用にエクスポートするように設定されていることを確認します。この設定は [エクスポート] タブにあります。[Project
]、[Export...
] の順に選択します。 - [エクスポート] パネルで、
Add...
を選択してWeb
を選択して、新しいプリセットを追加します。作成したら、このコードをHead Include
の設定ボックスに追加します。
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
Export
パネルでExport Project...
を選択し、ビルド場所を選択して、ウェブ プロジェクトをエクスポートします。- プロジェクトがビルドされたら、ビルドフォルダに移動して
YTGameSDK.js
ファイルをこのフォルダにコピーし、ビルドを送信するときに必ず含めます。 - プロジェクトの技術要件に準拠していることを確認し、必ず Playables のテストスイートを使用してください。
例
このセクションでは、.gd
ラッパーの使用方法の例を示します。これは、使用可能な API の完全なリストではありません。使用可能な API の一覧については、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 の使用時にデベロッパーが指摘している主な問題の 1 つは、個々のファイルサイズ要件と合計バンドルサイズ要件を満たすことです。
アセットの遅延読み込みは、アセット、レベル、データを必要に応じて読み込むことができるため、プロジェクトを最適化するための優れた方法です。ゲーム全体が最初から読み込まれるのではなく、ユーザーがアプリを操作する際に読み込まれるため、Google の認定チームは、適切に処理されている場合は、全体的なファイルサイズの制限を免除する場合があります。
適切な読み込みをサポートするため、Godot ではエクスポート パック、パッチ、MOD が用意されています(英語のリンク)。必要に応じて読み込まれる .pck
ファイルを生成することをおすすめします。
YT Playables API リファレンスの全文をご覧ください。