После завершения создания игры-головоломки на Unity и выпуска ее на Google Play и AppStore, появилось желание поделиться опытом и впечатлениями. И получить конструктивные замечания и предложения, если таковые возникнут
Командная работа
Итак, проект делался на Unity 4.5 Free усилиями 5 человек в свободное от работы и домашних забот время. Для организации командной работы мы использовали сервис Bitbucket — там как раз до 5 человек можно добавлять в проект бесплатно. Система контроля версий — Git. Насколько я понял, Unity PRO имеет свою систему контроля версий, но мы решили не покупать PRO и не хакать — юзали Free
Первой проблемой, с которой столкнулись, было довольно сложное сливание изменений, внесенных разными разработчиками. Файлы Unity проекта — формы, префабы и проч. — имеют свои своеобразные форматы, и как текстовые файлы не сливаются. В итоге мы просто разделили ответственность: более одного человека не правили одновременно одну форму или один префаб. Этого несложно добиться, если правильно распределять задачи. С файлами скриптов на C#, конечно, никаких проблем не возникло, их правили одновременно
Производительность
Проект решили делать в 2D. Итоговая картинка формируется из 3 слоев: подложка, тень от элемента и элемент
Тестируя потом игру на устройствах, мы обнаружили, что у нас очень низкие FPS — около 20, и безумное потребление батарейки. Выяснилось, что проблема в отображении полупрозрачного слоя теней. Их вроде не так много на уровне, но в Unity это совершенно убивает производительность
Мы занялись оптимизацией — уменьшили размеры текстур элементов, собрали текстуры в атласы. FPS стали повыше, но батарейка по-прежнему высаживалась очень быстро. Тогда мы сделали механизм понижения FPS в те моменты, когда пользователь не перемещает элементы, и нет никакой анимации
Выглядит он приблизительно так: есть словарик, где ключами служат различные анимации и действия пользователя. Каждому ключу ставится в соответствие целое число — счетчик. Анимация или действие инкрементирует счетчик, когда завершается — декрементирует. Когда по всем ключам счетчики==0, мы понижаем FPS:
Application.targetFrameRate = Constants.CountFPS_Min; // == 10, в нашем случае
Как только что-то происходит — мы аналогичным образом снимаем ограничение. После этого нехитрого фокуса мы забыли о проблемах с батарейкой
Отдельной темой может служить, как мы бодались со шрифтами и вообще GUI в Unity. Это была не очень простая работа. Но, к счастью, в Unity 4.6 все значительно переделано и улучшено, так что останавливаться на этом не буду
Выпуск
В момент выхода на Google Play, мы написали на несколько сайтов и форумов о нашей игре. Это дало первый пик закачек:
Потом мы попали в «Топ набирающих популярность» в разделе Головоломки. После этого все устаканилось на уровне 150 закачек в день. Следующий пик был через 3 недели — мы попали в раздел «Похожие» к нашим основным конкурентам — «Lazors» и «Dr. Laser». На текущий момент у нас 200 закачек в день
Игра имеет внутренние покупки — можно открывать главы без прохождения уровней и покупать подсказки. Наибольшим спросом пользуются именно подсказки, особенно самый маленький пакет — 20 подсказок за 1$. Чистая прибыль в день составляет сейчас около 200 руб.
Интересное наблюдение: улучшение игры, добавление музыки, более сложных уровней, изменение дизайна и проч. — не приводит к повышению рейтинга игры (места в поиске) и увеличению закачек, но увеличивает число покупок. Вот так
В отсутствие профессионального дизайнера, корячились с иконкой самостоятельно:
Еще одно интересное наблюдение: я потратил пару дней, чтобы сделать рекламный ролик, а потом обнаружил, что его просматривает очень малое число людей, из приходящих на страницу приложения. Стоило ли?
Через месяц после выхода на Google Play, мы решили выйти в AppStore. Тоже с минимальной рекламой на нескольких форумах. Выглядел наш выход вот так:
Называется: поднялся и упал… Первые пять дней принесли нам 1,5 тыс закачек и 45$, а потом все плавно опустилось до 30 закачек в день и 2$ дневного дохода
Было принято следующее решение: мы удалили игру с AppStore, доработали ее и выложили под новым именем. Сейчас у нас Дубль#2, чуть позже смогу рассказать, что нам принесло это решение
Аналитика и покупки
В какой-то момент мы решили добавить в нашу игру сбор аналитики. Добавили Google Analystics (дальше — GA), используя плагин для Unity GoogleAnalyticsV3. Сама интеграция аналитики совсем не сложная. Если интересно, могу в отдельной статье описать, как это лучше всего сделать
Хочу отметить, что само представление данных в web-интерфейсе GA не самое удобное. Я экспортирую данные в XLS и работаю с ними уже в Excel. Да и запись аналитики в GA возможна только в рамках заданных шаблонов. Если проводить какой-то серьезный анализ поведения пользователей, то наверно стоит использовать свой сервер статистики и собирать информацию в желаемом формате. Ну, еще есть другие сервисы статистики — тот же Flurry. Но я про них ничего сказать не могу, ибо не юзал
Ну и на последок расскажу про одну проблему, с которой мы столкнулись. Надеюсь, мое предупреждение кому-то поможет
Для организации внутренних покупок мы используем плагин Soomla версии 1.5.3. Неделю назад мы добавили в игру новую покупку — открытие 6 главы. Установили себе на телефоны, проверили, что все работает. Залили на Google Play. И получили кучу гневных отзывов! Почему? — потому что, как оказалось, при первой установке нашей игры, все покупки работают как надо. Но при обновлении игры, Soomla не подхватывала новую покупку, и пользователи наблюдали интересный баг с 6 главой. Возможно, дело в том, что Soomla кэширует на телефоне список покупок и при обновлении не находит новую…
Мы просто обошли эту проблему в следующем обновлении. Но глобальный вывод напрашивается сам собой: при обновлении игры, обязательно нужно тестировать и то, как игра ведет себя при «чистой установке», и то, насколько корректно проходит обновление
Эпилог
Этот проект для нас дебютный. Мы научились работать вместе, набили пару шишек с Unity и Маркетами. Впереди другой, большой и серьезный проект. И, надеюсь, успех!
Буду рад обсуждению и обмену опытом!