Добрый день! Я — инди-разработчик (с недавнего времени), 2 года назад, будучи пожарным, пришла в голову мысль создать свою игру на Android. Из опыта было только создание карт под игровые движки Gold Source и Source (на них построены старые добрые: Counter-Strike, Half-Life и многое другое), взяв волю в кулак, решил что я обязательно справлюсь и занялся штудированием интернет-поисковика Google.
Надеюсь, данная статься поможет тем, кто очень хочет, но так и не решился испробовать свои силы в разработке мобильных игр. В статье приведу множество ссылок, которые тем или иным образом помогли мне разработать игру, не имея при этом никакого опыта и знаний в данной сфере.
Осторожно, под катом gif-изображения.
Подготовка
Будучи очень далеким от IT-сферы, строго для себя понял, что первым делом нужно изучить основы программирования, чтобы в дальнейшем понять, смогу ли я хоть что-нибудь, или все-таки нет. Решил приобрести книгу по программированию. Критерием выбора было разжеванная теория с большим количеством примеров её применения. Так, первая книга, которая открыла для меня C++ стала: «Объектно-ориентированное программирование в C++, Р. Лафоре». Лично мне в книге понравилось наличие увесистой теории, объясняющей многие непонятные ранее мне термины, но, после заметил, что многие опытные люди были категорически против данной книги как стартовой точки в изучении программирования. Так или иначе, изучив за месяц всю книгу, попутно выполняя некоторые задания в конце каждой главы, словил себя на мысли, что все довольно хорошо получается и пора двигаться дальше.
Следующим пунктом был выбор движка на котором я смог бы с уверенностью начать разработку. Выбор пал несомненно на Unity, благодаря большому сообществу, высокой популярности, обилию огромнейшего количества обучающих статей — по моему мнению, это лучшее, что можно найти на рынке, особенно для инди-разработчика.
Пришлось прикупить ещё одну книгу по программированию: «Справочник C#, Д. Албахари, Б. Албахари» по причине того, что в Unity основной язык — C#. Благо, знания основ C++ помогли с легкостью обуздать основы C# и смело начать изучение непосредственно Unity.
Для себя решил, что лучшим толчком для создания первой игры будет попытка сделать что-то по аналогии уже готового проекта, а не пытаться высматривать тонну отдельных уроков как сделать то, как сделать это. К моему счастью я наткнулся на Survival Shooter tutorial от Unity, в котором по шагам описывается создание Top Down шутера. Это было как раз то, что я и хотел создать. Найдя переозвученные на русском языке уроки (к сожалению сейчас уроки удалены автором по неизвестной мне причине), я начал делать шаг за шагом свою первую игру.
Первая сцена, запущенная на мобильном девайсе, радости тогда не было предела, сейчас же этот скриншот вызывает только умиление.
Собрав свой Survival Shooter по урокам на YouTube, встал вопрос по созданию своего контента, а именно встал вопрос моделирования. Сразу для себя решил — никаких пиратских 3d Studio Max, в следствие чего сразу же наткнулся на Blender. Изучал основы 3д-редактора по данному видео-курсу. Выбор пал именно на видео-курсы, т.к. они позволили очень быстро начать практиковаться, чего довольно сложно добиться, начиная изучение с книги (но несомненно признаю, книги — лучше). Благо, был кое-какой опыт создания карт для Counter-Strike, Half-Life, что позволило с легкостью начать моделировать уже через пару дней.
Теперь, полностью вооружившись инструментами, я начал разрабатывать игру. По сути, первое время я только и делал, что слал запросы «как сделать ту или иную вещь в Unity», так, со временем начал обрастать полезными знаниями.
Не хочу быть похожим на других
Зомби-шутеров нынче тьма тьмущая. Не хотелось быть каким-то клоном. Встал вопрос того, что же можно сделать такого, чего нет у других. Было принято решение добавить в игру возможность остановки времени. Так, игрок мог остановить время, перестрелять зомби и как ни в чем не бывало продолжить свое передвижение.
Проблемой было то, что все это я придумывал на ходу и сразу же брался за реализацию, пропуская этап планирования. Не допускайте моих ошибок, перед тем, как начать разрабатывать игру, заранее продумайте все до мельчайших деталей, не делайте игру наобум. Моей проблемой было отсутствие какого-либо плана, спеки, или же каких-то выделенных этапов разработки. Все делалось в «реалтайм», придумал, что хочу что-то сделать и сразу же пытался это реализовать, наивно полагая, что я уже все учел в своих размышлениях. Подобная методология разработки, а вернее — её полное отсутствие, привели к тому, что игру приходилось множество раз переделывать, отбрасывать старые идеи, добавлять новые возможности к тому, что не особо то и адаптировано для улучшения (похоже на Agile, но нет, это было «отсутствие опыта»). Как результат — игра разрабатывалась почти полтора года.
Костыли, они такие костыли
По причине полного отсутствия навыков программирования, код получился ну очень «костыльным». Сейчас мне просто стыдно, смотря на свою локализацию текста, которая делалась через оператор if -> else, либо же иные вещи, на которые без Facepalm не посмотреть. Вносить какие-ибо изменения было очень трудно, т.к. в коде присутствовало очень много зависимостей, при которых изменение одной строчки могло повлечь к поломке множества других скриптов. Старайтесь описывать скрипты таким способом, чтобы было как можно меньше зависимостей между ними. Очень полезной будет ознакомление с данной статьей на хабре, в которой описываются различные способы взаимодействия скриптов в Unity.
Тестирование
К вопросу тестирования я подошел не столь должным уровнем. Игра релизилась без предварительного бета-тестирования. Я не хочу сказать, что в финальный билд ушло куча багов, отнюдь, проблема была совсем в ином — после релиза посыпалось множество комментариев о том, что игра банально сложная. На YouTube вылилось множество видеороликов, в которых люди попросту не могли пройти первый уровень. Мне казалось, что они играют большим пальцами ног, но тут была лично моя вина. Тестируя продукт на протяжении всего периода разработки, я не заметил, что научился проходить уровни чуть ли не с закрытыми глазами, в результате чего постоянно подбрасывал усложнения, чтобы игра не казалась слишком легкой. По сути, это очень негативно повлияло на первое впечатление об игре и как результат — её последующий провал. Обязательно перед релизом проведите бета-тестирование. На данный момент в Google Play очень просто сделать закрытое или открытое бета-тестирование. Даже банально перед релизом дайте человеку поиграть некоторое время, чтобы в дальнейшем избежать проблем с играбельностью и сложностью продукта. Для себя строго решил, что игра на начальном этапе должна быть очень легкой, чтобы не отпугнуть игроков.
Монетизация
Выбрав неверную монетизацию: бесплатная урезанная + полная платная я загубил игру считай на корню. Причиной выбора столь устарелой связки было отсутствие опыта, т.к. я банально не знал как встроить рекламу в продукт, как реализовать внутриигровые покупки и как результат, решил пойти по пути наименьшего сопротивления, которое не требовало от меня каких-либо технический знаний. Для себя стойко решил, что на данный момент это худшее, с чего стоило начать. Считаю лучшим вариантом: бесплатная с внутриигровыми покупками и мотивированной рекламой, но здесь опять-таки очень важен баланс между назойливой рекламой и невозможностью пройти уровни без вложений.
Музыка, звуки
Немаловажную роль играет звуковое сопровождение. Большинство звуков и музыки для игры я покупал на audiomicro.com, о чем сейчас немного сожалею в силу дороговизны. На данный момент я бы рекомендовал следующие ресурсы:
— diforb.com. Великолепен для озвучки игрового меню. Выбрав необходимый сет, вы с легкостью сможете создать звуки нажатия, перелистывания и применения различных опций. Пользоваться можно бесплатно, все что от вас требуется — указать ссылку на ресурс где-нибудь в игре.
— freesfx.co.uk. Хороший бесплатный ресурс различных звуков. Благодаря удобному поиску можно с легкостью найти звуки выстрелов, перезарядки и многое другое. Как и с предыдущим, пользоваться можно бесплатно, только не забудьте указать ссылку на ресурс в игре.
— melodyloops.com. Очень хороший ресурс музыки. Платный, но по сравнению с другими, треки здесь очень дешевые. Я смог приобрести 25 композиций за 130$, получив лицензию на неограниченное количество копий. Очень удобный поиск, выбрав понравившийся трек, вы можете отфильтровать список похожих, что поможет Вам очень быстро найти нужные Вам композиции.
Раскрутка
Подобравшись к завершающей стадии разработки, встал вопрос в рекламе игры. Никаких ресурсов на платную раскрутку у меня не было, поэтому выбор пал сугубо на бесплатные методы. Благо, информации по этому поводу достаточно много, приведу некоторые ссылки на статьи с Хабра, которые помогли мне в решении данного вопроса: раз, два. В основном я писал на различных форумах, посвященным играм на андроид, что в конечном итоге дало следующие цифры:
Бесплатная версия игры за период июнь 2016 — январь 2017
— По внешним ссылкам: 1 353 просмотров / 478 установок
— Play Market: 9 674 просмотров / 1 457 установок
— Всего: 11 065 просмотров / 2 101 установок
Платная версии игры за период июнь 2016 — январь 2017
— По внешним ссылкам: 1 919 просмотров / 15 установок
— Play Market: 46 432 просмотров / 214 установок
— Всего: 48 457 просмотров / 246 установок
Как видим, платная версия игры имеет очень большое количество просмотров, это связано с тем, что попасть в новинки платных приложений гораздо легче, чем бесплатных, достаточно 5-10 покупок и игра уже будет занимать сотые позиции, что дает приток просмотров в Google Play. Была надежда, что пользователи будут переходить со страницы платной версии игры на бесплатную, чтобы предварительно проверить что из себя представляет игра, но, к сожалению, как мы можем видеть по статистике, просмотров бесплатной версии гораздо меньше, чем платной.
Релиз
Релиз оказался плачевным, вполне играбельная для меня игра, оказалась нереально сложная для других. Из-за игнорирования бета-тестирования на реальных игроках, пришлось очень не сладко после релиза. Полностью была переделана система управления. Изначально игрок автоматически стрелял при наведении взгляда на врага, что полностью убивало ощущение стрельбы. Игроки порой не понимали, как тут стрелять?! Поэтому было принято решение полностью переделать управление на новый лад. В новой версии автоматическая стрельба была заменена на ручную, что гораздо приукрасила игровой процесс.
Как я уже говорил, ещё одним камнем была сложность. Пришлось переделывать огромный кусок игры, внедряя легкую, среднюю и тяжелую уровни сложности, чтобы угодить как можно большему количеству игроков.
В конечном итоге — я упустил свой шанс более-менее раскрутиться за первые 30 дней, когда игра находилась в «Новинках». Люди просто покупали и возвращали платежи в силу неиграбельности и высокого уровня сложности. Только после множества апдейтов количество возвратов резко сократилось, но было уже поздно, на 31-й день игра пропала с новинок и как результат — количество просмотров, как и собственно скачек камнем рухнуло вниз. Но, самое главное — я смог получить бесценный опыт, пройдя от этапа идеи и закончив это дело суровым релизом, что несомненно радует. Теперь, имея весь этот опыт, уже с большей уверенностью занимаюсь разработкой второй игры, о результатах которой планирую написать уже после релиза. Спасибо и удачи Вам в начинаниях!
Комментарии (40)
perfect_genius
02.02.2017 16:34-3Надеюсь, когда-нибудь появится статья не о возникновении желания создать игру, а о возникновении идеи и попытке её реализовать. А то таких статей уже многовато.
norlin
02.02.2017 16:35Не очень понимаю, в чём разница.
perfect_genius
02.02.2017 17:28Таких статей как эта уже прочитал много, но пока не увидел ту, в которой автор придумал идею для игры и захотел сделать её. Везде просто желание делать игру, любую, обычно клоны других игр.
norlin
02.02.2017 21:21Ну вот у меня есть более-менее оригинальная идея (точнее, там несколько оригинальных идей + несколько "стандартных", но общая идея более-менее своя, если не считать известный жанр). Однако, по факту я ничего ещё не сделал, кроме некоторых набросков гейм-дизайна (но это далеко ещё не полноценный GDD).
Наоборот, повсюду видны посты про "у меня есть супер идея!", но мало кто берётся реализовать её по факту.
perfect_genius
04.02.2017 14:48Поделитесь, или опасно? =)
norlin
04.02.2017 17:17не вижу ничего опасного, но у меня там сейчас всё сумбурно, в кучу и на английском.
perfect_genius
04.02.2017 18:34+1Ого, аж MMORPG.
norlin
04.02.2017 23:52Спасибо за ценный фидбек! :)
perfect_genius
05.02.2017 07:21Я просто не знал что ответить, MMORPG не мой жанр, оценить новизну не смогу =)
Feelnside
02.02.2017 17:00+2Под идеей понимается какой-то технологический стартап? Идею (игра) я собственно реализовал, так же привел результаты по просмотрам / установкам. Или имеется в виду описать процесс разработки игры более детально?
DROS
02.02.2017 17:15-15ОФФ.
Сижу в сети с лимитированного, жутко тормозного и-нета… Спасибо за 2 гифки, по 12 и 15 метров. Я их долго буду помнить.
*хочется сунуть анимацию из игры — для этого есть ютуб.ITurchenko
02.02.2017 19:43+1Попробуйте uBlock. В нём есть функция блокировки больших медиа-элементов на сайте.
Feelnside
02.02.2017 19:50+6Оригиналы весят 9.3 и 8.74 мб. соответственно. Возможно хостинг как-то обрабатывает их (но не уверен). Гифки очень хорошо визуализируют предшествующую мысль. Использовать ролики на ютюб по 4-5 секунд будет немного нерационально, не уверен, что кто-то вообще бы их запускал, да и в силу 2017 года, полагал, что лимитированный интернет потихоньку сходит на нет. Так же руководствовался опытом прочтения множества статей на Хабре, где авторы так же использовали гифки. Ну, извиняй.
stargazr
02.02.2017 18:39… Количество просмотров, как и собственно скачек камнем рухнуло вниз. Но, самое главное — ты смог получить бесценный опыт, пройдя от этапа идеи и закончив это дело суровым релизом, что тебя несомненно радует. Несомненно радует. :'(
Я извиняюсь, если это прозвучало слишком резко, но я не удержался от сарказма.
Прошу не воспринимать это как личное, и относящееся только к описанному случаю.Feelnside
02.02.2017 20:07+1Да, звучит оптимистично :), попробую изложить свою мысль по этому поводу:
По сути, тут два варианта развития событий, можно «уйти в запой», расстроиться, опустить руки и бросить сие дело, изредка вспоминая это как страшный сон да списывая все на ошибку молодости, либо же, можно конструктивно рассмотреть каждую проблему, которые стали причиной не столь ожидаемого результата, понять, почему это произошло, понять, что нужно сделать, чтобы в дальнейшем этого избежать и как результат, начать разработку нового проекта с учетом сделанных выводов относительно предыдущего опыта работы.
Все-таки, опыт нужно ценить, везде, во всем можно и нужно находить положительные моменты, порой люди просто не понимают таких казалось бы простых вещей, оперируя только материальными результатами. Я надеюсь, во второй статье все будет более позитивно относительно результатов, опишу что изменилось по сравнению со старым проектом, ну, даже если мой второй проект провалится, буду держаться на позитивной волне и собственно всем подобного желаю!
nortren
02.02.2017 19:44Молодец! Приятно было читать статью ещё в силу того, что бывшие коллеги(пожарные) и можно сказать и нынешние(тоже ушёл из МЧС в IT).Почему в тестировщики, а не в разработчики сразу, если не секрет??
Feelnside
02.02.2017 20:24Изучать разработку и тестирование считай начал параллельно в одно и тоже время. Уйти в разработку с тем уровнем знаний, который у меня был на тот момент и собственно который у меня есть сейчас — невозможно. Да я любое собеседование провалю по разработке, дело в том, что в силу очень ограниченного времени я изучаю только то, что действительно мне нужно на практике. По сути от C++ или C# я знаю только базовые основы, все остальные знания сугубо направлены на Unity Scripting API, т.к. именно они и нужны мне. Решил идти именно в тестирование, т.к. я был уверен, что там у меня точно все получится, предполагая, что знаний в тестировании нужно меньше, чем в программировании (хотя на практике оказалось все гораздо сложнее, знать нужно очень много, так что, все не так просто, как многие считают, я думаю тестировщики меня поймут). Поэтому, сейчас я прекрасно себя чувствую на работе, будучи тестировщиком, это приносит мне постоянный доход, а разработка игр, эдакое хобби, которое пока является приятной прибавкой к зарплате, ну а там, время покажет, надеюсь рано или поздно доход с разработки игр превысит доход на работе и я смогу смело начать заниматься только своим хобби, мечты одним словом.
Ravaldini
06.02.2017 19:47Интересная статья! Спасибо! Я для андроида крестики-нолики и змейку сделал на Юнити. Хочу тоже сделать свою оригинальную игру.
Wild_ButcheR
07.02.2017 19:38Терпение и труд все перетрут, но, к сожалению, не всегда окупается такой труд…
Feelnside
07.02.2017 19:45Если между строк, то я продал игру одной компании из Китая, но это уже не относится к релизу в Google Play, поэтому не указывал в статье, конечно, могло быть лучше, но, в целом получилось очень даже хорошо.
Virel
07.02.2017 19:38Спасибо за бесценный опыт! =) Сколько же упорства и времени у вас заняло непосредственно изучение языков программирования?
Feelnside
07.02.2017 19:50Если взять изучение основ, то полтора месяца ушло, но я занимался считай каждый день, с утра до ночи, кроме выходных, в выходные отдыхал :) (был 3-х месячный отпуск на написание дипломной работы). Учил теорию и каждую главу прогонял на практике в редакторе. Ну а после уже, сугубо юнити, сугубо уроки, scripting reference и так вот само собой пошло.
Virel
10.02.2017 13:30Благодарю за ответ! А скажите, если бы вам потребовалось создать игру с уникальной механикой, отклоняющейся от канонов какого либо жанра, то как бы вы оценили свои силы? Тоже хочется попробовать сделать игру на дипломный проект… готовлю примерные эскизы, так сказать, и пути отступления, если вдруг… :)
norlin
10.02.2017 14:04Простите, что влезаю в диалог, но ИМХО в создании уникальной механики главное иметь чёткое представление, что именно хочется сделать. Даже не представление, а готовый дизайн-документ с полным описанием механики.
А непосредственно закодить что-либо – это уже не такая проблема.
Feelnside
10.02.2017 21:30На данный момент многие мои идеи останавливают знания. Обдумывая какой-то новый проект, я ловлю себя на мысли, что не вижу четкого понимания как реализовать например какую-нибудь уникальную идею. В случае провала (когда уникальную идею реализовать не получается), я прибегаю к упрощению, до тех пор, пока посредством упорства я все-таки нахожу решение. Так, со временем, необходимость в упрощении уникальных задумок будет спадать, т.к. опыт будет помогать видеть не только идеи, но и их реализации (причем не упрощенные). Поэтому, как упомянул norlin, очень важно перед началом работы четко построить спеку (документ, задачи, описание, эскизы, требования), с помощью которой у тебя появится четкое понимание проекта, понимание того, что ты хочешь видеть в итоге (это как организм человека, можно рассматривать работу сердца, разобрав его на клапаны, а можно смотреть на работу всего организма в целом, видя не только сердце, но и все остальные компоненты, работа которых и делает человека — человеком :) ). Далее потребуются технические знания, которые скажут тебе, получится ли реализовать идею или нет. Если нет, придется пытаться сделать задуманное, изучая очень много технической части. В случае неудачи, подходить к вопросу упрощения задумки до тех пор, пока технических знаний станет хватать на реализацию идеи.
К примеру, вторую игру я не смог бы начать делать, не выпустив первую. Мне просто пришлось бы скорее всего упростить идею до такой степени, что игра получилась бы неинтересной (либо же я бы потратил много времени на попытки реализовать сложные идеи и в конечном итоге прогорел бы (пропал интерес к игре и желание её делать)).
Тут все достаточно сложно, но интересно :)Virel
11.02.2017 19:44Спасибо большое за подробности! =) Пожалуй и правда начать лучше с простого… =)
kprotasov
09.02.2017 19:39Судя по скринам выглядит очень достойно. А можно узнать как она называется, чтоб поиграть?
norlin
Это очень крутая история чисто в силу того, что вы таки выпустили игру. Правильно я понимаю, что с возникновения идеи до первого релиза прошло всего лишь примерно полтора года?
Feelnside
Идею начал развивать ближе к концу января 2015, 2 марта 2015 взял 3-х месячный отпуск на написание дипломной работы (в то время заканчивал институт МЧС), и за 3 месяца помимо отличного диплома, изучил программирование, моделирование и Unity. Эти три месяца очень помогли, если бы не они, то не представляю, как бы я все это успел. После поменял профессию на тестировщика и собственно 25 июня 2016 был релиз. Т.е., от идеи до релиза прошло примерно полтора года, но если посмотреть со стороны занятости, то около 4-х месяцев я вовсе не занимался игрой в силу переквалификации на тестировщика (просто физически не мог делать игру).
norlin
Это нереально круто. Я вот уже полгода вроде как "осваиваю геймдев" (но лишь в свободное время), но пока что не могу похвастаться ни одной законченной игрой. И это при наличии достаточно долгого общего опыта программирования, чем я, собственно, занимаюсь фуллтайм...
Feelnside
Спасибо за приятные комментарии. Вообще, было достаточно сложно, порой по несколько месяцев приходилось подыматься в ~6:30 утра, заниматься игрой, к 10 часам идти на работу и по возвращению с работы снова уделять около 2-х часов разработке. После трех месячного отдыха 1 октября прошлого года начал разработку уже второй игры, с учетом изложенных выше проб и ошибок. На данный момент осталось дело за проработкой уровней. Надеюсь через 1-2 месяца смогу рассказать новую историю по новой игре.
androidformax
Все дело в мотивации, я себя тоже иногда долго распиновываю под зад, и очень часто не получается. Если совмещаешь — очень сложно удержать уровень мотивации.
4ecTHblu
А как это было? Книги, уроки или справочная информация+метод тыка?
Feelnside
Вроде все в статье описал, по программированию: две книги изучил, одна по C++, вторая по C# (к слову вторую книгу до конца не изучил, плавно перешел уже на Unity). Моделирование — посмотрел видео-уроки, которые указывал в статье, собственно после уже был метод тыка, в случае, если что-то хотел сделать, но не знал как, уже точечно искал информацию в интернете (например по созданию человека и анимации для него). Касаемо Unity, методом тыка посмотрел что он из себя представляет, что было не понятно, искал в интернете, ну а потом по урокам на YouTube делал Survival Shooter от Unity и после уже переделывал его под свой лад. В Unity после видео уроков все что не знал, искал в интернете. Например как сделать управление игрока через стики, либо как сделать взрыв, как сделать игровое меню, главное, смотреть несколько страниц по запросам в гугл, чтобы было с чем сравнивать, ибо иногда по запросам могут предложить не совсем хорошее решение. Ну и в конечном итоге, базовые знания сами начинали обрастать уже более углубленными моментами. Ах, да, совсем забыл, Scripting Reference по Unity была главной страницей в браузере :)