Сужать круг поиска, чем именно заниматься, было тяжело. Знакомых в этой области не было, поэтому решил отталкиваться от каких-то общих соображений. Так как в приоритете было в первую очередь найти что-то интересное, выбор пал на геймдев. Понравилась идея для начала сделать простенькую 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%
Удержание:
Таким образом, я получил возможность сравнить аудиторию, привлеченную через Adwords, и органику. Интересно, что между ними есть существенная разница. “Органический” юзер намного чаще оставляет отзыв, чаще делает покупки (все равно очень редко, но ни один юзер из Adwords до этого не делал покупок), и у него дольше игровые сессии. Хотя, к сожалению, удержание у него значительно хуже (удержание на первый день 25% у органики против 38% у юзеров с Adwords).
Подводя итоги, скажу, что игра до сих пор в небольшом минусе. Но ожиданий от первой игры особых и не было, а опыт получил ценный и интересный.
Если мой рассказ получился сумбурным, задавайте вопросы, уточню, что смогу.
Комментарии (23)
skvoo
07.02.2019 11:06Было бы интересно узнать о самой разработке, с какими проблемами столкнулись как начинающий программист.
ibragames Автор
07.02.2019 11:26В начале было тяжело преодолеть этап, когда практически каждый термин не знаком. Для того, чтобы начать делать что-то конкретное, нужно было разом освоить кучу информации, как по ООП и java, так и по работе с Android Studio и вспомогательными инструментами типа Gradle.
Подсказывать было некому, поэтому приходилось разбираться самому.
Но со временем процесс нахождения ответов ускорился, в основном конечно, помогал stackoverflow.
Ну и, как сейчас я упоминал в статье, считаю очень важным изучать шаблоны проектирования в ООП. Даже внешне простая игра может требовать очень много кода, поэтому важно этот код уметь грамотно выстраивать, чтобы в дальнейшем удобно было его поддерживать и изменять. Самому приходилось несколько раз переписывать много чего почти с нуля из-за неверно выбранной структуры в начале.skvoo
08.02.2019 05:12Вот эта история и будет многим интересна. Создать с 0 без знаний игру и получить признание от Google это уникальный опыт.
UnknownUser
07.02.2019 13:12На мой вкус, для новичка в программировании очень хорошая статья.
Всевозможные грабли, на которые налетает новичок, скорее всего достаточно очевидные для более менее опытных разработчиков.
Наоборот, последнее время появилось слишком много статей из разряда «я месяц назад начал изучать программирование, сейчас расскажу вам как надо».
apploid_offical
07.02.2019 11:24Посмотрел в Google Play, вроде классная, попробую как-нибудь вечерком. И да, было бы интересно узнать сам процесс разработки.
ibragames Автор
07.02.2019 11:26Спасибо, возможно напишу про разработку подробнее отдельную статью, может людям будет интересно)
gradmax
07.02.2019 11:29+1хотелось бы увидеть техническую сторону дела( возможно по этапно в виде цикла статей) — архитектура приложения, как сделали ту или иную фишку и т.д.
LastAtaman
07.02.2019 11:49Правильный выбор сделали с LibGDX, использовали Scene2d архитектуру и компоненты?
Как впечатление и каков результат от рекламных компаний фейсбука?ibragames Автор
07.02.2019 11:57Scene2D использовал для UI. Очень удобная библиотека, конечно.
LibGDX нравится, хотя есть небольшие недостатки: отсутствие толковых кросс-платформенных решений для внутриигровых покупок и рекламы (какие-то есть, но они по-моему не поддерживаются активно), проблемы с портированием под iOS. Но опять же, мне кажется это все несущественно.
Отдача от рекламы в фейсбуке была нулевой, полагаю, что я делал что-то не то. Слышал, кто-то умеет добывать оттуда окупаемый трафик, но не представляю, как это выглядит в реальности.LastAtaman
07.02.2019 23:41Для каждой платформы приходится писать свой код специфический, что поделать… Зато легковесный движок и нет навязчивой Unity Splash Screen для бесплатного тарифного плана и много других ограничений в Unity. Задумываюсь собрать игру под ios, но нужно найти и встроить аналогичные Google Play Game Services для iOS. Не пробовали еще?
Какой тип viewport использовали? Использую FillViewport с worldDimensions: 480 x 800, не могу найти оптимального варианта, приходится под разные экраны убирать элементы и динамично увеличивать отступы от краев. Для движущейся камеры может это не так критично полагаю.ibragames Автор
08.02.2019 10:15Нет, с iOS толком дела не имел пока.
Использовал FitViewport с соотношением сторон 9:16, как и у большинства устройств. Я посчитал, что конкретно в этой игре нельзя менять обзор игрового мира в зависимости от экрана. На более широких экранах имеются пустые края.
В принципе, то же самое можно было бы сделать и с FillViewport, просто заполнив пустые края на широких экранах декоративными элементами. По-хорошему, наверно, так и надо. Тот подход, что вы описали, вполне нормальный.
DmitryO
07.02.2019 15:55“Органический” юзер намного чаще оставляет отзыв, чаще делает покупки (все равно очень редко, но ни один юзер из Adwords до этого не делал покупок), и у него дольше игровые сессии. Хотя, к сожалению, удержание у него значительно хуже (удержание на первый день 25% у органики против 38% у юзеров с Adwords)
Интересное наблюдение, есть ли какие-нибудь мысли, почему так? Анализ проводился, как я понимаю, учитывая период когда приложение попало в featured?ibragames Автор
07.02.2019 19:23Тяжело сказать, предполагаю, что юзер, который устанавливает из гугл плей, делает это более осознанно. У него есть возможность посмотреть скриншоты, почитать описание и потом принять решение. Отсюда и более длинные игровые сессии.
А юзер, который попадает в игру через клик по рекламе, имеет меньше информации об игре перед тем, как ее открыть. Да и скорее всего он таким образом устанавливает много игр, и не заморачивается с написанием отзывов и т.п.
Хотя почему тогда удержание у второго юзера сильно лучше — для меня загадка.DmitryO
07.02.2019 23:44Вопрос, собственно, и был про удержание. Все остальное довольно очевидно. Есть подозрение, что где-то в исходных данных для аналитики могла быть ошибка.
ibragames Автор
08.02.2019 10:21Для аналитики использую Firebase. Сомневаюсь, что были ошибки. Период рекламы в Adwords не пересекался с периодом в разделе featured. Более того, между ними был приличный интервал. Поэтому была возможность легко сравнивать эти категории юзеров, т.к. они не «смешивались» друг с другом и можно было просто брать данные прямо из консоли Firebase.
DmitryO
08.02.2019 22:09уточню — пользователей, пришедших через featured, вы рассматриваете как органику? Если да, то может как они-то и снизили удержание?
ibragames Автор
08.02.2019 23:12Да, в данном случае под органикой я имел ввиду их. Из поиска шел небольшой трафик, которым можно было пренебречь.
Ну да, вопрос только каким именно образом) У вас есть какие-то догадки?
Я так и не понял, почему все другие статы у них лучше, а удержание хуже. Выборки довольно большие и разница в удержании значительная, так что вряд ли можно списать это на статистическую погрешность.DmitryO
09.02.2019 19:32+1Выборки хорошие, разбег явно выходит за пределы погрешности…
Предполагаю, что featured в категории Indie Corner дает эффект на какую-то очень специфичную группу лиц с активной жизненной позицией. Либо поставил — сразу все купил, сразу написал отзыв, либо поставил — сразу поставил следующую по списку. Т.е. «attention span» у них довольно яркий, но короткий ;)
Пусть вам следующую игру где-нибудь еще зафичерят, а мы потом результаты сравним ;)
shuhray
Читаю «зачифирили»