С помощью этой оболочки вы можете получить доступ к YouTube Playables SDK в Godot с предоставленным .gd
. Оболочка имеет .js SDK-коннектор и .gd
файл, которые помогут ускорить разработку. Также доступен пример проекта, который показывает, как вы можете использовать эти скрипты в своем проекте.
ZIP-пакеты Godot можно загрузить из нашего репозитория образцов Playables.
Использование
- Извлеките
GoogleYTGameWrapper-godot.zip
в папку вашего проекта, где вы хотите разместить эти скрипты. Этот zip содержит два файла:-
YTGameWrapper.gd
: используется как мост к YT Playables Javascript SDK, позволяя вызывать SDK из игры. -
YTGameSDK.js
: используется для подключения к YT Playables SDK. Для этого примера мы поместим этот файл в корень вашего проекта. Вы можете изменить это, но для этого потребуется обновить местоположение Head Include. - Также доступна полная версия примера проекта для загрузки из нашего репозитория примеров Playables. Для этой версии используйте zip-архив с именем
GoogleYTGameWrapper-godot-with-sample.zip
.
-
- Добавьте новый Autoload Global для скрипта
YTGameWrapper.gd
, который был распакован. Это можно сделать вProject
->Project Settings...
->Globals
. Выберите файлYTGameWrapper.gd
в поле вводаPath
и добавьтеYTGameWrapper
в поле вводаNode Name
. Наконец, выберите+ Add
.- Это сделает скрипт глобально доступным в вашем коде, что позволит вам вызывать
YTGameWrapper
по мере необходимости.
- Это сделает скрипт глобально доступным в вашем коде, что позволит вам вызывать
- Убедитесь, что платформа вашего проекта Godot настроена на экспорт для
Web
. Эта настройка находится на вкладке Export, выберитеProject
, затемExport...
- На панели Export добавьте новый Preset, выбрав
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
В этом примере показана реализация sendScore(int points)
в .gd
:
var current_game_score: int = 0
...
func add_score(scoreAdded: int):
current_game_score += scoreAdded
YTGameWrapper.send_score(current_game_score)
onPause
Это пример того, как игра может прослушивать события Pause
, поступающие от YT Playables, чтобы при необходимости приостанавливать работу своего движка:
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
, указывающий, что это подходящее время для показа interstitial Ad, если он доступен. Для достижения наилучших результатов делайте этот вызов во время перерыва в игре, например, в конце уровня.
func set_game_over(didWin: bool):
YTGameWrapper.request_interstitial_ad()
# logic for game over
Как разбить ресурсы в проекте Godot (ленивая загрузка)
Одной из основных проблем, на которую обратили внимание разработчики при использовании Godot, является соблюдение требований к размеру отдельных файлов и требований к общему размеру пакета .
Ленивая загрузка ресурсов — это отличная оптимизация, которую вы можете сделать для своего проекта, поскольку вы можете загружать ресурсы, уровни и данные по мере необходимости. Наша команда по сертификации может отменить общие ограничения на размер файла, если это будет сделано правильно, поскольку ваша полная игра не будет загружена заранее, а по мере того, как пользователь будет перемещаться по вашему продукту.
Чтобы помочь с правильной загрузкой, Godot предлагает Exporting packs, patches, and mods ( ссылка на английском языке ). Мы предлагаем генерировать файлы .pck
, которые загружаются по мере необходимости.
См. полную справку по API YT Playables .