Экспериментальные YouTube Playables Godot Wrapper

С помощью этой оболочки вы можете получить доступ к YouTube Playables SDK в Godot с предоставленным .gd . Оболочка имеет .js SDK-коннектор и .gd файл, которые помогут ускорить разработку. Также доступен пример проекта, который показывает, как вы можете использовать эти скрипты в своем проекте.

ZIP-пакеты Godot можно загрузить из нашего репозитория образцов Playables.

Использование

  1. Извлеките 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 .
  2. Добавьте новый Autoload Global для скрипта YTGameWrapper.gd , который был распакован. Это можно сделать в Project -> Project Settings... -> Globals . Выберите файл YTGameWrapper.gd в поле ввода Path и добавьте YTGameWrapper в поле ввода Node Name . Наконец, выберите + Add .
    • Это сделает скрипт глобально доступным в вашем коде, что позволит вам вызывать YTGameWrapper по мере необходимости.
  3. Убедитесь, что платформа вашего проекта Godot настроена на экспорт для Web . Эта настройка находится на вкладке Export, выберите Project , затем Export...
  4. На панели 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>
  1. Экспортируйте свой веб-проект на панели Export , выбрав Export Project... и указав место сборки.
  2. После сборки проекта перейдите в папку сборки и скопируйте в нее файл YTGameSDK.js Обязательно включите его при отправке сборки.
  3. Убедитесь, что вы соблюдаете технические требования к своему проекту, и обязательно используйте тестовый набор 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 .