Картинка здесь эта потому лишь, что «Звездных воин» фанат я, и телефон тут есть еще
Доброго времени суток. Меня зовут Александр, я фронтенд-разработчик в небольшой компании, но речь в статье пойдет о моем хобби, если его можно так назвать – разработка мобильных игр. Хочу поведать историю моего знакомства и дальнейшего погружения в эту область и поделиться опытом с теми, кто хочет себя попробовать в качестве инди-разработчика, но сомневается. Также интересно узнать мнение опытных разработчиков по поводу тех идей, которые я пытался реализовать. Начну, пожалуй, издалека.
Не так давно, в одной далекой-далекой сибирской провинции
В настоящий момент я проживаю в культурной столице необъятной нашей родины, но в 2015 году, находясь в родном сибирском городе одного далекого региона на очередных умопомрачительных зимних каникулах, я сидел дома и не знал, чем себя занять, так как выходить на улицу в минус 30 градусов желания особо не было. Я учился в местном институте, грубо говоря, на программиста, мне приглянулась эта специальность еще со школы, когда родители отдали меня на курсы программирования для дополнительного образования. Программировать мне нравилось, учиться в институте — нет.
Я сидел за компьютером, как вдруг неожиданно прилетела в голову одна интересная мысль – почему бы не попробовать сделать простенькую мобильную игру? Вообще, мысль не совсем неожиданная, я был под впечатлением от ошеломляющего успеха одной игры про птичку, которая летала между трубами, и тот факт, что её сделал один человек, периодически всплывал в голове, но времени на обдумывание и взвешивание как-то не хватало, ведь помимо учебы я еще и подрабатывал. Но вот зимние каникулы, на улице мороз – была, не была, попробую сделать что-то простое и легкое.
Таки начав покорение этого совершенно нового для меня мира, в конечном итоге я сделал игру из категории «тупо убить время без напряга мозга» с помощью кроссплатформенного фреймворка Corona SDK, однако сбилдить и выложить её я смог лишь на Google Play Market, так как для App Store нужен был Макбук. Конечно, можно было заморочиться и пойти обходными путями, но игра не стоила свеч – слишком корявая она вышла. Но сам факт, что я взялся за это дело и довел его до конца, порадовал меня, и я понял, что для стоящей поделки мне нужно подтянуть знания и умения (на игру я потратил месяцы в итоге, но тут стоит учитывать, что, не успев сделать ее за каникулы, далее делал все на выходных, ибо сил в будние дни совсем не хватало).
Кроме того, я столкнулся с одной проблемой, которая дает о себе знать до сих пор – как продвигать свою игру, если совсем нет на это денег. Тогда я не стал заморачиваться (причина та же – игра отстой), но теперь эта кость в моем горле не дает мне спокойно спать и пить чаёчек с печеньками.
Атака клонов
Какой только гадостью ни займешься, лишь бы игру скачивали
Благо, я был не одинок во вселенной мобильной разработки. Друг, вдохновившись моим успехом, пусть и первоблиннокомным, также ударился в разработку игр, но с одной особенностью – он не стал делать оригинальную игру, а решил забабахать клон известной игры, аргументируя это тем, что в этом случае не придется заниматься продвижением – ведь оригинальную игру постоянно скачивают, ее проходят, и людям хочется еще, так они рано или поздно доберутся и до его клона. Но клон был не тупая копирка – он добавил одну фичу, которая изменила игровой процесс и сделала его немного сложнее, но интереснее. Впоследствии, как мне и ему думается, это и сыграло свою роль – его игра одно время держалась на втором месте в Google Play Market, то есть сразу после оригинальной игры. Я же первое время скептически относился к этой затее. Хотя друг мне говорил, что нужно продолжать двигаться в этом направлении, после провала, хоть и ожидаемого, моей первой игры, я совсем перестал этим заниматься и ушел в подполье.
Но в этой жизни все циклично. Успех теперь уже игры друга вновь зажег во мне интерес к мобильной разработке и я пошел по его стопам – я начал делать клон этой же самой игры. Инструментом для разработки стал фреймворк Unity, только потому, что я неплохо знал C# (писал на нем диплом), хотя игра была двумерной и использовать такую мощную штуку для создания 2D игры было нелогично, но меня это не особо волновало. Клон игры я делал в сумме месяца три, но между двумя и одним месяцем работы вклинился переезд в другой город и поиск работы, потому мой клон появился в Google Play Market осенью 2016 года, спустя год с лишним после последнего обновления моей первой игры (я ею занимался до мая 2015).
Помимо этого, еще мой друг в своей игре (она уже на тот момент была на втором месте) поместил ссылку на мою, и вот до сир пор задаюсь вопросом, что повлияло на успех моего клона – та же фича, или поток пользователей с игры друга. Но факт остается фактом – моя игра какое-то время держалась на третьем месте, но, к сожалению, на данный момент она в районе 30 места, но это меня уже не трогает – клон он и есть клон – паразитизм на оригинальной игре не особо прельщает разработчика, который хочет сделать что-то свое, классное и нравящееся людям.
Собственно, после падения клона все ниже и ниже по ступенькам маркета я решил, что пора уже серьезно подойти к делу и сделать, наконец, игру, которую я хотел сделать самой первой, но понял, что не потяну и отложил до лучших времен. Времена настали – я набрался неплохого опыта в процессе разработке на работе и за плечами были целых две полноценных игры. Но я хотел все-таки залезть и в яблочную обитель, потому собрался с силами, поголодал, походил пешочком на работу, продал все, что можно было продать и купил себе Макбук. Правда, за разработку игры я сел только спустя полгода после его покупки – что поделать, такова натура ленивого программиста, пока не ударит муза творчества и логики, не начнешь неистово стучать по клавишам своими программистскими пальцами.
Новая надежда
Мне представляется, что глаза во время вдохновения именно так и выглядят
Буду честен – корыстная подоплека меня также преследовала. А кому не хочется заодно подзаработать на своих творениях? Вот и я хотел, и даже кое-какие деньги заработал со своего клона – смешные, но все-таки деньги. Потому создание оригинальной игры не требовало отлагательств. И вот, летом 2017 года, когда я все-таки соизволил начать использовать Макбук по назначению, я задумался не на шутку – что использовать для создания игры на этот раз? Игра 2D, довольно много уровней, есть особенности в движении игрока – что выбрать? И тут на помощь снова пришел мой друг. «Пиши нативное» — сказал он мне. Я подумал и решил – а чем черт не шутит, попробую использовать всю мощь того, что Apple предоставляет для разработки мобильных игр. Но стоит сделать оговорку – если бы не язык Swift, я бы отказался от этой затеи, потому что Objective C я не воспринимаю, не знаю, это субъективно. Swift мне сразу понравился, я потратил пару вечеров на ознакомление с основными его особенностями и приступил к активным действиям. Я понимал, что я один, и никто мне не поможет, только разве что за деньги, которых нет. То, что прилетало с клона, откладывал и в итоге потратил на айфон для тестирования новой игры.
Итак, я умею (по-крайней мере, я в это верю) программировать, не смыслю ничего в дизайне, в проектировании игровых уровней, в продвижении игры, и нет денег на соответствующих специалистов. В таких жестких рамках приходится напрягать мозги и фантазию, и в конечном итоге родилась авантюрная идея.
Проблемы с дизайном? Значит делаю игру в стиле минимализма — круг белого цвета с узором посередине в качестве игрока и прямоугольники в качестве препятствий. Нужно будет управлять этим кругом, нажимая на левую или правую часть экрана телефона так, чтобы не столкнуться с препятствиями, которые опускаются сверху вниз с одной скоростью, но в разных положениях по оси x (слева, посередине, справа).
Отлично, начало положено, но это слишком примитивно и быстро надоест. Усложняем — пусть с каждым уровнем меняется либо количество препятствий (для себя я их называл стенами), либо их качество: пусть стены либо двигаются слева направо и наоборот, либо вращаются против и по часовой стрелке, либо медленно исчезают, либо различные вариации выше сказанного.
Но это позволит разбавить игру на еще 15 — 20 уровней, а мне надо больше. Кстати, а сколько вообще уровней будет в игре? И тут мне пришла в голову мысль — а что, если моя игра в названии будет содержать просто число, означающее количество уровней, но это число будет пересекаться с известной игрой? Я вспомнил головоломку «94%». Прикинув, что большинство людей ленивы и им хочется быстрее добраться до интересующей их игры, набирая на клавиатуре мобильного телефона “94”, они вряд ли будут переключать раскладку в поисках заветного знака “%”, а просто нажмут “Найти” после ввода двух цифр. Я проверил в App Store — действительно, набрав “94”, на первом месте появится игра “94%”.
Замечательно, значит я делаю игру в минималистическом стиле с названием 94. Заранее предполагаю, что проблемы с дизайном и продвижением решены. Ведь, как я предполагал, игра с точным совпадением по названию в строке поиске должна показываться выше всех, или хотя бы в первой десятке (ага, размечтался). Но как придумать 94 уровня, причем интересных и разнообразных, чтобы после первой десятки пользователь не зевнул во весь рот и не удалил игру. Добавил новые виды стен — тройные (то есть три стены с двумя “дырками”) и тройные с подвохом (только через одну из “дырок” можно пройти, я их про себя называл тройные стены с обманом). Но все равно мало. Может быть, с игроком (кругом) что-то сделать?
Конечно же, все на поверхности. Пусть с каждым новым игровым блоком (я решил 94 уровня разделить на блоки, или эпизоды, 10 блоков по 9 уровней и последний с 4 уровнями) игрок начинает по-другому двигаться. То есть нажатие на половины экрана телефона те же, а реакция другая. Так появились следующие типы движений игрока:
- Тап влево — движение влево, тап вправо — движение вправо.
- Движение при тапе влево медленнее, чем при тапе вправо, и наоборот.
- При движении игрока тянет влево, нужно тапать по левой стороне экрана, чтобы он отталкивался вправо, и наоборот (для таких типов добавил двойные стены — получилось что-то вроде flappy bird по вертикали — я эту аналогию уже в конце разработки провел).
- Тап влево — движение вправо, тап вправо — движение влево (далее инверсия).
- Пункт 2 + инверсия.
- Пункт 3 + инверсия (то есть игрока тянет вправо, нужно тапать слева, чтобы он притягивался влево).
- Акселерометр — наклонять телефон влево и вправо для соответствующего передвижения игрока.
Таким образом я набрал 7 эпизодов по 9 уровней. Что дальше? А дальше все просто — начинаю комбинировать все эти движения. Пусть в начале уровня будет простое движение, затем в середине оно поменяется на инверсионное. Вариаций куча, так я наполнил 90 уровней. А последние 4 я специально сделал особняком от остальных — в этих уровнях движения меняются рандомно. То бишь есть набор движений, который может выпасть, но выбор происходит случайно. Например, простое движение может поменяться на движение с притягиванием вправо или влево.
Итак, закончив свое детище, я был в следующем положении — игра в минималистическом стиле с названием “94”, означающее лишь количество разнообразных уровней, которые нужно пройти. Подобных игр я не нашел — сделал вывод, что она оригинальная, чего я и добивался. Вдобавок ко всему я решил, что если нет букв в названии, то и в игре их не будет, все постарался сделать интуитивно понятным без слов. Потом оказалось, это дало мне неплохое преимущество — игру можно распространять во всех странах, не заморачиваясь с локализацией, которая тоже денег стоит. Все сложилось как нельзя лучше. Добавив рекламку и простенькую обучашку, я атаковал великий и ужасный App Store (эй, чего так дорого-то? Это только за год?!)
Империя соблазна наносит ответный удар
Я долго к этому подводил, и вот итог — я опять
Как ни крути, но без сторонней помощи в продвижении, видимо, не обойтись. Мне интересно, много ли таких же программистов, столкнувшихся с проблемой продвижения при минимальном денежном запасе? Отсутствие денег убивает мотивацию продолжать что-то делать дальше, все равно о твоем продукте никто не узнает. Уже губу раскатал, что после выстрела игры на iOS начну пилить для Android, ну-ну.
Итог
Хоть и нелегка судьба инди-разработчика, есть и светлая сторона сего увлечения. За два года непрофессиональной разработки мобильных игр я узнал много интересного в работе операционных систем Android и iOS, особенности разработки под каждую из них, особенности работы с цифровой подписью и выкладыванием приложений в магазин (чувство после публикации твоей игры в каждом из магазинов просто непередаваемо). Один клон игры скачали 150 тысяч человек, второй 30 тысяч человек (да, я сделал два клона, плохие поступки приятнее совершать). Освоил, надеюсь, хотя бы на базовом уровне такие языки, как Lua, C# и Swift, в процессе разработки на последнем изучил многие паттерны проектирования, парочкой даже воспользовался для решения возникших задач. Хотя код по большей степени далеко не оптимальный, я сам чувствую, что скилл разработки поднялся, но развиваться есть куда. Приятный бонус в виде дополнительного заработка (монетизировал только с помощью рекламы).
Я думаю, мои неудачи связаны лишь с отсутствием денег, не более. Идей для разработки хватает, но пока я не разберусь с тонкостями продвижения и не найду эти пресловутые не пахнущие бумажки, не вижу смысла делать что-то новое.
Спасибо за внимание, помните самое главное — лучше попробовать, и пожалеть, чем не попробовать, и пожалеть еще больше. Дерзайте, все в ваших руках, если вы ждете знака начать что-то делать — то вот он, вперед!