August 25, 2024

Как игру на Godot выложить в RuStore и подключить монетизацию

В этой статье разберемся с тем, как добавить игру на Godot в RuStore и прикрутить рекламную монетизацию от Яндекса.

Настройка Android-эскпорта

Установка OpenJDK

Первое что нужно сделать, скачать Java JDK - https://adoptium.net/temurin/releases/?variant=openjdk17

Установка Android SDK

Следующим шагом нужно установить Android Studio и включить там все нужные пакеты.

Ссылка на скачивание Android Studio - https://developer.android.com/studio?hl=ru

Перечень пакетов, которые должны быть установлены в Android Studio:

  • Android SDK Platform-Tools version 34.0.0 или выше
  • Android SDK Build-Tools version 34.0.0 или выше
  • Android SDK Command-line Tools
  • CMake
  • NDK

Актуальные зависимости в документации Godot - https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_android.html

Посмотреть установленные пакеты в Android Studio можно так: settings (иконка шестерёнки) -> SDK Manager -> SDK Tools

Если какие-то пакеты не отмечены галочкой, нужно её поставить и нажать "Apply".

Устанавливаем необходимые зависимости в Godot

После установки OpenJDK и Android SDK нужно указать пути до них в Godot, а также создать debug.keystore.

В Godot открываем Editor -> Editor Settings -> Export -> Android

В поле Android SDK path указываем путь до Android SDK. Он выглядит примерно так C:\Users\{тут имя твоего пользователя}\AppData\Local\Android\Sdk

В поле Java SDK path указываем путь до Java SDK. Он выглядит примерно так

C:\Program Files\Eclipse Adoptium\jdk-17.0.12.7-hotspot

После этого создаём debug.keystore и указываем путь до него. Этот файл необходим для установки приложений, скачанных не из магазина. Так Android понимает, что этому APK-пакету можно доверять, и он находится на стадии разработки.

Чтобы создать этот ключ нужно зайти в консоль (cmd в windows). Выбрать нужную папку где будет храниться ключ и ввести команду:

keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999 -deststoretype pkcs12

И нажать Enter для выполнения. Будет создан debug.keystore путь до которого нужно указать в поле Debug Keystore в том же окне в Godot где указывали пути до SDK.

Финально окно настроек в Godot будет выглядеть примерно так:

Включаем сжатие текстур ETC2

По умолчанию в Godot может быть отключено сжатие текстур ETC2, которое нужно для экспорта на Android. Переходим Project Settings -> Rendering -> Textures и включаем галку напротив поля import ETC2 ASTC. Если поля не видно нужно включить "Advanced Settings" в правом верхнем углу

Установка шаблона для экспорта на андроид и настройки экспорта

Первым делом нужно настроить шаблон для экспорта проекта. Этот шаблон будет использоваться для создания полноценного Android приложения. Это делается через меню Project -> Install Android Build Template

Шаблон нужно будет скачать. Это займет некоторое время. После применения шаблона, в проекте появится папка android со всеми необходимыми файлами для настройки Android проекта.

Переходим на экран экспорта через меню Project

И теперь можем экспортировать проект для Android.

Для публикации необходимо подписать нашу сборку. Для этого генерируем подпись(она же Release Keystore) через CMD как это уже делали для debug.keystore. Надо выбрать папку где будут храниться ключи и открыть CMD в этой папке(вводим cmd в строке поиска в проводнике). Код для генерации Release Keystore

keytool -keyalg RSA -genkeypair -alias supergame -keypass supergame -keystore supergame.keystore -storepass supergame

supergame в этом коде можно заменить на что-то своё

В настройках экспорта в поле Debug указывайте путь до ключа debug.keystore и в поле Release указывайте путь до Release Keystore. А в полях User, Password и Release User, Release Password указывайте данные которые вводили при создании этих ключей. У меня это были: androiddebugkey и android для Debug и supergame и supergame для Release

И нужно добавить кастомную иконку в полях Launcher Icons. Размеры 192х192 и 432х432. Эта иконка будет отображаться в телефоне у пользователя.

Также вводим название вашей игры в поле "Name"

Публикуем игру в RuStore

Переходим в RuStore для разработчиков https://www.rustore.ru/developer и создаём аккаунт.

Чтобы работать с RuStore нужно или юридическое лицо или статус самозанятого. Физические лица не могут получать выплаты.

После регистрации и подтверждения аккаунта переходим в консоль https://console.rustore.ru/apps и нажимаем кнопку "Добавить приложение"

Выбираем тип приложения "Универсальный", тип монетизации "Бесплатное", вводим название приложения и нажимаем кнопку "Добавить"

