Привет! Меня зовут Ибрагим, я — начинающий инди-разработчик. У меня всегда было желание заняться программированием, но меня отпугивала сложность и неопределенность выбора (что именно изучать и делать). И лишь 2 года назад я все-таки преодолел этот психологический барьер, смог высвободить достаточно времени, и решил уже основательно подойти к задаче. Я был решительно настроен найти и освоить профессию, от которой я бы получал кайф.

Сужать круг поиска, чем именно заниматься, было тяжело. Знакомых в этой области не было, поэтому решил отталкиваться от каких-то общих соображений. Так как в приоритете было в первую очередь найти что-то интересное, выбор пал на геймдев. Понравилась идея для начала сделать простенькую 2D-игру под Android и выложить на Google Play.

Немного уделив времени теории (алгоритмам, структурам данных и проектированию), для дальнейшего изучения я выбрал язык Java, который по сути является официальным языком Android, да и в целом очень популярен. В качестве фреймворка приглянулся LibGDX, бесплатный, разработка на нем ведется как раз на Java, и вдобавок он кроссплатформенный. Хотя для следующей игры планирую осваивать всем известный Unity.

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

После создания нескольких пробных игр я взялся за игру, которую в конечном итоге и опубликовал на Google Play. Это казуальная геометрическая аркада, где главная цель — уворачивание от препятствий.

Я не буду здесь описывать здесь процесс создания игры. Если у кого-то есть вопросы, могу ответить в комментариях, или возможно напишу об этом отдельную статью.

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

Говорят, что продвижение игры надо начинать заниматься задолго до релиза. Этого я, конечно, не делал. Продвигать начал сразу после релиза игры. Сделал простенький сайт, трейлер игры, разослал запросы на обзор в кучу разных ресурсов, в том числе англоязычных (ответов получил очень мало, и в основном просили оплату), обновлял соцсети. Из платных методов: купил обзор на 4pda по программе поддержки разработчиков и попробовал рекламные кампании на Facebook и Adwords.

Больше всего средств было потрачено на Adwords, так называемые UAC (universal app campaigns) кампании, порядка $600. Несмотря на то, что этот метод давал мне наиболее дешевые установки, средний доход с юзера был все равно меньше. Я ожидал, что инсталлы от Adwords спровоцируют рост органики, но этот эффект был слишком слабым, и кампании пришлось остановить.

В итоге ни платные, ни бесплатные методы продвижения не принесли мне желаемого эффекта и я практически прекратил попытки. Количество скачиваний игры в день после этого опустилось до 10-40 и игра почти не подавала признаков жизни. Однако мне повезло, и неожиданно для меня Google Play зафичерил меня в разделе Indie Corner. Это не очень популярный раздел по меркам Google Play, но тем не менее количество скачиваний только благодаря ему сильно выросло и в отдельные дни достигало более 2000.

Думаю вместо слов, вам будет больше интересно увидеть статистику. Это данные спустя 2 месяца после релиза и 2 недели после начала фичеринга:

Активные установки / Всего установок: 8400 / 37000
Рейтинг на Google Play: 4.2 (148)
DAU/MAU: 3400 / 33000 (количество уникальных юзеров в день / в месяц)
Среднее время игры в день на юзера: 8m 31s
Среднее количество сессий в день на юзера: 1.6
Юзеров без критических ошибок: 99.6%

Удержание:

image

Таким образом, я получил возможность сравнить аудиторию, привлеченную через Adwords, и органику. Интересно, что между ними есть существенная разница. “Органический” юзер намного чаще оставляет отзыв, чаще делает покупки (все равно очень редко, но ни один юзер из Adwords до этого не делал покупок), и у него дольше игровые сессии. Хотя, к сожалению, удержание у него значительно хуже (удержание на первый день 25% у органики против 38% у юзеров с Adwords).

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

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

