[Из песочницы] Разработка мобильных игр — тернистый путь падавана

image
Картинка здесь эта потому лишь, что «Звездных воин» фанат я, и телефон тут есть еще

Доброго времени суток. Меня зовут Александр, я фронтенд-разработчик в небольшой компании, но речь в статье пойдет о моем хобби, если его можно так назвать — разработка мобильных игр. Хочу поведать историю моего знакомства и дальнейшего погружения в эту область и поделиться опытом с теми, кто хочет себя попробовать в качестве инди-разработчика, но сомневается. Также интересно узнать мнение опытных разработчиков по поводу тех идей, которые я пытался реализовать. Начну, пожалуй, издалека.

Не так давно, в одной далекой-далекой сибирской провинции


В настоящий момент я проживаю в культурной столице необъятной нашей родины, но в 2015 году, находясь в родном сибирском городе одного далекого региона на очередных умопомрачительных зимних каникулах, я сидел дома и не знал, чем себя занять, так как выходить на улицу в минус 30 градусов желания особо не было. Я учился в местном институте, грубо говоря, на программиста, мне приглянулась эта специальность еще со школы, когда родители отдали меня на курсы программирования для дополнительного образования. Программировать мне нравилось, учиться в институте — нет.

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

Таки начав покорение этого совершенно нового для меня мира, в конечном итоге я сделал игру из категории «тупо убить время без напряга мозга» с помощью кроссплатформенного фреймворка Corona SDK, однако сбилдить и выложить её я смог лишь на Google Play Market, так как для App Store нужен был Макбук. Конечно, можно было заморочиться и пойти обходными путями, но игра не стоила свеч — слишком корявая она вышла. Но сам факт, что я взялся за это дело и довел его до конца, порадовал меня, и я понял, что для стоящей поделки мне нужно подтянуть знания и умения (на игру я потратил месяцы в итоге, но тут стоит учитывать, что, не успев сделать ее за каникулы, далее делал все на выходных, ибо сил в будние дни совсем не хватало).
Кроме того, я столкнулся с одной проблемой, которая дает о себе знать до сих пор — как продвигать свою игру, если совсем нет на это денег. Тогда я не стал заморачиваться (причина та же — игра отстой), но теперь эта кость в моем горле не дает мне спокойно спать и пить чаёчек с печеньками.

Атака клонов


image
Какой только гадостью ни займешься, лишь бы игру скачивали

Благо, я был не одинок во вселенной мобильной разработки. Друг, вдохновившись моим успехом, пусть и первоблиннокомным, также ударился в разработку игр, но с одной особенностью — он не стал делать оригинальную игру, а решил забабахать клон известной игры, аргументируя это тем, что в этом случае не придется заниматься продвижением — ведь оригинальную игру постоянно скачивают, ее проходят, и людям хочется еще, так они рано или поздно доберутся и до его клона. Но клон был не тупая копирка — он добавил одну фичу, которая изменила игровой процесс и сделала его немного сложнее, но интереснее. Впоследствии, как мне и ему думается, это и сыграло свою роль — его игра одно время держалась на втором месте в Google Play Market, то есть сразу после оригинальной игры. Я же первое время скептически относился к этой затее. Хотя друг мне говорил, что нужно продолжать двигаться в этом направлении, после провала, хоть и ожидаемого, моей первой игры, я совсем перестал этим заниматься и ушел в подполье.

Но в этой жизни все циклично. Успех теперь уже игры друга вновь зажег во мне интерес к мобильной разработке и я пошел по его стопам — я начал делать клон этой же самой игры. Инструментом для разработки стал фреймворк Unity, только потому, что я неплохо знал C# (писал на нем диплом), хотя игра была двумерной и использовать такую мощную штуку для создания 2D игры было нелогично, но меня это не особо волновало. Клон игры я делал в сумме месяца три, но между двумя и одним месяцем работы вклинился переезд в другой город и поиск работы, потому мой клон появился в Google Play Market осенью 2016 года, спустя год с лишним после последнего обновления моей первой игры (я ею занимался до мая 2015).

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

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

Новая надежда


