Монетизация через видео рекламу в Unity.

Tulenber 11 September, 2020 ⸱ Intermediate ⸱ 6 min ⸱ 2020.1.5f1 ⸱

Даже самый альтруистичный разработчик игр порой хочет кушать и в решении этого вопроса ему может помочь наш новый цикл, посвящённый монетизации.

А откроем мы его статьёй об одном из самых популярных вариантов получения дохода в free to play играх, а именно отображении видео рекламы.

Монетизация

Если посмотреть на возможности для монетизации вашей игры, то можно выделить несколько основных подходов:

  • Pay to play - взять денег за установку вашей игры
  • In app purchases - попросить денег за дополнительные услуги в виде внутриигровых покупок
  • In app Ads - показать рекламу
  • Bonus type - собрать данные пользователей и продать их кому-то за какие-то деньги, потом получить общественный иск за нарушение приватности, отчитаться перед сенаторами в конгрессе США и т.д. по отработанной схеме, но это уже совсем грязь какая-то =)

Суть рекламной модели

Схема довольно известна и проста, вы показываете в приложении рекламу(видео или баннер), а рекламная сеть, которая её предоставила, платит вам небольшую денежку за просмотры и чуть побольше, если реклама достигла цели и клиент по ней перешёл. По сути, это ничем не отличается от рекламы в интернете. Для понимания порядка цифр вы заработаете около пары долларов с тысячи показов этой самой рекламы(цифра взята по аналогии с рекламой на сайтах и отражает лишь порядок, этот блог не про маркетинг).

Рекламные сети

Существует довольно много поставщиков рекламы и интеграция любого из них будет представлять из себя примерно один и тот же процесс: настройку аккаунта и проекта в рекламной сети, встраивание sdk в текущий проект, встраивание рекламы в игровую логику.

Если это ваш первый проект или вы просто не задумывались об этой модели, то самым очевидным кандидатом из всех используемых сетей, конечно же, будет Unity Ads Network, не берусь судить о реальных результатах, которые вы можете получить с помощью данной рекламной сети, однако что может быть лучше для демонстрации встраивания рекламы, чем нативный экспириенс? =)

Настройка проекта

Для использования рекламы вам понадобится:

  • Подключиться к Unity Services - не буду вдаваться в подробности этого процесса, тем более он может устареть с выходом очередной версии, а приведу ссылку на официальную документацию(не забудте выбрать интересующую вас версию движка), которая поддерживается самой Unity (всё-таки они этим деньги зарабатывают)
  • Добавить пакет интеграции с Unity Ads - этот пункт также может меняться со временем, так что тоже предоставлю официальную ссылку
  • Включить интеграцию с сервисом Unity Ads в проекте. Стоит отметить, что она может не включиться с первого раза и потребуется повторный клик на переключатель, будьте внимательны и проверьте, что всё включено
    Enable ads
  • Создать класс для работы с рекламой - в своём последнем проекте я настраивал рекламу с помощью синглетона

Подробнее о синглетонах можно почитать в нашей предыдущей статье.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System;
using UnityEngine;
using UnityEngine.Advertisements;
using Utils;

namespace Managers
{
    public class KhtAdManager : KhtSingleton<KhtAdManager>, IUnityAdsListener
    {
        // Обработка окончания показа рекламы происходит через эвенты
        public static event Action finishAd = delegate {  };

        // Id игры в Unity services
        private static string _gameId = "";
        // Существует 3 типа рекламы, rewardedVideo является одним из стандартных и не позволяет пропустить рекламу
        // Более подробную информацию об остальных типах рекламы можно найти в документации
        private static string myPlacementId = "rewardedVideo";

        // Используется для определения возможности показа рекламы
        private static bool _isAdAvailable = false;
        public static bool IsAdAvailable => _isAdAvailable;

        // Start is called before the first frame update
        void Start()
        {
            // Настройка синглетона
            DontDestroyOnLoad(gameObject);
            // Настройка показа рекламы
            Advertisement.AddListener (this);
            Advertisement.Initialize (_gameId);
        }

        // Показ рекламы
        public static void ShowAd()
        {
            if (ReferenceEquals(Instance, null))
            {
                return;
            }
            
            Advertisement.Show (myPlacementId);
        }

        // Обработчик завершения загрузки рекламы
        public void OnUnityAdsReady(string placementId)
        {
            Debug.Log("OnUnityAdsReady: " + placementId);

            _isAdAvailable = true;
        }

        public void OnUnityAdsDidError(string message)
        {
            Debug.Log("OnUnityAdsDidError: " + message);
        }

        public void OnUnityAdsDidStart(string placementId)
        {
            Debug.Log("OnUnityAdsDidStart: " + placementId);
        }

        // Обработка завершения показа рекламы
        public void OnUnityAdsDidFinish(string placementId, ShowResult showResult)
        {
            // Define conditional logic for each ad completion status:
            if (showResult == ShowResult.Finished) {
                // Reward the user for watching the ad to completion.
            } else if (showResult == ShowResult.Skipped) {
                // Do not reward the user for skipping the ad.
            } else if (showResult == ShowResult.Failed) {
                Debug.LogWarning ("The ad did not finish due to an error.");
            }

            finishAd();
        }

        private new void OnDestroy()
        {
            Advertisement.RemoveListener(this);
            base.OnDestroy();
        }
    }
}

Тестовое использование

Естественно что при разработке и тестировании нельзя показывать рекламные ролики. Отнеситесь к включению данного режима очень серьёзно, а то рекламная сеть вас просто забанит. Тестовый режим можно включить с помощью нескольких вариантов:

  • Передать параметр на инициализации Advertisement.Initialize(string gameId, bool testMode)
  • Включить принудительный тестовый режим на странице проекта в Unity Dashboard при помощи Override client test mode - Force test mode ON (i.e. use test ads) for all devices
    TestMode
  • Включить тестовый режим в настройках сервисов проекта(работает только в редакторе)
    Enable ads

Apple iOs 14

С выходом 14й версии iOs меняются правила взаимодействия пользователя с рекламными сообщениями, и если вы разрабатываете игру под эту платформу, то вам потребуется дополнительная настройка. Для разрешения этого вопроса Unity также подготовили для вас список необходимых шагов.

Подводные камни

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

  • Не забывайте заглушать музыку/звуки вашей игры во время показа рекламы, иначе вы получите звуковой хаос
  • Реклама не загружается моментально, так что если вы делаете ещё одну idle игру, то стоит обратить особое внимание на доступность рекламы сразу же после загрузки и как-то культурно взаимодействовать с пользователем, которому вы предложите удвоить afk бонус за просмотр ролика
  • Также есть вероятность, что у игрока нет интернета совсем(допустим, он играет в самолёте), так что необходимо предусмотреть и этот вариант, как минимум показывать сообщение об отсутствии доступной рекламы, а лучше обойти показ рекламы стороной

Заключение

Как всегда, сама по себе интеграция рекламы от Unity не представляет из себя какой-то сложной задачи, необходимо лишь последовательно выполнить шаги, описанные в их документации, а если вы захотите использовать какие-либо сторонние рекламные провайдеры, то они обычно следят за своей документацией ещё лучше. В результате доступность и эффективность этого способа монетизации делает его одним из основных двигателей free to play приложений, что не может не расстраивать меня как игрока, однако вы всегда можете проявить уважение к лояльным пользователям и вставить в вашу игру внутреннюю покупку, которая отключит отображение рекламы, а как это сделать мы рассмотрим в нашей следующей статье цикла о монетизации, посвящённой внутренним покупкам в играх. Пока! =)



Privacy policyCookie policyTerms of service
Tulenber 2020