Потом в разделе "Версии" нажимаем "Загрузить версию". После заполняем карточку игры.

  • Загружаем APK
  • Вводим название
  • Выбираем тип "Игра"
  • Выбираем нужную основную категорию
  • Дополнительную категорию
  • Возрастную категорию
  • Краткое описание
  • Подробное описание. в подробном описании обязательно оставляем свою почту для связи. То есть пишем например - Контакты для связи: ivanov@yandex.ru. Это нужно для регистрации в РСЯ для подключения рекламной монетизации
  • Добавляем иконку приложения 512х512
  • Скриншоты для телефона и планшета
  • По желанию можно добавить видео

Отправляем на модерацию. Модерация очень быстрая. Обычно в течении 1-2 часов.

Подключаем рекламную монетизацию РСЯ

Подключать будем рекламу от яндекса, поэту нужно быть зарегистрированными в РСЯ.

Если вы уже зарегистрированы в РСЯ переходим туда https://partner.yandex.ru/v2/inapp/app/ и нажимаем "Реклама в приложениях" -> "Добавить приложение"

После выбираем "Приложение опубликовано в другом магазине"

  • В поле "Магазин приложений" выбираем RuStore
  • В поле "Название приложения" вводите название вашей игры
  • В поле "Название пакета" вводим часть ссылки на игру после слова "app/"
  • В поле "Ссылка на приложение" вводим ссылку на приложение
  • В поле "Разработчик" вводим своё имя и фамилию

После заполнения всех полей нажимаете кнопку "Добавить".

Через некоторое время придёт код подтверждения на почту и новая площадка будет зарегистрирована.

Заводим баннеры в РСЯ

Переходите в новосозданную площадку и нажимайте "Добавить блок"

На выбор будет несколько форматов, выберите "Баннер" и нажмите кнопку "Создать". Это простой баннерный блок который будет висеть на каждой странице игры

Баннер создан нам здесь понадобится только его ID.

Подключаем плагин для яндекс рекламы

Для Godot 3 можно использовать - https://gitflic.ru/project/dimega/godot-yandex-ads-android/release/ad814fc7-5a8a-49f3-9820-e4dc13482244

Для Godot 4 - https://github.com/noctisalamandra/godot-yandex-ads-android

В Godot 3 и Godot 4 есть отличия по подключению плагина

Подключаем в Godot 3

  • Скачиваем и распаковываем архив с гитхаба
  • Перемещаем файлы GodotAndroidYandexAds.gdap и GodotAndroidYandexAds-release.aar в /android/plugins в Godot
  • Перемещаем папку ‘yandex-ads-lib’ в ваш проект
  • При экспорте проекта укажите пользовательскую сборку и плагины.

Подключаем в Godot 4

Скачиваем и распаковываем архив https://github.com/noctisalamandra/godot-yandex-ads-android/releases/download/v1.1/addons.zip

Папку addons копируем в корень проекта на Godot

В project settings включаем плагин

При эскпорте включаем "Use Grade Build"

В секции "Permissions" ставим галки "Access Network State" и "Internet".

Подключаем рекламу в игре

Создайте узел для рекламного модуля в сценах, где он вам нужен.

И введите идентификатор вашего объявления.

В build.gradle (android -> build -> build.gradle) добавьте следующий код:

Для Godot 3

dependencies {
    ...
    implementation 'com.yandex.android:mobileads:6.4.1'
}

Для Godot 3 и для Godot 4

android {

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Затем вы можете использовать сигналы и функции, написанные в скрипте, для показа рекламы. Для баннера это работает так, добавляем в _ready функцию загрузки баннера

func _ready():
	$YandexAds.load_banner() 

И после присоединяем сигнал, обрабатывающий что делать когда баннер загрузился:

func _on_yandex_ads_banner_loaded():
	$YandexAds.show_banner() 

Список вызовов и обработчиков:

func _ready():
	$YandexAds.load_banner() 

func _on_rewarded_pressed():
	$YandexAds.load_rewarded_video()

func _on_interstitial_pressed():
	$YandexAds.load_interstitial()

func _on_yandex_ads_rewarded_video_loaded():
	$YandexAds.show_rewarded_video() 

func _on_yandex_ads_interstitial_loaded():
	$YandexAds.show_interstitial() 

func _on_yandex_ads_banner_loaded():
	$YandexAds.show_banner() 

func _on_yandex_ads_rewarded(currency, amount):
	pass

После этого при экспорте в Android версию с 1 на 2 и грузим новую версию в RuStore