Dev Story: Crystalux — нюансы разработки и продвижения головоломки под Android

    Привет, Хабр!

    Месяц назад на Google Play вышла моя новая игра — Crystalux. Будучи до сих пор обрадованным этим знаменательным событием, я поделюсь с вами кое-какими техническими и маркетинговыми тонкостями, которые узнал в ходе разработки. Ну и заодно немного попиарю мое творение, конечно.



    Вкратце об игре.


    Crystalux — головоломка с цепочкой уровней. Игровой процесс не претендует на уникальность, но вполне неплох и способен затянуть. Вам необходимо собирать узор из кристаллов, расположенных на шестиугольных фишках так, чтобы кристаллы соединялись по цветам. Более подробно описывать нет смысла, проще посмотреть ролик или попробовать.

    Надеюсь, не я один отношусь отрицательно к новомодным “игровым” тенденциям, вроде энергии (плати или жди) или навязываемой социальности из каждой щели? Выйдите из зала те, кто кричат, что я один. Я знаю, нас много. Мы с товарищем маленькие и бедные, но гордые инди, поэтому в игре нет энергии, нет платных барьеров и прочего. Зато есть уровни, от которых мозг реально кипит и еще есть монетизация через традиционную рекламу, отключение рекламы и продажу подсказок в игре. Социальности — минимум, только чтобы игра хоть как-то продвигала себя. Основной упор на простоту и погружение в процесс игры.

    Собственно, я заболтался, вот ссылки для заинтересованных, а я перейду к тонкостям:



    Crystalux на Google Play:


    Технические моменты


    1) Игра писалась на AndEngine и это один из важных промахов. Нет, движок-то неплохой и вполне прост для освоения, но современный мобильный рынок наглядно показывает, что кроссплатформа — это обязательно. Когда мы начинали проект, я не подумал об этом и сейчас для запуска на других платформах игру нужно будет переписывать. Для переноса с iOS на Android есть вспомогательные инструменты (привет, Apportable и Marmalade Juice), но я не знаю ни одного сервиса/фреймворка для обратного процесса. Увы. Следующие проекты будут либо на Unity, либо на связке Cocos2d/Apportable

    2) Игры — один из самых прожорливых видов мобильных приложений, и при разработке своей игры вы, скорее всего, с этим столкнетесь. Самая частая жалоба пользователей в первых версиях игры была на нагрев устройства и расход батареи. Особенно меня впечатлил отзыв одного из игроков, где он расписал достоинства игры, попросил новых уровней, а в конце приписал: “Кстати, пожарил парочку яиц на моем Nexus 5, пока играл”. Комментарии излишни.
    Проблема с нагревом может быть вызвана кучей разных причин — от неудачной архитектуры движка до тяжелых операций в вашем коде, поэтому сложно дать универсальный совет. Я частично решил проблему переходом на SpriteBatch (изначально обходился без них) и принудительным ограничением FPS, так как игра не динамична и ей ни к чему максимальная отдача.

    3) Со SpriteBatch в AndEngine связана забавная бага, из-за которой я поначалу их и не использовал. Если я размещал на нем картинку с scale=1 по X и Y (то есть исходный размер), то при отображении координаты картинки почему-то рандомно искажались и получалась каша. Что-то вроде вот этого:



    Я потратил несколько вечеров, пробовал разные подходы, но они все приводили к одному и тому же результату. В итоге я просто плюнул и сделал примитивный хак, который на удивление сработал:
    	// SpriteGroup HACK!
    	if (displayWidthScale == 1.0f)
    		displayWidthScale = 1.00001f;
    	if (displayHeightScale == 1.0f)
    		displayHeightScale = 1.00001f;
    

    Так я до сих пор и не знаю, что это и почему в интернете я ничего об этом не нашел.

    4) Рекламных сетей много, они дают разную отдачу. Одна и та же сеть может по-разному работать на разных приложениях. Словом, экспериментировать с рекламой точно придется много. Каждый раз выпускать апдейт при замене рекламной сети это плохой вариант, поэтому я сразу задумался о возможности управлять рекламой без пересборки игры. Очень неплохой подход описан здесь, у меня в игре реализовано нечто аналогичное, только попроще. Я встроил SDK нескольких рекламных сетей (AdMob, Chartboost, Tapjoy) и реализовал класс менеджера рекламы. Менеджер решает, баннер/полноэкранку какой сети показывать в определенный момент времени. А для того, чтобы управлять этим процессом, игра при каждом запуске (но не чаще, чем раз в день) скачивает маленький json-конфиг с моего сервера. Я меняю настройку в конфиге, и через сутки, максимум двое, основная масса игроков увидит баннеры выбранной мной сети. Работает отлично, управляется легко — PROFIT! Возможно, позже оформлю этот код в виде отдельной библиотеки и выложу на github.
    На данный момент в игре крутятся баннеры AdMob и полноэкранка Chartboost — показатели меня устраивают.

    5) Мир Android — это мир множества магазинов приложений, и глупо упускать прибыль и аудиторию, ограничиваясь публикацией только в Google Play. Однако у каждого из магазинов есть свои сервисы, с которыми часто надо интегрироваться, поэтому о более комфортной сборке билдов под разные магазины лучше позаботиться еще на этапе разработки. Я разработал логику, которая позволяет изменением одной константы перенастроить игру как мне нужно (в некоторых рамках, разумеется), однако потестировать еще не пришлось — мы опубликовались пока только в Google Play и заняты развитием игры в нем. Описание этой темы достойно отдельного поста, что я обязательно постараюсь сделать в ближайшие недели. Пока вкратце скажу, что это обязательно надо учитывать с самого начала разработки и при проектировании монетизации. Например, не стоит надеяться, что в каждом магазине будут доступны внутриигровые покупки, а значит нужно подумать об альтернативных путях монетизации.

    6) Последний совет не совсем технический. Если взялись за разработку игры — делайте то, во что стали бы играть сами. Минимум компромиссов с собой по спорным вопросам, максимум жесткой внутренней самоцензуры. Фича вызывает сомнение? Убрать или хотя бы переделать, чтобы устраивала самого себя. Не нужно надеяться, что если вам не нравится, то игроки оценят — скорее всего так не будет. Для примера, логику подсказок мы меняли раза три или четыре, пока не остались довольны результатом. С другой стороны, интересные фишки добавлять никогда не поздно и они могут сыграть свою роль. Например, комментарии по завершении уровня были добавлены буквально в последний момент, но были хорошо приняты игроками и стали своеобразной изюминкой игры.



    Продвижение


    Наша стратегия продвижения описывается двумя словами: “Денег нет!”. Вот от этого и пляшем.

    1) F2P шагает по планете. Ну или не по планете, но по миру мобильных игр точно. При прямых продажах на хороший доход можно рассчитывать только при двух условиях: а) очень качественный или выделяющийся чем-то проект, б) здоровенный маркетинговый бюджет. В противном случае, скорее всего, придется раздавать игру даром и ломать голову о том, что бы такого предложить игрокам в самой игре, чтобы они захотели это купить. Желательно при этом не поломать удовольствие от самой игры. Наша игра исключением не стала, и продаваемые подсказки неожиданно оказались неплохим ходовым товаром. Ура, и переходим к следующему пункту.



    2) Google Play обновляется раз в сутки — тоска зеленая. У Flurry и Google Analytics тоже неслабый интервал обновления. А как же сидеть и обновлять страницу статистики каждую минуту? Я не мог лишить нас с другом такого удовольствия, поэтому накидал простенькую БД и файлик на PHP, которые залил на свой хостинг. При первом запуске игра шлет привет моему серваку, а я имею возможность любоваться самыми актуальными цифрами установок с разбивкой по странам (берется из локали устройства). Очень советую вам обзавестись чем-то аналогичным — оно того стоит.
    Эта система, кстати, помогла сделать неожиданное открытие — вскоре после релиза игра неплохо пошла у китайцев через их сайты и форумы приложений, и на данный момент игроки из Китая набрали уже около 100000 инсталлов, которые в Google Play не отслеживаются.

    3) Если ваш бюджет продвижения аналогичен нашему, то выход только один — заменять деньги энтузиазмом. Пишите на сайты игр и Android-приложений, просите написать обзоры на сайтах обзоров, работайте со своей аудиторией на форумах и не забывайте отвечать на отзывы в Google Play. Важный момент — реклама в социальных сетях оказалась весьма эффективна. Я имею в виду не баннерные сети, а заказные посты в крупных тематических пабликах. Также есть ряд ресурсов, которые дают хорошую отдачу при публикации за разумные деньги — 4pda, например.
    Конкретных ссылок и списков ресурсов приводить не буду, так как их итак полно в интернете и на хабре. Гуглящему да ответит Яндекс.

    4) Как известно, в Google Play давно уже нет списка новых и обновленных, а значит если вы опубликуете вашу игру и не будете ее продвигать, это равносильно тому, что вы принесете и поставите коробку с товаром на огромный склад, уже заполненный такими коробками. С другой стороны, есть топ новых — там находятся игры и приложения, которые показывают хорошие показатели роста, и опубликованы менее месяца назад. Этот топ дает огромное стартовое преимущество тому, кто шевелится и продвигает игру. Нужно очень постараться попасть туда, и для этого план продвижения лучше подготовить до релиза, чтобы после старта не терять времени и набирать закачки как можно быстрее. Через 30 дней после публикации игра оттуда вылетает и вы начинаете играть на общих правилах (многие вообще на этом играть заканчивают).
    Наша игра достаточно быстро доросла до 5-10 мест в топе новых в категории пазлов по России и остаток месяца болталась там, что давало нам 1000 с лишним дополнительных закачек в день из России.

    Собственно, итог.


    А итогов-то пока и нет. Игра в стадии активной доработки, мы немного попиарили ее на российском рынке и сейчас готовим новые уровни, локализации и пиар-кампании на региональных зарубежных рынках. Но так как на Хабре любят цифры, поделюсь текущими:



    Игра опубликована месяц назад.
    Кол-во загрузок по моей системе загрузок — около 160000
    Кол-во загрузок в Google Play — около 60000
    Примерный доход на текущий момент — около 2000$
    Игра имеет около 3000 оценок и среднюю оценку 4.65. Пользователям очень нравится игра и уровень сложности, жалуются обычно на краши на специфичных девайсах или на то, что мало уровней.
    В день играется около 60000 сессий (по Flurry).

    На этом, пожалуй, закончу. Если у вас есть какие-то вопросы или даже отзывы по игре — пишите в личку или комментарии, с удовольствием почитаю и отвечу. Спасибо тем, кто одолел до конца)
    Поделиться публикацией
    Комментарии 29
      +2
      Спасибо за статью. Есть пара вопросов/советов:
      1) В заголовке статьи говорится о продвижении, а в статье цифр не увидел (да и сервисов не увидел). Хотя бы приблизительную конверсию узнать хотелось бы. Мы для своих игр тоже статьи заказывали, но более-менее какой-то положительного эффекта почти не заметили. От 4PDA вообще не было толку. Правда, мы там заказывали статью на платную версию игру.
      2) «Глупо упускать прибыль и аудиторию, ограничиваясь публикацией только в Google Play»
      Поверьте, особого толку не будет от того, что вы в другие магазины опубликуете игру. На фоне GP закачки из других магазинов затеряются. Разве что вы будете продвигать игру в азиатском регионе в их сторах, но там с их API всё не тривиально + придётся через издателя.
      3)
      Google Play обновляется раз в сутки — тоска зеленая. У Flurry и Google Analytics тоже неслабый интервал обновления. А как же сидеть и обновлять страницу статистики каждую минуту?

      Лишний раз грузить сервер ради этого? Я, честно говоря, не вижу в этом особого смысла. Ежедневной статистики вполне хватает.
        0
        1) Мне тяжело дать конкретные цифры, так как у нас многие методы продвижения часто пересекались между собой по времени и влияли друг на друга. В целом, создалось впечатление, что наибольшую отдачу сейчас дает публикация постов в крупных пабликах вконтакте (речь о продвижении на российском рынке, разумеется). Мы потратили где-то 5.000 руб на посты в пабликах одновременно в один вечер и получили несколько тыс загрузок по России (где-то 3000-4000), что выдает нам CPI 1.5 рубля. В тех же пабликах можно публиковаться и неоднократно, чтобы игра примелькалась, хотя в следующие разы отдача конечно ниже. Конкретные паблики писать не буду — во-первых, они легко ищутся, во-вторых, это уже реклама будет)
        Насчет 4pda — отдача от них была неплоха, хотя я ожидал и большего (особенно помня результаты пиара для предыдущей игры). Мы взяли тариф за 5000, сами написали обзор и получили (субъективно) от 1000 до 2000 установок. 4pda также ценен форумом, который хоть и не накручивает инсталлы в плее, но дает хороший фидбек.

        2) Все-таки не поверю)) Вот, например, моя предыдущая игра: в google play 55к установок, в SlideMe — 20к. Не так и плохо. Кроме того, я знаю человека, у которого его игра в Samsung Apps идет даже лучше чем в Google Play, за счет более высокого места в рейтинге. Словом, на альтернативные магазины точно стоит обращать внимание, хотя бы на крупные.
        Для вашего случая, мне кажется, дело в том, что вы монетизируете прямыми продажами. Они и в Google Play-то идут не супер, а в альтернативных магазинах вообще тухляк. А вот для рекламы чем больше загрузок — тем лучше, так что от сторонних магазинов польза будет сильно выше.

        3) Один запрос от игры на регистрацию инсталла вряд ли особо нагружает сервер. Кроме того, игра все равно обращается за конфигом для рекламы (хоть это идет и без обращения к БД). Словом, личное дело каждого, я не пожалел, что сделал.
          0
          4pda также ценен форумом, который хоть и не накручивает инсталлы в плее, но дает хороший фидбек.

          Мы пришли к выводу, что 4PDA лучше использовать для продвижения именно бесплатных версий приложений/игр)
          Все-таки не поверю)) Вот, например, моя предыдущая игра: в google play 55к установок, в SlideMe — 20к. Не так и плохо. Кроме того, я знаю человека, у которого его игра в Samsung Apps идет даже лучше чем в Google Play, за счет более высокого места в рейтинге. Словом, на альтернативные магазины точно стоит обращать внимание, хотя бы на крупные.
          Для вашего случая, мне кажется, дело в том, что вы монетизируете прямыми продажами. Они и в Google Play-то идут не супер, а в альтернативных магазинах вообще тухляк. А вот для рекламы чем больше загрузок — тем лучше, так что от сторонних магазинов польза будет сильно выше.

          Тут дело в том, что мы проверяли другие сторы на примере платной игрушки. Для бесплатной версии с рекламой, думаю, профит всё же будет, в этом плане согласен с вами.
          0
          3) gameanalytics.com — у них есть реал-тайм дашборд. Задержка — минут 5.
          0
          При первом запуске игра шлет привет моему серваку

          На фоне всеобще интернетизации смартфонов мои вопросы могут показаться необоснованными, но все же.
          А если при первом запуске нет соединения с интернетом? Проверяется ли наличие интернета при каждом включении игры до момента успешной отправки «привета»? Производятся ли повторные попытки отправить «привет», если при первом включении отправка не была удачной?
          К слову, вы как-то информируете об этой отправке своих пользователей?
            0
            А если при первом запуске нет соединения с интернетом

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

            Нет.
            К слову, вы как-то информируете об этой отправке своих пользователей?

            Эти данные не содержат ничего приватного и могут быть отнесены к той же обезличенной статистике, к которой относит себя Flurry или Google Analytics. Специального предупреждения об этом нет, равно как никто и не предупреждает о том, что игра собирает статистику использования, хотя статистика эта есть в 99% игр. Вряд ли юзера сильно взволнует сообщение о том, что при первом запуске игры где-то на далеком серваке появится еще одна единичка.
            +2
            А как же cocos2d-x? Мне кажется наиболее интересный вариант среди кроссплатформенных 2d движков.

            У вас в игре немного анимаций, поэтому иногда можно совсем отключать отрисовку. Будет существенная экономия батареи.
              0
              Можно и cocos2d-x, конечно. Хотя самый вероятный вариант — Unity
                +2
                Тоже думал, что Unity это круто и следующую игру точно сделаю на ней. Но после изучения и создания прототипа понял, что в целом кокос лучше.
                  0
                  Я, честно говоря, немного напрягаюсь при необходимости разработки на c++. Языки высокого уровня все же портят разработчиков)
                    0
                    Я сам начинал с Java. И изучение Objective-C, а потом C++ далось непросто. Но в C++11 все намного упростили. И cocos2d-x многое скрывает от разработчика. Так что я всем советую напрячься и перейти)
              0
              Huawei G500 — не запускается вообще — черный экран (кстати это первая аппликуха, которая такое выдала).
                0
                Это прямо беда — некоторые пользователи говорят нам про черный экран, но сколько мы не старались, ни на одном девайсе у себя воспроизвести не смогли. Как отлаживать — хз.
                В момент запуска интернет был включен или выключен?
                  +1
                  Если Wi-Fi выключен — черный экран, врубал Wi-Fi — запустилась игра.
                    0
                    Ок, спасибо, попробую разобраться
                0
                Эта система, кстати, помогла сделать неожиданное открытие — вскоре после релиза игра неплохо пошла у китайцев через их сайты и форумы приложений, и на данный момент игроки из Китая набрали уже около 100000 инсталлов, которые в Google Play не отслеживаются.


                А есть для Вас какая-то выгода от спираченной в Китай версии?
                  0
                  Выгода самая прямая — AdMob и Chartboost продолжают работать в Китае, хоть и eCPM маленький. Так что даже пользователи подобной пиратской версии приносят некоторый доход.
                  0
                  Интересная, красиво оформленная игра. Спасибо. :)
                    0
                    Пожалуйста, наслаждайтесь)
                    0
                    AndEngine довольно специфичный выбор. По поводу багов, лучше самому кастомайзить движок под себя исправляя и добавляя то что нужно. Я правда сижу еще на самой древней версии и не обновляюсь так как во второй или какая там сейчас с измененной архитектурой и все теми же проблемами.
                      0
                      А что такого вы затребовали от железа, что игра стала несовместимой с Xiaomi Mi2s? При том, что на древний Galaxy S ставиться готова :)
                        0
                        На самом деле, мы ничего не затребовали) Просто по статистике Flurry именно на девайсах Xiaomi почему-то чаще всего происходят краши и краши достаточно фантастичные — например, где-то в недрах OpenGL. Мы, безусловно, изучаем проблемы и пытаемся их решить, но пока проще было запретить эти девайсы, так как их расстроенные крашем владельцы слишком часто кидались единицами. Когда найдем в чем корень проблемы — откроем.
                        0
                        Игра интересная но, батарейку сосёт будь здоров. За 20 минут ушло 10%…

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое