Как сотрудник банка с гуманитарным образованием стал разработчиком мобильных игр Статьи редакции

В редакцию рубрики «Рынок игр» пришло письмо от юриста Максима Бондаря, работающего в крупном банке, который, прочитав материал о быстром росте мобильного рынка в России, решил сделать свою собственную игру.

Максим рассказал о том, как он, не умея программировать и не имея опыта в дизайне и написании мобильных игр, смог запустить собственное приложение Avoid It! на двух платформах.

Добрый день, уважаемая редакция любимого ЦП.

Меня зовут Максим, мне 21 год.

Я хотел бы поделиться с читателями опытом создания игры для iOS и Android с полнейшего нуля — без каких-либо знаний программирования и с гуманитарным образованием. Рассказать о том, что мне пришлось пройти, с какими проблемами столкнуться, и как я их решал.

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

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

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

Let's begin.

Зарождение идеи

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

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

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

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

Для начала я поставил себе дедлайн: выпустить игру на любой (iOS или Android) из платформ до 1 января 2015 года. Я не знал, как я это сделаю. И этот факт лишь повышал градус энтузиазма.

Итак, когда я понял, что хочу делать игру, передо мной стал очевидный вопрос: «А на какую же игру у меня всё-таки хватит мозгов для начала?». Здесь было бы уместно рассказать об исследовании рынка, выявлении трендов и прочей ерунде. Но, к счастью, идея ко мне пришла сразу.

Я думаю, многие из вас играли в Counter Strike или хотя бы слышали о таком. В те добрые времена, лет семь назад, ходил миф (а может это была и правда) о том, что вот эта игра помогает развивать реакцию для игры в CS. А еще, если верить легенде, подобный тест проходят американские военные пилоты и они могут продержаться вживых более двух минут (мой рекорд, к слову, был около 25 секунд).

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

Как вы уже догадались, я решил сделать что-то похожее для iOS или Android. Просто потому, что в ней прикольно убивать время, а Flappy Bird меня ну никак не впечатляла, как и творения от Ketchapp.

В поисках себя

Следующим вопросом после выбора игры, стал: «А как же всё-таки сделать игру?». Любой адекватный человек сначала хотя бы поинтересовался, какие есть способы создания игр, на каких языках и с помощью каких инструментов они написаны, как сделать игру кроссплатформенной и так далее.

Но это ведь адекватный человек так поступил бы, а речь идет обо мне. Я вспомнил, что недавно смотрел Keynote, где Apple представила новый язык программирования — Swift. Мужик, который презентовал Swift, прямо на презентации написал игру с дирижаблем. Я вспомнил этот момент и мне показалось, что Swift сможет выучить даже ребенок.

Первым делом я зашел на сайт Apple и скачал книгу The Swift Programming Language. Прочитав пару страниц, у меня возникли два вопроса:

  1. Неужели этот мужик из презентации настолько умен, что смог за несколько минут на сцене написать подобие игры?
  2. Неужели я такой тупой, что не могу понять элементарных вещей?

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

Каким-то чудом я попал в iTunes U на курсы Programming Methodology (Stanford) c веселым профессором-индусом Мераном Сахами (Mehran Sahami). Курс был посвящен языку Java. Я решил, что это будет неплохим началом. Я знал о том, что Android написан на Java.

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

Я честно смотрел уроки и выполнял домашние задания с Karel the Robot и другие веселые штуки, что помогло мне разобраться в основах. Спустя две недели я подумал, что уже стал разработчиком 99 уровня, и начал искать уроки, как написать игру на Android. Забегая наперед скажу, что я собираюсь все-таки досмотреть курс, когда доведу игру до ума.

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

Знакомство с Unity 3D или как спать по три-пять часов и оставаться в здравом рассудке

Погуглив еще некоторое время, я очутился на сайте игрового движка Unity 3D. Мне понравилось описание и, недолго думая, я скачал его. Когда я впервые открыл Unity, то почувствовал пилотом Boeing 747: кол-во различных элементов интерфейса ввело меня в когнитивный диссонанс (прям как первое знакомство с Photoshop). К тому моменту я уже рассказал многим, что хочу научиться программировать и написать свою игру (я люблю так делать, чтобы не было шанса отступить от цели). Пути назад нет. Так я начал изучение Unity.

