Com esse wrapper, é possível acessar o SDK do YouTube Playables no Godot
com o .gd
fornecido. O wrapper tem um conector do SDK .js e um arquivo .gd
para
acelerar o desenvolvimento. Também há um projeto de exemplo disponível que
mostra como usar esses scripts no seu projeto.
Os pacotes zip do Godot podem ser baixados no repositório de amostra do Playables.
Uso
- Extraia
GoogleYTGameWrapper-godot.zip
na pasta do projeto, onde você quer que esses scripts fiquem. Este arquivo ZIP contém dois arquivos:YTGameWrapper.gd
: usado como uma ponte para o SDK do JavaScript do YT Playables, permitindo um caminho para chamar o SDK no jogo.YTGameSDK.js
: usado para se conectar ao SDK do YT Playables. Neste exemplo, vamos colocar esse arquivo na raiz do projeto. É possível mudar isso, mas é necessário atualizar o local do cabeçalho de inclusão.- Também há uma versão de exemplo completa do projeto disponível para download no
repositório de exemplo da Playables. Para esta versão, use o arquivo zip chamado
GoogleYTGameWrapper-godot-with-sample.zip
.
- Adicionamos um novo script Autoload Global para
YTGameWrapper.gd
que foi descompactado. Isso pode ser definido emProject
->Project Settings...
->Globals
. Selecione o arquivoYTGameWrapper.gd
na caixa de entradaPath
e adicioneYTGameWrapper
na caixa de entradaNode Name
. Por fim, selecione+ Add
.- Isso vai disponibilizar o script globalmente no código, permitindo que você
chame
YTGameWrapper
conforme necessário.
- Isso vai disponibilizar o script globalmente no código, permitindo que você
chame
- Verifique se a plataforma do projeto Godot está configurada para exportar para
Web
. Essa configuração está na guia "Exportar". SelecioneProject
e depoisExport...
. - No painel "Exportar", adicione uma nova predefinição selecionando
Add...
e, em seguida,Web
. Depois de criado, adicione esse código à caixa de configuraçãoHead Include
.
<script src="https://www.youtube.com/game_api/v1">// Load YT Game API code</script>
<script src="YTGameSDK.js"></script>
- Exporte seu projeto da Web no painel
Export
selecionandoExport Project...
e o local de build. - Depois que o projeto for criado, navegue até a pasta de build e copie o
arquivo
YTGameSDK.js
para essa pasta. Não se esqueça de incluí-lo ao enviar o build. - Verifique se você está seguindo os requisitos técnicos do projeto e use o pacote de testes do Playables.
Exemplos
Esta seção tem alguns exemplos de como usar o wrapper .gd
, não é a
lista completa de APIs disponíveis. Para conferir a lista completa de APIs disponíveis, consulte o
SDK Playables do YouTube. Isso também pressupõe que seu projeto esteja configurado
conforme descrito na seção "Uso".
sendScore
Este exemplo mostra uma implementação de sendScore(int points)
em .gd
:
var current_game_score: int = 0
...
func add_score(scoreAdded: int):
current_game_score += scoreAdded
YTGameWrapper.send_score(current_game_score)
onPause
Este é um exemplo de como um jogo pode detectar eventos Pause
provenientes de
jogos do YouTube para pausar o mecanismo quando necessário:
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 é um exemplo de como usar saveData
e enviá-lo ao SDK do 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 é um exemplo de como usar loadData
e enviá-lo ao SDK do 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 é um exemplo de como usar requestInterstitialAd
, indicando que é um
bom momento para mostrar um anúncio intersticial, se disponível. Para melhores resultados, faça
essa chamada durante uma pausa na jogabilidade, por exemplo, no final de um nível.
func set_game_over(didWin: bool):
YTGameWrapper.request_interstitial_ad()
# logic for game over
Como dividir recursos no seu projeto Godot (carregamento lento)
Um dos principais problemas que os desenvolvedores destacaram ao usar o Godot é ficar abaixo dos requisitos individuais de tamanho de arquivo e do total de tamanho do pacote.
O carregamento lento de recursos é uma ótima otimização que você pode fazer para seu projeto, já que é possível carregar recursos, níveis e dados conforme necessário. Nossa equipe de certificação pode dispensar as restrições de tamanho de arquivo geral se isso for feito corretamente, já que o jogo completo não será carregado de antemão, mas quando um usuário navegar pelo produto.
Para ajudar no carregamento adequado, o Godot oferece pacotes de exportação, patches e mods
(link em inglês). Sugerimos gerar arquivos .pck
que sejam carregados
conforme necessário.
Consulte a referência completa da API YT Playables.