Con este wrapper, puedes acceder al SDK de YouTube Playables en Godot
con el .gd
proporcionado. El wrapper tiene un conector de SDK .js y un archivo .gd
para ayudarte a acelerar el desarrollo. También hay un proyecto de muestra disponible que muestra cómo puedes usar estas secuencias de comandos en tu proyecto.
Los paquetes ZIP de Godot se pueden descargar desde nuestro repositorio de muestras de Playables.
Uso
- Extrae
GoogleYTGameWrapper-godot.zip
en la carpeta de tu proyecto, donde deseas que residan estas secuencias de comandos. Este archivo ZIP contiene dos archivos:YTGameWrapper.gd
: Se usa como puente al SDK de JavaScript de YT Playables, lo que permite una ruta de acceso para llamar al SDK desde el juego.YTGameSDK.js
: Se usa para conectarse al SDK de YT Playables. En este ejemplo, colocaremos este archivo en la raíz de tu proyecto. Puedes cambiar esto, pero debes actualizar la ubicación de Head Include.- También hay una versión de muestra completa del proyecto disponible para descargar desde nuestro repositorio de muestra de Playables. Para esta versión, usa el archivo ZIP llamado
GoogleYTGameWrapper-godot-with-sample.zip
.
- Se agregó un nuevo elemento Autoload Global para la secuencia de comandos
YTGameWrapper.gd
que se descomprimió. Esto se puede configurar enProject
->Project Settings...
->Globals
. Selecciona el archivoYTGameWrapper.gd
en el cuadro de entradaPath
y agregaYTGameWrapper
en el cuadro de entradaNode Name
. Por último, selecciona+ Add
.- Esto hará que la secuencia de comandos esté disponible de forma global en tu código, lo que te permitirá llamar a
YTGameWrapper
según sea necesario.
- Esto hará que la secuencia de comandos esté disponible de forma global en tu código, lo que te permitirá llamar a
- Verifica que la plataforma de tu proyecto de Godot esté configurada para exportar a
Web
. Este parámetro de configuración se encuentra en la pestaña Exportar. SeleccionaProject
y, luego,Export...
. - En el panel Exportar, agrega un nuevo parámetro de configuración predeterminado seleccionando
Add...
y, luego,Web
. Una vez creado, agrega este código al cuadro de configuraciónHead Include
.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
- Para exportar tu proyecto web en el panel
Export
, seleccionaExport Project...
y elige la ubicación de compilación. - Una vez que se compile tu proyecto, navega a la carpeta de compilación y copia el archivo
YTGameSDK.js
en esta carpeta. Asegúrate de incluirlo cuando envíes la compilación. - Verifica que cumples con los requisitos técnicos de tu proyecto y asegúrate de usar el paquete de pruebas de Playables.
Ejemplos
En esta sección, se incluyen algunos ejemplos de cómo usar el wrapper de .gd
, pero no es la lista completa de las APIs disponibles. Para obtener la lista completa de las APIs disponibles, consulta el
SDK de YouTube Playables. Esto también supone que tu proyecto está configurado como se describe en la sección Uso.
sendScore
En este ejemplo, se muestra una implementación de sendScore(int points)
en .gd
:
var current_game_score: int = 0
...
func add_score(scoreAdded: int):
current_game_score += scoreAdded
YTGameWrapper.send_score(current_game_score)
onPause
Este es un ejemplo de cómo un juego puede escuchar eventos Pause
provenientes de YT Playables para pausar su motor cuando sea necesario:
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
Este es un ejemplo de cómo usar saveData
y enviarlo al SDK de YT Playables:
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
Este es un ejemplo de cómo usar loadData
y enviarlo al SDK de YT Playables:
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
Este es un ejemplo de cómo usar requestInterstitialAd
, que indica que es un buen momento para mostrar un anuncio intersticial, si está disponible. Para obtener los mejores resultados, realiza esta llamada durante una pausa del juego, por ejemplo, al final de un nivel.
func set_game_over(didWin: bool):
YTGameWrapper.request_interstitial_ad()
# logic for game over
Cómo dividir recursos en tu proyecto de Godot (carga diferida)
Uno de los principales problemas que los desarrolladores destacaron cuando usaban Godot es mantenerse dentro de los requisitos individuales de tamaño de archivo y los requisitos totales de tamaño del paquete.
La carga diferida de recursos es una gran optimización que puedes hacer para tu proyecto, ya que puedes cargar recursos, niveles y datos a medida que se necesitan. Nuestro equipo de certificación puede renunciar a las restricciones generales de tamaño de archivo si se hace de forma correcta, ya que el juego completo no se cargará de antemano, sino a medida que un usuario navegue por tu producto.
Para facilitar la carga correcta, Godot ofrece Exporting packs, patches, and mods (vínculo en inglés). Te sugerimos que generes archivos .pck
que se carguen según sea necesario.
Consulta la referencia completa de la API de YT Playables.