Wrapper Godot sperimentale per Sala giochi di YouTube

Con questo wrapper puoi accedere all'SDK YouTube Playables in Godot con il .gd fornito. Il wrapper ha un connettore SDK .js e un file .gd per contribuire ad accelerare lo sviluppo. È inoltre disponibile un progetto di esempio che mostra come utilizzare questi script nel progetto.

I pacchetti ZIP di Godot possono essere scaricati dal nostro repository di esempi di Sala giochi.

Utilizzo

  1. Estrai GoogleYTGameWrapper-godot.zip nella cartella del progetto in cui vuoi che vengano memorizzati questi script. Questo file ZIP contiene due file:
    • YTGameWrapper.gd: utilizzato come ponte per l'SDK JavaScript di YT Playables che consente di chiamare l'SDK in-game.
    • YTGameSDK.js: utilizzato per connettersi all'SDK YT Playables. Per questo esempio, lo inseriremo nella directory principale del progetto. Puoi modificarlo, ma devi aggiornare la posizione dell'inclusione principale.
    • È inoltre disponibile una versione di esempio completa del progetto scaricabile dal nostro repository di esempi di Playables. Per questa versione, utilizza il file ZIP denominato GoogleYTGameWrapper-godot-with-sample.zip.
  2. Aggiungi un nuovo parametro globale di caricamento automatico per lo script YTGameWrapper.gd decompresso. Questa opzione può essere impostata in Project -> Project Settings... -> Globals. Seleziona il file YTGameWrapper.gd nella casella di immissione Path e aggiungiYTGameWrapper nella casella di immissione Node Name. Infine, seleziona + Add.
    • In questo modo, lo script sarà disponibile a livello globale nel codice, consentendoti di chiamare YTGameWrapper in base alle esigenze.
  3. Verifica che la piattaforma del progetto Godot sia impostata per l'esportazione per Web. Questa impostazione si trova nella scheda Esporta, seleziona Project e poi Export....
  4. Nel riquadro Esporta, aggiungi un nuovo preset selezionando Add... e poi Web. Una volta creato, aggiungi questo codice nella casella delle impostazioni di Head Include.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
  1. Esporta il progetto web nel riquadro Export selezionando Export Project... e la posizione di compilazione.
  2. Una volta compilato il progetto, vai alla cartella di compilazione e copia il file YTGameSDK.js in questa cartella, assicurandoti di includerlo quando invii la compilazione.
  3. Verifica di rispettare i requisiti tecnici per il tuo progetto e assicurati di utilizzare la suite di test Playables.

Esempi

Questa sezione contiene alcuni esempi di come utilizzare il wrapper .gd, ma non è l'elenco completo delle API disponibili. Per l'elenco completo delle API disponibili, consulta YouTube Playables SDK. Inoltre, si presume che il progetto sia configurato come descritto nella sezione Utilizzo.

sendScore

Questo esempio mostra un'implementazione di sendScore(int points) in .gd:

var current_game_score: int = 0

...

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

onPause

Questo è un esempio di come un gioco può ascoltare gli eventi Pause provenienti da YT Playables per mettere in pausa il motore in caso di necessità:

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

Questo è un esempio di come utilizzare saveData, inviandolo all'SDK 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

Questo è un esempio di come utilizzare loadData, inviandolo all'SDK 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

Questo è un esempio di come utilizzare requestInterstitialAd, che indica che è un buon momento per mostrare un annuncio interstitial, se disponibile. Per risultati ottimali, effettua questa chiamata durante una pausa nel gameplay, ad esempio alla fine di un livello.

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

    # logic for game over

Come suddividere gli asset nel progetto Godot (caricamento lento)

Uno dei problemi principali che gli sviluppatori hanno evidenziato durante l'utilizzo di Godot è rispettare i requisiti relativi alle singole dimensioni dei file e alle dimensioni totali del bundle.

Il caricamento lento delle risorse è un'ottima ottimizzazione che puoi apportare al tuo progetto, in quanto consente di caricare risorse, livelli e dati in base alle esigenze. Il nostro team di certificazione potrebbe rinunciare alle limitazioni generali relative alle dimensioni dei file se tutto viene eseguito correttamente, poiché il gioco completo non verrà caricato in anteprima, ma man mano che l'utente naviga nel tuo prodotto.

Per facilitare il caricamento corretto, Godot offre l'esportazione di pacchetti, patch e mod (link in inglese). Ti consigliamo di generare file .pck che vengono caricati in base alle esigenze.

Consulta la documentazione di riferimento completa dell'API YT Playables.