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

в 9:02, , рубрики: я пиарюсь

Привет!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Продвижение

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

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

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

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

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

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

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

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

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

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

На этом, пожалуй, закончу. Если у вас есть какие-то вопросы или даже отзывы по игре — пишите в личку или комментарии, с удовольствием почитаю и отвечу. Спасибо тем, кто одолел до конца)

Автор: Dimmerg

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js