После недели, проведенной за разными уроками по Unity, я понял, что еще не все потеряно. Дело было к концу августа и сроки уже поджимали. Так как у меня маленький ребенок, который сразу же нападает и начинает крушить ноут, если я его включаю, то до 21:00-22:00 (пока ребенок не ляжет спать) я не мог заниматься игрой. А еще я решил усложнить себе жизнь и поставил условие: пока не выпущу игру, не ложиться спать раньше 02:00.

На работу я вставал в ближе к семи, поэтому мне показалось, что четырех-пяти часов на сон должно вполне хватить. Хотя и до этого я частенько засиживался, но обычно старался до 2:00 уже спать.

И вот я принялся рисовать дизайн. Учитывая, что я не дизайнер (хоть и знаю что-то в Photoshop), первые прототипы были очень ущербными.

Когда я показал первые макеты коллегам на работе и жене, на меня смотрели с сожалением и не знали, как ответить, чтобы не обидеть. Но это мелочи, потому что я привык жить по принципу «большинство всегда ошибается» и продолжал верить, что все правильно делаю.

Я, конечно, понимал, что мой дизайн был далек от идеала, но на тот момент он мне казался «ниче таким». Забегая наперед, скажу, что дизайн я переделывал раз пять. Меня вдохновила игра Dots. Мне нравится их простой и красивый стиль.

В перерывах между редизайном я программировал игру. Так как материалов по Unity 3D довольно много, особого труда с написанием кода я не испытывал. Ответы на все вопросы у меня получалось нагуглить в течение 5-45 минут. Но, стоит заметить, что вначале, даже при наличии готовых решений, разбираться в примитивном (для нормальных разработчиков) коде приходилось по несколько часов. Я не просто копипастил решение, а пытался разобраться и написать по-своему. Естественно, поначалу это не всегда удавалось.

Первые проблемы с Unity

Начал писать игру я сразу на двух языках: JavaScript (UnityScript) и C#. Связано это с тем, что решения на форумах я находил то на JavaScript, то на C#. Когда я закончил писать прототип игры, а это случилось примерно недели через две, меня начало смущать примерно одинаковое количество скриптов JavaScript и C#.

