(2 месяца + 125 долларов) ✱ 0 опыта = мобильная игра

Немного о нас

Всем привет, мы команда, которая решила сделать первые шаги в разработке мобильных игр. В команде два человека, Егор (23 года) и Даниэль (22). Знакомы мы уже 5 лет, с первого курса технического университета г. Москвы, название которого носит имя российского революционера*. Обучение информатики, а в частности программированию (Visual Basic) длилось в течение первого курса. Особого интереса данное направление у нас не вызывало, как и все обучение в целом. У нас были иные планы на жизнь…

(2 месяца + 125 долларов) ✱ 0 опыта = мобильная игра

Первые три года обучения прошли как у большинства студентов, но во 2-ом семестре 3-го курса начали появляться вопросы «А что ждет нас после университета? Куда мы попадем и чем будем заниматься?». У нас была летная практика (месяц неоплачиваемого труда в одной из компаний), после прохождения которой, особо не было желания связывать свое будущее с похожим родом деятельности, или по крайней мере не в наши лучшие годы (20 – 70 лет). Оценивая свои возможности, интересы и небольшой опыт мы начали искать ответы на эти вопросы. Впоследствии, на четвертом курсе, это вылилось в два проекта. Один из которых мы делали для одной крупной столичной компании, а второй – попытка создания стартапа с последующим участием в акселераторе и выступлением перед инвесторами (если Вам интересно, можем написать отдельную статью). Оба проекта не нашли поддержки (провалились).

Параллельно с реализацией второго проекта у нас возникла спонтанная идея (до конца 4-го курса этого не было в планах) продолжить обучение и поступить в магистратуру (исключительно на бюджетные места, которых было 5). Сдав вступительные экзамены, мы поняли, что без дополнительных баллов мы неконкурентоспособны и в срочном порядке опубликовали свои статьи в отечественные журналы разного уровня, прошли курсы повышения квалификации и придя к согласию с руководством университета получили несколько дополнительных баллов за первый проект. За короткий промежуток времени (около 3 недель) набралось 23 из 25 дополнительных баллов. Волею судьбы мы навсегда распрощались со стенами родного университета, с 6-м и 8-м местами в списке «зачисленных» на бюджет. Далее следовало полгода поисков направления для следующего проекта, которые пересекались с временными подработками. Желания найти постоянную работу в офисе «на дядю» не было (попытки были).

Рождение идеи разработки игр

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