image
Мне представляется, что глаза во время вдохновения именно так и выглядят

Буду честен — корыстная подоплека меня также преследовала. А кому не хочется заодно подзаработать на своих творениях? Вот и я хотел, и даже кое-какие деньги заработал со своего клона — смешные, но все-таки деньги. Потому создание оригинальной игры не требовало отлагательств. И вот, летом 2017 года, когда я все-таки соизволил начать использовать Макбук по назначению, я задумался не на шутку — что использовать для создания игры на этот раз? Игра 2D, довольно много уровней, есть особенности в движении игрока — что выбрать? И тут на помощь снова пришел мой друг. «Пиши нативное» — сказал он мне. Я подумал и решил –, а чем черт не шутит, попробую использовать всю мощь того, что Apple предоставляет для разработки мобильных игр. Но стоит сделать оговорку — если бы не язык Swift, я бы отказался от этой затеи, потому что Objective C я не воспринимаю, не знаю, это субъективно. Swift мне сразу понравился, я потратил пару вечеров на ознакомление с основными его особенностями и приступил к активным действиям. Я понимал, что я один, и никто мне не поможет, только разве что за деньги, которых нет. То, что прилетало с клона, откладывал и в итоге потратил на айфон для тестирования новой игры.

Итак, я умею (по-крайней мере, я в это верю) программировать, не смыслю ничего в дизайне, в проектировании игровых уровней, в продвижении игры, и нет денег на соответствующих специалистов. В таких жестких рамках приходится напрягать мозги и фантазию, и в конечном итоге родилась авантюрная идея.

Проблемы с дизайном? Значит делаю игру в стиле минимализма — круг белого цвета с узором посередине в качестве игрока и прямоугольники в качестве препятствий. Нужно будет управлять этим кругом, нажимая на левую или правую часть экрана телефона так, чтобы не столкнуться с препятствиями, которые опускаются сверху вниз с одной скоростью, но в разных положениях по оси x (слева, посередине, справа).

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

Но это позволит разбавить игру на еще 15 — 20 уровней, а мне надо больше. Кстати, а сколько вообще уровней будет в игре? И тут мне пришла в голову мысль —, а что, если моя игра в названии будет содержать просто число, означающее количество уровней, но это число будет пересекаться с известной игрой? Я вспомнил головоломку »94%». Прикинув, что большинство людей ленивы и им хочется быстрее добраться до интересующей их игры, набирая на клавиатуре мобильного телефона »94», они вряд ли будут переключать раскладку в поисках заветного знака »%», а просто нажмут «Найти» после ввода двух цифр. Я проверил в App Store — действительно, набрав »94», на первом месте появится игра »94%».

Замечательно, значит я делаю игру в минималистическом стиле с названием 94. Заранее предполагаю, что проблемы с дизайном и продвижением решены. Ведь, как я предполагал, игра с точным совпадением по названию в строке поиске должна показываться выше всех, или хотя бы в первой десятке (ага, размечтался). Но как придумать 94 уровня, причем интересных и разнообразных, чтобы после первой десятки пользователь не зевнул во весь рот и не удалил игру. Добавил новые виды стен — тройные (то есть три стены с двумя «дырками») и тройные с подвохом (только через одну из «дырок» можно пройти, я их про себя называл тройные стены с обманом). Но все равно мало. Может быть, с игроком (кругом) что-то сделать?

Конечно же, все на поверхности. Пусть с каждым новым игровым блоком (я решил 94 уровня разделить на блоки, или эпизоды, 10 блоков по 9 уровней и последний с 4 уровнями) игрок начинает по-другому двигаться. То есть нажатие на половины экрана телефона те же, а реакция другая. Так появились следующие типы движений игрока:

  1. Тап влево — движение влево, тап вправо — движение вправо.
  2. Движение при тапе влево медленнее, чем при тапе вправо, и наоборот.
  3. При движении игрока тянет влево, нужно тапать по левой стороне экрана, чтобы он отталкивался вправо, и наоборот (для таких типов добавил двойные стены — получилось что-то вроде flappy bird по вертикали — я эту аналогию уже в конце разработки провел).
  4. Тап влево — движение вправо, тап вправо — движение влево (далее инверсия).
  5. Пункт 2 + инверсия.
  6. Пункт 3 + инверсия (то есть игрока тянет вправо, нужно тапать слева, чтобы он притягивался влево).
  7. Акселерометр — наклонять телефон влево и вправо для соответствующего передвижения игрока.