Снова погуглив, я понял, что так быть не должно. И я принялся переписывать все на JavaScript (он показался мне проще, чем C#). Потратив один день на «перепись», я начал замечать, что большинство примеров-то в интернете именно на C#. И взялся переписывать все обратно.

Совет: Чтобы сэкономить свое время, изучайте все тонкости движка заранее, а не делайте все поспешно и бездумно, как я.

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

Сделать их было несложно, а вот багов, связанных с ними, в самом конце оказалось больше всего.

Закончив с «фишками», я прикрутил API для совершения покупок и leaderboard.

Mission completed!

На дворе был только ноябрь, и мне казалось, что игра готова к выпуску, а я справился с задачей раньше времени. Изначально я хотел выпустить свою игру через издателя, поэтому наделал скриншотов и написал в Ketchapp письмо с заголовком «Amazing $1 000 000 game is looking for a publisher», в котором я очень уверенно рассказывал, что моя игра просто взорвет App Store и принесет издателю десятки миллионов долларов.

Конечно же, издатель не смог пройти мимо такого заголовка и через два дня я получил письмо с просьбой расшарить на них игру в TestFlight. TestFlight — это такая штука, с помощью которой можно предоставить доступ к игре внешним пользователям (тестировщикам). Спустя три дня у них уже была на тесте моя игра. После чего писем от Ketchapp я больше не получал.

Логический вывод: игра — г***о

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

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

4 декабря Apple сообщили, что дедлайн для запуска приложения в App Store — 18 декабря.

18 декабря, четыре утра, уже через три часа мне нужно вставать на работу, а я всё еще делаю скриншоты для App Storе. С горем пополам к пяти часам утра я залил игру и лег спать до семи.

Процесс Review в App Store, как я узнал из разных форумов, обычно занимает пять-десять дней. Поэтому мне казалось, что я всё успеваю до 1 января. Но придя вечером с работы, я обнаружил, что забыл включить покупки в приложении, которые отключил при последнем тестировании.

Естественно, приложение пришлось перезагружать и выставлять снова. Даже несмотря на то, что по американскому времени я вроде уложился в срок, моя игра не прошла Review в 2014 году.

Первая статистика и разочарование

К сожалению или к счастью, мое приложение опубликовали аж шестого января. За три недели ожидания публикации в App Store я успел исправить ряд багов и начал делать Android-версию игры.

Обрадовавшись, что моя игра наконец выставлена, я принялся рассылать всем друзьям во «ВКонтакте» приглашение скачать игру и дать фидбек. Но вскоре я обнаружил, что у меня не работают встроенные покупки. Этот факт меня не очень обрадовал и я решил еще раз протестировать сборку игры, которую залил. При тесте покупки работали, значит, проблема была не в игре. Я решил зайти посмотреть что же творится у меня в iTunes Connect (личный кабинет разработчика Apple). И это было правильным решением.

Оказалось, что я просто забыл опубликовать покупки. Этот момент я быстро исправил и стал ждать у моря погоды.

В первый день было семь установок игры, на второй — 65, а на третий — 16. «Че за ****** (жесть)?», — подумал я, но надежда все еще оставалась. Увы, дальше было только хуже: с каждым днем количество инсталлов все падало и падало, и через две недели вообще дошло до нуля.

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

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

Кстати, когда мне пришла идея запустить игру, я был настолько уверен, что ничего подобного еще не выпущено, что даже не удосужился прошерстить App Store на наличие аналогичных игр. Естественно, когда я уже опубликовал игру, я начал искать клонов, и с радостным сожалением обнаружил, что такие игры есть. И их много. Почему «радостным сожалением»? Потому что я наткнулся на игру Red Bit Escape, качество которой даже нельзя назвать плохим. Она ужасна. Но при всей её ужасности, в leaderboard было 1 700 000 пользователей на момент написания статьи.

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

Кстати, параллельно с обновлением игры на iOS, я выставил игру и на Android.

Попытка №2

29 числа вышел первый апдейт приложения, после которого я думал, что заработаю хоть 10$. Но не тут-то было. Утром 30 января я получил «письмо счастья» от Google. Мне забанили аккаунт AdWords на месяц, а выручку «раздали крестьянам» (вернули рекламодателям) за то, что у меня был слишком высокий CTR (соотношение показов и кликов по рекламному объявлению), который невозможно достичь легальными путями.

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

Я был уверен, что все мои действия абсолютно законны, так как я сидел с тестового аккаунта. Увы, я ошибся. Теперь уже месяц игра висит в App Store без рекламы, люди наслаждаются ad-free-геймплеем, а мои $3, которые на тот момент я честно заработал с рекламы, улетели в трубу.

Вывод: всегда читайте условия и правила предоставления услуг. Иначе можете попасть на деньги. Хорошо, что у меня была незначительная сумма.

Так что же случилось со скачиваниями? После апдейта, как видно на графике ниже, показатели значительно выросли, но не надолго. Скачивания шли, пока игры, к которым я привязался в ключевых словах (Looney Tunes Dash, WWE Immortals и прочие), были еще на слуху. Как только они пропали из топа — пропали и скачивания.

Вывод: я снова что-то сделал неправильно.

Попытка №3

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

Найти новую площадку для рекламы проблемы не составило. После короткого изучения всех за и против разных площадок выбор пал на Chartboost. А для мультиплеера я выбрал сервис Nextpeer.

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

На Android после некоторых «танцев с бубном» мультиплеер все-таки заработал, а вот что касается iOS, все было не так радужно. По какой-то причине плагин не хотел запускаться. Я начал долбить службу поддержки, так как мой релиз задерживали только неполадки геймплея.

В итоге через два дня мне ответил сооснователь Nextpeer Итамар. Он быстро вник в суть проблемы и скинул мне какой-то патч для Xcode, после чего игра должна была завестись. И действительно, ошибки в Unity пропали, но мультиплеер так и не начал работать правильно. Спустя еще несколько дней разбирательств, Итамар предложил мне поставить бета-версию обновленного сервиса, с чем я согласился. И не зря — мультиплеер заработал, а интерфейс стал намного красивее.

В завершение

С горем пополам я пофиксил еще некоторые баги, сделал видео-превью и отправил игру на review в App Store. Попутно решил снова попробовать написать в Ketchapp и Chillingo о публикации моей игры. Если в Ketchapp мое повторное письмо проигнорировали, то ответ от Chillingo я получил через два дня. Директор по продажам Бучанан Леви (Buchanan Levi) сообщил мне, что они, к сожалению, не публикуют уже выпущенные игры, но я могу всегда обратиться к нему с будущими проектами.

Сколько я заработал? Ничего. А точнее — $3, которые AdMob списал обратно рекламодателям. Финансовые результаты — плачевные, но зато опыта набрался. Если кому-то будет интересно, как развиваются события у новоиспеченного инди-разработчика — с радостью отпишусь в комментах или напишу еще одну статью, в которой отвечу на все вопросы и поделюсь еще своим скромным опытом и взглядом на геймдев со стороны чайника.

В планах — нормальная аналитика и новая игра.

Итак, выводы:

  1. Никогда не бойтесь начинать и изучать что-то новое. Это всегда полезно.
  2. Перед тем, как начинать свой проект, будь то игра или благотворительная организация, всегда имейте план действий и придерживайтесь его. Иначе вы рискуете сорвать все сроки и сбиться с пути.
  3. Ставьте себе нереальные цели и расскажите о них как можно большему количеству друзей и знакомых, чтобы у вас не было шанса отступить. Психология последовательности дальше сделает свое дело.
  4. Будьте готовы к тому, что для завершения проекта вам придется проявить настойчивость и принципиальность. У вас, скорее всего, будут моменты, когда вы перегорите и захотите забить. Не давайте эмоциям взять верх. Всегда следуйте своему плану.
  5. Смиритесь с тем, что всегда будут люди, которые будут отговаривать и демотивировать вас. Говорить, что вы занимаетесь не тем и у вас ничего не выйдет. Просто забейте на таких людей. Всегда легче критиковать, чем сделать что-то самим. Большинство всегда неправы. Имейте мужество сказать «нет» всем вокруг и продолжать идти к своей цели.
  6. В моменты, когда вы устали и уже не можете заниматься проектом, — сделайте небольшую паузу. Осмотритесь вокруг, займитесь другим делом и подумайте. Именно в такие моменты вы сможете увидеть свой проект и его недостатки со стороны, а так же свериться с планом и подкорректировать его.
  7. Никогда не сдавайтесь. Помните, что у вас есть цель которую нужно достичь любой ценой. А средства сами собой найдутся.

Чтобы написать колонку для ЦП, ознакомьтесь с требованиями к публикуемым материалам.

0
106 комментариев
Написать комментарий...
Pavel Fedorov

Пойду поклацаю на рекламу что ли.

Ответить
Развернуть ветку
Bond

Смотрите, до второго бана не наклацайте ) Там легко это все вычисляется.

Ответить
Развернуть ветку
Макс Бондарь

Хорошая тактика, кстати... Заходишь в игры конкурента, кликаешь на каждую рекламу и оставляешь конкурента без заработка.

Надо будет взять на вооружение ;)

Ответить
Развернуть ветку
Влад Харламов

да это идея для стартапа! Надо сделать такой сервис :-)

Ответить
Развернуть ветку
Макс Бондарь

Сервис убивания заработка для недобросовестных конкурентов? :)

Ответить
Развернуть ветку
Влад Харламов

ага, для устранения конкурента

Ответить
Развернуть ветку
Sergey Babaev

боюсь за год ничего кроме этого сервиса на рынке и не останется) а потом появятся сервисы по убиванию убивающих сервисов к тому же) А если серьезно, там конечно не все так просто работает

Ответить
Развернуть ветку
Влад Харламов

имхо если нанять 1000 школьников, чтобы каждый из них за час ткнул по 20 раз на рекламе в игре - и гуглплей гарантированно забанит аккаунт adwords. Разве не так?

Ответить
Развернуть ветку
103 комментария
Раскрывать всегда