Днями на пролет мы просматривали видео уроки, где программисты «на пальцах» объясняли азы программирования. В процессе усваивания информации промелькнула мысль отойти от разработки приложений и реализовать одну из наших давних идей о создании собственной мобильной игры, причем самостоятельно. Продолжив смотреть тематические видео уроки, мы выделили два возможных пути дальнейших действий. Первый предполагал углубленное изучение языка программирования (C#) и движка (Unity), с нуля (хоть в наших флешбеках и прослеживалась связь между С# и Visual Basic, но знания с первого курса просели сильнее цен на нефть) посредством теоретических материалов. Второй, выбранный нами, сразу перейти к практике, изучая только интересующие нас части кода.

Первые шаги в разработке

В процессе мозгового штурма (около 15 секунд) была придумана механика игры, удовлетворяющая всем нашим требованиям (простота разработки и 1 касание). По нашей задумке при старте игры мяч летит в произвольном направлении, задача игрока вовремя (когда мяч находится в определенной зоне) нажать на экран, тем самым изменив направление полета мяча (имитация отскока). Цель игры — набрать максимальное количество очков (1 успешный отскок = 1 очко). Игра считается проигранной, когда мяч коснётся стенки. Почему именно одно касание? Мы хотели создать игру, максимально подходящую каждому человеку, будь то подросток, решивший скоротать время в учебном заведении, будь то взрослый человек, решивший отвлечься от рабочего процесса в обеденное время. Тап по экрану – привычный жест для любого современного человека, что делает игровой процесс интуитивно понятным каждому.

Первоначально каждый из нас работал на своем компьютере, общались по видеосвязи. Ежедневно мы ставили нетривиальную задачу и соревновались, кто быстрее ее выполнит и разберется в неизвестной нам среде.

Одной из первых задач было создание движения мяча по вертикали (вверх-вниз).

                                                                  Анимация мяча

Достаточно быстро справившись с этим заданием и получив дозу уверенности, мы решили заставить мяч полететь под углом и отскочить от стенки. На этот раз потребовалось гораздо больше времени. Если в первой задаче нужно было просто менять координату объекта, то в данном случае нам предстояло изучить его физические свойства.

                                                                Анимация отскока

Сначала соревновательный процесс добавлял интереса нашему обучению, но как время приблизилось к разработке самой игры, мы приняли решение объединить усилия и работать на одном компьютере.

Разработка игры

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

                                                                     Блок - схема
                                                                     Блок - схема

После выполнения второй «тренировочной» задачи было ощущение, что 70% игры уже готово, но как только мы решили сделать имитацию отскока мяча по нажатию, а не от стенки, выяснилось, что написанный код совершенно не подходит. Следующие несколько дней были потрачены во имя решения появившейся проблемы. В итоге были использованы лучи, которые на определенном расстоянии до стенок, отрабатывали нажатие и меняли соответствующую координату на противоположную.

                                                    Анимация игрового процесса

Удовлетворившись результатом перешли к созданию пользовательского интерфейса, а именно настроили счётчик очков, сделали главное меню (с одной большой кнопкой «Играть» и рекордом) и меню проигрыша (с двумя кнопками «Переиграть» и «Главное меню»). Также была настроена реклама (пропускаемый ролик, через каждые 4 поражения, и баннер на меню проигрыша).

Первоначально идея с минимальным количеством кнопок очаровала нас. Такой минималистичный подход казался необычным. Особого шарма главному меню добавляла анимация отскакивающего мяча, которую ничего не загораживает (нет рекламы и лишних кнопок).

                                                                 Меню проигрыша
                                                                 Меню проигрыша
                                                        Анимация главного меню

Промежуточный финал

По завершению настройки пользовательского интерфейса, было проведено финальное тестирование и выявлено несколько багов (двойное начисление очков в углах, возможность многократного нажатия в одной зоне), но все они были исправлены с помощью добавления в код ряда проверок. Помимо этого, выявилась еще одна проблема, на устройствах начиная с Android 8.0 и выше, мяч, во время смены направления, притормаживал и делал игровой процесс некомфортным. Пришлось перебирать весь код, создать абсолютно новый проект в Unity и, добавляя элемент за элементом, выяснять, на каком именно этапе проблема. На ее решение мы потратили около 2-х недель.

После загрузки «финальной» версии на смартфон, нас не покидало ощущение, что игре чего-то не хватает. Также идея с минимальным количеством кнопок выглядела все менее привлекательно, казалось, что игра недоработана. Мы решили продолжать творить дальше.

Доработка и финал

В ходе обсуждения было принято решение о добавлении в проект звука, таблицы лидеров, кнопки поделиться своим рекордом, кнопки оценки приложения, кнопки восстановления счета после смерти (за просмотр рекламного ролика) и магазина, в котором появится возможность изменить вид мяча.

Звук был добавлен в 2-х местах: при отскоке (в результате чего он стал более «физическим») и появлении панели проигрыша. С результатом можете ознакомиться, скачав игру.

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

                                                                         Магазин
                                                                         Магазин

Как и во многих играх мы добавили кнопку восстановления счета после смерти. При нажатии на нее игрок просматривает не пропускаемый 30-ти секундный ролик и продолжает игру. Восстановление счета нельзя использовать два раза подряд. После добавления кнопки, появилось ощущение, что рекламы стало много, и мы решили увеличить интервал между пропускаемыми роликами с 4-х проигрышей до 5-ти.

Следующим шагом мы оценили внешний вид игрового интерфейса и увидели, что все наши кнопки имеют скругленные края, наш игровой объект круглый, а панель проигрыша и игровое поле имели острые углы. Сделав края скругленными и добавив полупрозрачную панель на игровое поле при появлении меню проигрыша, игра стала выглядеть более привлекательно.

                                                          До и после скруглений
                                                          До и после скруглений

По окончанию доработок (заняло около 2-х недель), мы получили полностью удовлетворяющую нас игру.

                                                             Анимация геймплея

Подготовка к публикации и ASO оптимизация

Планировалось выпустить игру сразу для двух платформ iOS и Android. Сама разработка велась на Android, но движок Unity позволяет нажатием пары кнопок быстро адаптировать под iOS. Совет новичкам, которые захотят пойти по нашему пути, в открытом доступе существует плагин, который позволяет внедрить сервисы Google Play и Game Center сразу, а не прописывать в коде каждый по отдельности. Подобные плагины (сразу для двух платформ) существуют для различных функций (например, кнопка поделиться рекордом, внутриигровые покупки и т.д.).

Чтобы опубликовать игру необходимо было зарегистрировать и оплатить аккаунты разработчика Google Play (25$ один раз) и Apple Developer (99$ в год). С регистрацией для Google Play не возникло трудностей, оплату приняли мгновенно, проверка заняла не более часа. А с регистрацией в Apple Developer пришлось повозиться пару недель, что было большой неожиданностью для нас. При вводе Apple ID и попытке присоединения к программе разработчиков, мы постоянно получали ошибку: «Your enrollment could not be completed. Your enrollment in the Apple Developer Program could not be completed at this time». Воспользовавшись поиском, мы обнаружили, что подобной проблеме уже более полугода (с ноября 2019). Столкнувшиеся с ней разработчики советовали поменять браузер и аккаунт, либо обратится в службу поддержки. Было перепробовано множество разных браузеров, Apple ID, компьютеров, провайдеров, но все попытки были тщетны. На этом наше разочарование не закончилось, мы решили обратиться в службу поддержки. К слову, вопрос с испорченной продукцией из одного столичного магазина мы урегулировали быстрее, чем «уговорили» мировую компанию принять от нас 99$. В ответ на наше обращение, где мы подробно описали суть нашей проблемы, спустя 2 дня, мы получили такой ответ:

                                                              Ответ и перевод
                                                              Ответ и перевод

Мы написали ответное письмо с просьбой не подтверждать нашу проблему, а предложить пути решения. Спустя 10 дней мы так и не дождались ответа, хотя дублировали обращение в разные службы поддержки каждые два дня.

Мы решили данную проблему путем регистрации аккаунта разработчика через знакомого человека в Великобритании. Оплата и подтверждение были проведены в течении 2-х часов. Apple, так держать!

Заключительным этапом подготовки к публикации стало проведение ASO оптимизации. Так как в этой теме мы новички, сперва изучили материалы в этом направлении. Мы решили, что будем оптимизировать логотип, скриншоты и ключевые слова.

В изначальном варианте логотипа было решено схематично изобразить отскок мяча от стены. По началу он нас устраивал, казалось, что он отражает игровой процесс и будет понятен игрокам. После знакомства с ASO оптимизацией, мы узнали о значимости логотипа: два разных логотипа у одного приложения могут кардинально менять конверсию из просмотра в установку. В итоге мы разгрузили финальный логотип и сделали полет мяча более понятным. Какая из двух задумок Вам нравится больше?

                                                               Логотип до и после
                                                               Логотип до и после

Для скриншотов мы провели небольшое обновление: добавили рамку смартфона (только для Google Play, в App Store нельзя вставлять рамку устройства) и изменили порядок расположения на странице игры. Первыми должны идти скриншоты, отражающие игровой процесс и вносящие в него ясность, а все последующие – в порядке убывания значимости.

Наибольших усилий потребовала оптимизация ключевых слов. Мы выбрали 5 игр более-менее похожих на нашу. Из них 3 – популярные, 2 – набирающие популярность, и начали анализировать запросы, по которым они индексируются. При выборе ключевого слова мы ориентировались на его популярность и количество конкурентов. Было выяснено, что в App Store индексируются название, подзаголовок и ключевые слова, а в Google Play – название и описание. Так же в App Store локализации для разных стран пересекаются между собой: например, если мы сделаем локализацию для России, Австралии и Великобритании, то для российских пользователей будут индексироваться ключевые запросы Австралии и Великобритании и наоборот. Это позволяет увеличить количество символов ключевых слов от 100 (максимальное количество символов для одной локализации) до 500. Для увеличения охвата мы создали 9 локализаций для App Store (Россия, Великобритания, Австралия, Мексика, Испания, Италия, Германия, США, Франция, Корея, Япония) и 6 для Google Play (Россия, Испания, Италия, Германия, США, Франция). С русским и английским языком проблем не возникло, а остальные языки делали с помощью переводчика (не человека). Мы старались, честно, но за читаемость итогового варианта не отвечаем (от слова совсем), по поводу восточных иероглифов без комментариев… В приоритете было уместить максимальное количество ключевых запросов и сохранить какую-никакую связь.

Вы бы стали скачивать игру, где описание написано «коряво» и местами теряется связь между словами/предложениями?

Методы продвижения и заключение

Решено было использовать как платные, так и бесплатные методы продвижения. Среди платных планируем использовать рекламу в социальных сетях как в стандартном виде (публикация постов), так и в виде конкурсов с денежными призами. Среди бесплатных – написание статьи как в Российские (вы читаете ее сейчас), так и зарубежные площадки.

Суммарно было потрачено 2 месяца, из которых на разработку игры 4,5 недели. Каждый день написания кода и удачного внедрения очередной функции в игру доставлял нам неимоверное удовольствие, чего нельзя сказать о последующем решении организационных вопросов. В планах написать статью о промежуточных финансовых результатах после достижения 50-и тысяч скачиваний (или не достижения), и Вы, как никто, можете ускорить этот процесс, скачивайте и оценивайте нашу игру по ссылкам ниже!

Пойдет ли Flexy Ball вопреки правилам математики или обнулится?
1) (2 + 125) ✱ 0 = 1
2) (2 + 125) ✱ 0 = 0

* находится на станции метро Бауманская

2828
71 комментарий

Зачем я это прочитал?

42
Ответить

Видимо влияют выходные 🌞 Странный текст, задался тем же вопросом что и вы.

8
Ответить

Здравствуйте, это хороший вопрос, на который Вы должны найти ответ сами. Наша задача написать статью и привести Вас сюда. Хорошего дня!

2
Ответить

Я не стал читать, сразу полез в комментарии.

Ответить
23
Ответить

Здравствуйте, идея смены цвета шарика при отскоке катит на обновление)

9
Ответить

Гм. Я такую игру в начале 90-х на Basic'е писал (как раз тогда у меня появился спектрум). И мне тогда было лет 6-7. Да, там не было игры на двоих или по сети (тогда вообще их в обычном представлении не было). Но реально это стоит того чтобы опубликовать здесь?

12
Ответить