Mit diesem Wrapper kannst du in Godot über die bereitgestellte .gd
auf das YouTube Playables SDK zugreifen. Der Wrapper enthält einen .js-SDK-Connector und eine .gd
-Datei, um die Entwicklung zu beschleunigen. Es gibt auch ein Beispielprojekt, das zeigt, wie Sie diese Scripts in Ihrem Projekt verwenden können.
Godot-ZIP-Pakete können aus unserem Beispiel-Repository für Playables heruntergeladen werden.
Nutzung
- Entpacken Sie
GoogleYTGameWrapper-godot.zip
in Ihrem Projektordner, in dem sich diese Scripts befinden sollen. Diese ZIP-Datei enthält zwei Dateien:YTGameWrapper.gd
: Wird als Brücke zum YT Playables JavaScript SDK verwendet, um das SDK im Spiel aufzurufen.YTGameSDK.js
: Wird verwendet, um eine Verbindung zum YT Playables SDK herzustellen. In diesem Beispiel legen wir diese Datei im Stammverzeichnis des Projekts ab. Sie können das ändern, aber dazu muss der Speicherort des Head-Includes aktualisiert werden.- In unserem Beispiel-Repository für Playables können Sie auch eine vollständige Projektversion herunterladen. Verwenden Sie für diese Version die ZIP-Datei mit dem Namen
GoogleYTGameWrapper-godot-with-sample.zip
.
- Fügen Sie ein neues Autoload-Global für das entpackte
YTGameWrapper.gd
-Script hinzu. Das kann unterProject
->Project Settings...
->Globals
festgelegt werden. Wählen Sie im EingabefeldPath
die DateiYTGameWrapper.gd
aus und geben Sie im EingabefeldNode Name
YTGameWrapper
ein. Wählen Sie abschließend+ Add
aus.- Dadurch wird das Script in Ihrem Code global verfügbar gemacht und Sie können
YTGameWrapper
bei Bedarf aufrufen.
- Dadurch wird das Script in Ihrem Code global verfügbar gemacht und Sie können
- Prüfen Sie, ob die Plattform Ihres Godot-Projekts für den Export für
Web
eingerichtet ist. Diese Einstellung finden Sie auf dem Tab „Exportieren“. Wählen SieProject
und dannExport...
aus. - Fügen Sie im Bereich „Exportieren“ eine neue Voreinstellung hinzu. Wählen Sie dazu
Add...
und dannWeb
aus. Fügen Sie diesen Code in das Feld für dieHead Include
-Einstellungen ein.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
- Exportieren Sie Ihr Webprojekt im Bereich
Export
, indem SieExport Project...
und dann den Build-Speicherort auswählen. - Nachdem Ihr Projekt erstellt wurde, rufen Sie den Build-Ordner auf und kopieren Sie die Datei
YTGameSDK.js
in diesen Ordner. Achten Sie darauf, sie beim Einreichen des Builds anzugeben. - Achte darauf, dass du die technischen Anforderungen für dein Projekt erfüllst, und verwende die Playables-Testsuite.
Beispiele
Dieser Abschnitt enthält einige Beispiele für die Verwendung des .gd
-Wrappers. Es handelt sich nicht um eine vollständige Liste der verfügbaren APIs. Eine vollständige Liste der verfügbaren APIs findest du im YouTube Playables SDK. Außerdem wird davon ausgegangen, dass Ihr Projekt wie im Abschnitt „Nutzung“ beschrieben eingerichtet ist.
sendScore
In diesem Beispiel wird eine Implementierung von sendScore(int points)
in .gd
gezeigt:
var current_game_score: int = 0
...
func add_score(scoreAdded: int):
current_game_score += scoreAdded
YTGameWrapper.send_score(current_game_score)
onPause
Hier siehst du ein Beispiel dafür, wie ein Spiel Pause
-Ereignisse von YT-Playables verarbeiten kann, um bei Bedarf die Engine zu pausieren:
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
Hier siehst du ein Beispiel für die Verwendung von saveData
, das an das YT Playables SDK gesendet wird:
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
Hier siehst du ein Beispiel für die Verwendung von loadData
, das an das YT Playables SDK gesendet wird:
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
Hier sehen Sie ein Beispiel für die Verwendung von requestInterstitialAd
. Es wird angezeigt, dass es ein guter Zeitpunkt ist, eine Interstitial-Anzeige einzublenden, sofern verfügbar. Die besten Ergebnisse erzielst du, wenn du diesen Aufruf während einer Spielpause machst, z. B. am Ende eines Levels.
func set_game_over(didWin: bool):
YTGameWrapper.request_interstitial_ad()
# logic for game over
Assets in Ihrem Godot-Projekt aufteilen (Lazy Loading)
Eines der Hauptprobleme, das Entwickler bei der Verwendung von Godot hervorgehoben haben, ist die Einhaltung der Anforderungen an die Dateigröße und die Gesamtgröße des Bundles.
Das Lazy-Loading von Assets ist eine gute Optimierungsmöglichkeit für Ihr Projekt, da Sie Assets, Ebenen und Daten bei Bedarf laden können. Unser Zertifizierungsteam kann die Einschränkungen bei der Gesamtdateigröße aufheben, wenn dies richtig gemacht wird, da Ihr vollständiges Spiel nicht vorab geladen wird, sondern erst, wenn ein Nutzer Ihr Produkt verwendet.
Zum ordnungsgemäßen Laden bietet Godot die Möglichkeit, Pakete, Patches und Mods zu exportieren (Link auf Englisch). Wir empfehlen, .pck
-Dateien zu generieren, die nach Bedarf geladen werden.