Таким образом я набрал 7 эпизодов по 9 уровней. Что дальше? А дальше все просто — начинаю комбинировать все эти движения. Пусть в начале уровня будет простое движение, затем в середине оно поменяется на инверсионное. Вариаций куча, так я наполнил 90 уровней. А последние 4 я специально сделал особняком от остальных — в этих уровнях движения меняются рандомно. То бишь есть набор движений, который может выпасть, но выбор происходит случайно. Например, простое движение может поменяться на движение с притягиванием вправо или влево.

Итак, закончив свое детище, я был в следующем положении — игра в минималистическом стиле с названием »94», означающее лишь количество разнообразных уровней, которые нужно пройти. Подобных игр я не нашел — сделал вывод, что она оригинальная, чего я и добивался. Вдобавок ко всему я решил, что если нет букв в названии, то и в игре их не будет, все постарался сделать интуитивно понятным без слов. Потом оказалось, это дало мне неплохое преимущество — игру можно распространять во всех странах, не заморачиваясь с локализацией, которая тоже денег стоит. Все сложилось как нельзя лучше. Добавив рекламку и простенькую обучашку, я атаковал великий и ужасный App Store (эй, чего так дорого-то? Это только за год?!)

Империя соблазна наносит ответный удар


image

Я долго к этому подводил, и вот итог — я опять обоср опростоволосился. Игра не взлетела, я ее еле-еле нашел где-то в районе 200 места, где она и по сей день находится (выложил я ее в начале ноября). Я не понимаю, что не так — почему какие-то непонятные приложения с радиостанциями (94.7 с какими-то буквами, не помню), с играми, в которых нет числа 94, а только либо 9, либо 4, выше, чем моя игра. Видимо я ошибся в том плане, что результаты поиска выстраиваются не по совпадению в имени, а по количеству скачиваний, хотя это бред, если я ищу 94, значит мне не нужны «Угадай слово» или «IQ тест». Обидно, но думаю, что тут нужно достаточно глубоко понимать процесс ранжирования игр в магазинах, а информации об этом не очень много (хотя может я плохо искал).

Как ни крути, но без сторонней помощи в продвижении, видимо, не обойтись. Мне интересно, много ли таких же программистов, столкнувшихся с проблемой продвижения при минимальном денежном запасе? Отсутствие денег убивает мотивацию продолжать что-то делать дальше, все равно о твоем продукте никто не узнает. Уже губу раскатал, что после выстрела игры на iOS начну пилить для Android, ну-ну.

Итог


Хоть и нелегка судьба инди-разработчика, есть и светлая сторона сего увлечения. За два года непрофессиональной разработки мобильных игр я узнал много интересного в работе операционных систем Android и iOS, особенности разработки под каждую из них, особенности работы с цифровой подписью и выкладыванием приложений в магазин (чувство после публикации твоей игры в каждом из магазинов просто непередаваемо). Один клон игры скачали 150 тысяч человек, второй 30 тысяч человек (да, я сделал два клона, плохие поступки приятнее совершать). Освоил, надеюсь, хотя бы на базовом уровне такие языки, как Lua, C# и Swift, в процессе разработки на последнем изучил многие паттерны проектирования, парочкой даже воспользовался для решения возникших задач. Хотя код по большей степени далеко не оптимальный, я сам чувствую, что скилл разработки поднялся, но развиваться есть куда. Приятный бонус в виде дополнительного заработка (монетизировал только с помощью рекламы).

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

Спасибо за внимание, помните самое главное — лучше попробовать, и пожалеть, чем не попробовать, и пожалеть еще больше. Дерзайте, все в ваших руках, если вы ждете знака начать что-то делать — то вот он, вперед!

© Habrahabr.ru