Комментарии (23)


  1. shuhray
    07.02.2019 05:33

    Читаю «зачифирили»


  1. demonit
    07.02.2019 09:53

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


    1. nem0ff
      07.02.2019 11:06
      +1

      Да, тем более, что сейчас на свои бесплатные игры разрешено ссылки давать.


    1. ibragames Автор
      07.02.2019 11:07

      Ссылку можете найти в моем профиле, а из статьи все ссылки пришлось убрать.


  1. skvoo
    07.02.2019 11:06

    Было бы интересно узнать о самой разработке, с какими проблемами столкнулись как начинающий программист.


    1. ibragames Автор
      07.02.2019 11:26

      В начале было тяжело преодолеть этап, когда практически каждый термин не знаком. Для того, чтобы начать делать что-то конкретное, нужно было разом освоить кучу информации, как по ООП и java, так и по работе с Android Studio и вспомогательными инструментами типа Gradle.
      Подсказывать было некому, поэтому приходилось разбираться самому.
      Но со временем процесс нахождения ответов ускорился, в основном конечно, помогал stackoverflow.
      Ну и, как сейчас я упоминал в статье, считаю очень важным изучать шаблоны проектирования в ООП. Даже внешне простая игра может требовать очень много кода, поэтому важно этот код уметь грамотно выстраивать, чтобы в дальнейшем удобно было его поддерживать и изменять. Самому приходилось несколько раз переписывать много чего почти с нуля из-за неверно выбранной структуры в начале.


      1. skvoo
        08.02.2019 05:12

        Вот эта история и будет многим интересна. Создать с 0 без знаний игру и получить признание от Google это уникальный опыт.


    1. UnknownUser
      07.02.2019 13:12

      На мой вкус, для новичка в программировании очень хорошая статья.
      Всевозможные грабли, на которые налетает новичок, скорее всего достаточно очевидные для более менее опытных разработчиков.
      Наоборот, последнее время появилось слишком много статей из разряда «я месяц назад начал изучать программирование, сейчас расскажу вам как надо».


  1. apploid_offical
    07.02.2019 11:24

    Посмотрел в Google Play, вроде классная, попробую как-нибудь вечерком. И да, было бы интересно узнать сам процесс разработки.


    1. ibragames Автор
      07.02.2019 11:26

      Спасибо, возможно напишу про разработку подробнее отдельную статью, может людям будет интересно)


      1. CaramelHeaven
        07.02.2019 14:30

        Это нужно было в этой статье описывать. Получилось бы куда логичней.


  1. gradmax
    07.02.2019 11:29
    +1

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


  1. LastAtaman
    07.02.2019 11:49

    Правильный выбор сделали с LibGDX, использовали Scene2d архитектуру и компоненты?
    Как впечатление и каков результат от рекламных компаний фейсбука?


    1. ibragames Автор
      07.02.2019 11:57

      Scene2D использовал для UI. Очень удобная библиотека, конечно.
      LibGDX нравится, хотя есть небольшие недостатки: отсутствие толковых кросс-платформенных решений для внутриигровых покупок и рекламы (какие-то есть, но они по-моему не поддерживаются активно), проблемы с портированием под iOS. Но опять же, мне кажется это все несущественно.
      Отдача от рекламы в фейсбуке была нулевой, полагаю, что я делал что-то не то. Слышал, кто-то умеет добывать оттуда окупаемый трафик, но не представляю, как это выглядит в реальности.


      1. LastAtaman
        07.02.2019 23:41

        Для каждой платформы приходится писать свой код специфический, что поделать… Зато легковесный движок и нет навязчивой Unity Splash Screen для бесплатного тарифного плана и много других ограничений в Unity. Задумываюсь собрать игру под ios, но нужно найти и встроить аналогичные Google Play Game Services для iOS. Не пробовали еще?

        Какой тип viewport использовали? Использую FillViewport с worldDimensions: 480 x 800, не могу найти оптимального варианта, приходится под разные экраны убирать элементы и динамично увеличивать отступы от краев. Для движущейся камеры может это не так критично полагаю.


        1. ibragames Автор
          08.02.2019 10:15

          Нет, с iOS толком дела не имел пока.
          Использовал FitViewport с соотношением сторон 9:16, как и у большинства устройств. Я посчитал, что конкретно в этой игре нельзя менять обзор игрового мира в зависимости от экрана. На более широких экранах имеются пустые края.
          В принципе, то же самое можно было бы сделать и с FillViewport, просто заполнив пустые края на широких экранах декоративными элементами. По-хорошему, наверно, так и надо. Тот подход, что вы описали, вполне нормальный.


  1. DmitryO
    07.02.2019 15:55

    “Органический” юзер намного чаще оставляет отзыв, чаще делает покупки (все равно очень редко, но ни один юзер из Adwords до этого не делал покупок), и у него дольше игровые сессии. Хотя, к сожалению, удержание у него значительно хуже (удержание на первый день 25% у органики против 38% у юзеров с Adwords)

    Интересное наблюдение, есть ли какие-нибудь мысли, почему так? Анализ проводился, как я понимаю, учитывая период когда приложение попало в featured?


    1. ibragames Автор
      07.02.2019 19:23

      Тяжело сказать, предполагаю, что юзер, который устанавливает из гугл плей, делает это более осознанно. У него есть возможность посмотреть скриншоты, почитать описание и потом принять решение. Отсюда и более длинные игровые сессии.
      А юзер, который попадает в игру через клик по рекламе, имеет меньше информации об игре перед тем, как ее открыть. Да и скорее всего он таким образом устанавливает много игр, и не заморачивается с написанием отзывов и т.п.
      Хотя почему тогда удержание у второго юзера сильно лучше — для меня загадка.


      1. DmitryO
        07.02.2019 23:44

        Вопрос, собственно, и был про удержание. Все остальное довольно очевидно. Есть подозрение, что где-то в исходных данных для аналитики могла быть ошибка.


        1. ibragames Автор
          08.02.2019 10:21

          Для аналитики использую Firebase. Сомневаюсь, что были ошибки. Период рекламы в Adwords не пересекался с периодом в разделе featured. Более того, между ними был приличный интервал. Поэтому была возможность легко сравнивать эти категории юзеров, т.к. они не «смешивались» друг с другом и можно было просто брать данные прямо из консоли Firebase.


          1. DmitryO
            08.02.2019 22:09

            уточню — пользователей, пришедших через featured, вы рассматриваете как органику? Если да, то может как они-то и снизили удержание?


            1. ibragames Автор
              08.02.2019 23:12

              Да, в данном случае под органикой я имел ввиду их. Из поиска шел небольшой трафик, которым можно было пренебречь.
              Ну да, вопрос только каким именно образом) У вас есть какие-то догадки?

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


              1. DmitryO
                09.02.2019 19:32
                +1

                Выборки хорошие, разбег явно выходит за пределы погрешности…

                Предполагаю, что featured в категории Indie Corner дает эффект на какую-то очень специфичную группу лиц с активной жизненной позицией. Либо поставил — сразу все купил, сразу написал отзыв, либо поставил — сразу поставил следующую по списку. Т.е. «attention span» у них довольно яркий, но короткий ;)

                Пусть вам следующую игру где-нибудь еще зафичерят, а мы потом результаты сравним ;)