Dev Story Baldix. История о мобильной головоломке за 2 недели

Представьте себе, что в вашей жизни внезапно образовался вакуум длиной в 2 недели. Вам не нужно ни работать, ни учиться, а съездить в отпуск возможности нет. Как бы вы провели это время? Я решил написать мобильную игру.

Я мало связан с геймдевом и в игры играю редко, но день за днем, спускаясь в Московскую подземку, я наблюдал за тысячами людей, уткнувшимися в свои телефоны. Эти толпы народа по доброму часу в день взрывают на своих экранах кристаллики, склеивают цифры и чёрт знает еще чем там занимаются. Эта мысль не давала мне покоя. Феномен, так затягивающий людей, уже очень долго волновал меня, и когда в начале апреля 2015 у меня возникло двухнедельное окно, я принялся создавать свой собственный гипнотизирующий пазл.

Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
Это бесплатно. Прочитайте правила.

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

  • Игра должна быть бесплатной, и я не буду вкладывать в нее деньги.
  • Единственный вид дохода – ненавязчивая реклама.
  • Максимально простой концепт, у меня нет времени на сложный сеттинг или графику.
  • Автоматическая генерация игрового контекста, ведь контент стоит времени и денег.
  • Мультиплатформенность. Я же набираюсь опыта, пробуем сразу всё!
  • Игра должна была быть весёлой, иначе зачем она нужна.

Я определился с требованиями и пошел черпать вдохновение у гигантов индустрии. Феномен игры 2048 не давал мне покоя. Игровую стилистику решено было делать в том же формате. К слову, очень удобный подход, когда вы не умеете рисовать.

Дальше я начал перебирать в голове популярные головоломки и, конечно, не смог обойти стороной самый главный хит всех времён и народов – Тетрис. Всё новое – это рекомбинация старого, говорит нам главный инженерный подход к изобретательству. Но картинка из падающих цифр никак не скаладывалась в моей голове в органичную игру.

Нужно было что-то еще. Какая-то дополняющая мысль. И я ее нашел. Так случилось, что какое-то время назад я плотно работал над задачами из области NLP (Natural Language Processing), и мне на глаза попалась закладка в браузере, которая вела на страничку проекта Open Corpora.

Это был момент озарения. Я нажал на гиперссылку. В голове моей пронеслась мысль “с неба будут падать буквы, и надо будет собирать из них слова”. Страница догрузилась, и я подумал “а отсюда мы возьмем словарь…”

На следующие 2 недели я ушел с головой в разработку. Первое, что мне предстояло сделать, это выбрать игровой движок. Я рассматривал Unity и libGDX. В конце концов остановился на последнем, так как Java и Open Source мне ближе и роднее. На то, чтобы вникнуть в основы фреймворка, ушли первые 2 дня. Я прошерстил довольно много разных туториалов в сети и могу посоветовать начать LibGDX Tutorial series.

Читайте также  App Store Ракетка. Удобные и недорогие переводы с карты на карту

Всё описано довольно доходчиво и обстоятельно.

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

(Картинка нашлась случайно в Skype переписке с моим другом, Ильей Метелёвым, который помогал мне тестировать игру. На картинке мы отлавливали баг – игра упорно требовала, чтобы он собрал уже, наконец, название нашей незабвенной бывшей Родины.)

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

Поначалу, чтобы собрать слово, нужно было поочередно набрать нужные буквы, а затем нажать кнопку “готово”. В итоге я решил отказаться от этой кнопки и заставил буквы исчезать автоматически. Я старался выкинуть всё лишнее, в том числе и лишнее нажатие.

Игре немного не хватало драйва. Я обратил внимание, что многие проекты используют прием нагнетания обстановки- создают некое искусственное ощущение тревоги. Это хорошо чувствуется на примерах Flappy Bird и Crossy Road. Я добавил в игру таймер. Не успеваешь собрать слово – лови еще буквы. Поторопись, дружище! Не расслабляемся.

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

Так, ближе к концу второй недели, все более-менее очевидные задачи были решены. Оставалось полдня. Я рассматривал свое творение и медленно, но неотвратимо, чувство прекрасного из глубины подсознания довело до меня мысль, что стоит отказаться от патриотических цветов. Задачу с цветовой схемой мне помог решить Google. На поисковый запрос “Trendy colors April 2015” вывалилась вот такая картинка:

Не долго думая, я принялся превращать своё приложение в “trendy”. Вот, что в итоге получилось:

Итак, я был готов к запуску. Нервы после 2-х недель непрерывной работы немного сдавали, но глаза горели. Слегка трясущимися руками я за день подготовил графику и описания для магазинов и вечером 27 Апреля нажал на заветные кнопки “Publish” в App Store и Google Play. Если вы когда-нибудь задумывались о том, стоит ли создать собственное мобильное приложение, то ответ кроется в этом самом моменте. Я испытывал в те минуты непередаваемые ощущения. Осознание, что проделав двухнедельный марафон, я в итоге создал пусть простой, но законченный продукт, согревало меня изнутри, а предвкушение запуска в публичный доступ будоражило разум и не давало уснуть. Возможно, увидев отчёт, в котором написано, что вы стали миллионером, вы и испытаете еще более изысканное блаженство. Но, поверьте, даже если вы не заработаете ни копейки. Попробуйте. Оно того стоит.

Читайте также  Apple получила патент на видеоочки для индивидуального просмотра контента

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

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

Как ни странно, мне это сыграло на руку. Я не имел опыта размещения игр и целую неделю обкатывал приложение на Google Play. После того, как я выпустил 5-й апдейт, а в App Store по-прежнему гордо красовался статус “Waiting for review”, я отменил публикацию первой iOS версии и запустил процесс заново с обновленным билдом. В итоге игра вышла под 2 платформы с разницей в 3 недели.

Абсолютно точно, обратная связь Android-пользователей сделала первую iOS версию менее сырой. Однако, при запуске игры в AppStore, я пронаблюдал сайд-эффект всплеска загрузок на Google Play в этот же день. Думаю, что при правильном и хорошо спланированном запуске, лучше публиковать приложение на 2-х платформах одновременно. Однако, если специфика вашего приложения требует фидбека реальных пользователей, повторив мой опыт, вы можете решить часть своих проблем.

Разработка мобильных приложений сильно отличается от разработки остального софта. Я думал, я работаю один и буду супер Agile. Я буду быстро получать фидбек от реальных пользователей, вносить изменения, и дело пойдет в гору. Да, за первую неделю после запуска я выкатил 5 апдейтов. Только вот этого делать было нельзя, черт возьми! А простая истина в том, что если в первые дни запуска приложение не взлетело, то позже ему взлететь в разы тяжелее. Так устроены маркеты и их система ранжирования. Тестируйте всё заранее, готовьтесь к первому запуску. Это ваша священная корова.

Озаботьтесь средствами мониторинга. Я как-то наивно понадеялся, что админки мобильных маркетов снабдят меня всем необходимым. Как бы не так! Их информация обновляется с жутким запозданием, а содержание – скудно. Максимум, хватит на полпачки попкорна. Но вы же хотите наслаждаться шоу? Контролировать ситуацию, реагировать? Я встроил в свой проект Google Analytics. Инструмент в целом неплохой, хоть на мой взгляд и теряет небольшую часть данных. Только вот, если вы разрабатываете на libGDX под iOS, приготовьтесь попотеть.

Читайте также  App Store BrainWars: время пораскинуть мозгами

Дело в том, что весь Java код в libGDX проекте работает под управлением виртуальной машины RoboVM. Для использования сторонних библиотек применяются так называемые RoboVM Bindings. Это своеобразный мост для доступа к нативным функциям телефона. Доступный перечень этом обсуждении есть воркэраунд данной проблемы.

Решение – явный костыль. Никого пользоваться не призываю, но может помочь.

Помимо аналитики внутри приложения, полезно знать, откуда на страницы маркетов приходят пользователи. Для меня стало откровением, что сервис http://bit.ly можно использовать для отслеживания источников переходов. Всем советую.

Без вводного обучения в вашу игру никто не будет играть. Да-да. После первого просмотра собранной информации из Google Analytics я пришел в ступор. Среднее время сеанса в моей игре составляло 8 секунд. По какой-то причине люди просто открывали и сразу закрывали её. Соотношение новых пользователей к вернувшимся составляло 80% к 20%. Я в дикой спешке встроил в игру туториал, выкатил апдейт… Через 2 дня средняя сессия – 2,5 минуты, соотношение новых к вернувшимся – 15% к 85%.

За кросс-платформенность нужно платить. Я уже обмолвился о проблемах, связанных с внедрением сторонних библиотек. В случае с libGDX проблемы на этом не заканчиваются. Если вы решитесь использовать эту библиотеку, примите во внимание следующие важные моменты. Виртуальная машина RoboVM пакуется вместе с игрой в ваш .ipa файл, и он получается совсем не маленьким. Вы, наверное, слышали про ограничение в 50Mb для загрузок только по Wi-Fi. Мой .ipa файл весит 54Mb! Это при том, что папка с игровой заставкой и звуками всего 2Mb и около 8 Mb занимают словари. Всё остальное сожрали RoboVM и модуль для работы с Admob.

Второй важный момент. Я пользуюсь Eclipse и у меня возникли проблемы с отладчиком. Я так и не смог по-человечески настроить Debugger на работу с iOS эмулятором, хотя под остальные платформы всё работает нормально.

Такая вот история. Сейчас, оглядываясь на пройденный спринт, я понимаю, что всё могло случится немного лучше, немного точнее. Но кто не ошибался тот не жил! Напоследок, в качестве бонуса для читателей iPhones.ru, я хочу приложить список ресурсов, где в интернете можно попробовать разместить информацию о вашем творении: ссылка на таблицу.

Apple App Store: http://apple.co/1He9WZd

Google Play: http://bit.ly/1He9TMT

Источник: iphones.ru

RIOS