Nail Crusher: Как я мобильную игру до релиза доводил
Название игры: Nail Crusher
Жанр игры: Аркада
Платформы выпуска: Android (Play Market, 4pda.ru), iOS (iPhone, iPad на iTunes App Store)
Всем привет! Сегодня я хотел бы рассказать о том, как из идеи может родиться более-менее сносная игра под смартфоны и планшеты, а так же о возможных подводных камнях при разработке и выпуске.
Сразу оговорюсь, что я не обладаю никакими художественными, геймдизайнерскими или композиторскими навыками. Основным направлением моей работы всегда было написание frontend (и backend изредка) кода для веб. Недавно решил попробовать себя в мобильном геймдеве и нужно было начать с идеи.
Я хотел начать с чего-то простого до безобразия. Проблема была в том, что все уже давно привыкли к минимализму типа "Flappy Bird" и "2048", потому я решил, то в этой нише потягаться не получится. Тем не менее, я понимал, что простая игра должна быть аркадной и поэтому за основу я взял именно один из таких аркадных жанров - кликер.
После парочки мозговых штурмов было принято решение - я делаю игру, где нужно тупо забивать гвозди, вопрос был в том, как этот процесс сделать увлекательным для игрока. Ответ напросился сам собой - на экране игрока доска с гвоздями будет прокручиваться, а его задача - забивать все мимо проходящие гвозди в эту доску.
"Анализ рынка" (ха-ха)
Прежде чем приступить к разработке, я хотел посмотреть, что по моим ключевым словам вообще есть на маркетах мобильных приложений. Я понял, что мне сказочно повезло - по моей теме среди кликеров я не нашел ни одной игры, которая особо завоевала бы любовь аудитории (пикабушники, если вы такую знаете, поправьте меня, сам в такую хочу поиграть). Это мне дало зеленый свет двигаться в этом направлении, а так же дало + к мотивации.
Выбор инструментария
Дальше нужно было выбрать - на чем же я буду делать игру? Среди вариантов было:
- Java + Android SDK (для ведра) / XCode для (iOS)
- Unity (под все платформы)
- Game Maker Studio (под все платформы)
Писать на нативном коде предоставляло бы наибольшие возможности + бесплатно, в наличии хорошо документированные SDK для сервисов аналитики, рекламных платформ и прочих внешних сервисов, но среди минусов - надо еще научиться хорошо кодить под эти платформы. Вердикт: долго, надо учиться, надо писать много сопровождающего кода, например организация игрового цикла, рендеринг, даже если писать на фреймворке, а главное - необходимость поддерживать одновременно код игры под все платформы.
Юнити - довольно перспективная вещь: гибкость, простота освоения, тоже в наличии SDK. Круто, но о таких вещах как, скажем, шейдеры, можно забыть на бесплатной версии. А у меня в связи с фин. положением на тот момент был "стол голод доширак". Ладно, вру, "доширак" я в Украине не видел, зато есть отечественный аналог - "Мивина". Хотелось бы поменьше расходник.
И тут я вспомнил, что у друга есть лицензия на Game Maker - прогу, которая имеет достаточную гибкость и простоту при работе с 2D и кроссплатформенна, правда для экспорта на что либо кроме винды надо покупать лицензию. Так как она имелась у друга в распоряжении, было решено сделать игру на Free версии, а собрать под мобильные с машины друга. Как я понял уже потом, перед релизом - подружить игру на ГМ с внешними сервисами - это реально адский чэллендж. Но на тот момент я об этом не знал и радостно принялся писать игру.
Первое демо
Уже в первую ночь я быстро набросал страшненький прототип основной идеи:
Как можно видеть, я сделал 3 вида гвоздей - которые забиваются с одного тапа, с двух и с трёх. Картинка молотка была тихо скоммунижжена с гугла, текстура доски тоже, а вот гвозди - они были "оригинальным творением автора".
Я вывел тестовую инфу на экран и заставил гвозди появляться в соотношении 4:2:1, собственно чтобы проверить адекватность распределения, я и выводил общее количество созданных гвоздей.
Снимал при помощи полезнейшей программы - Bandicam. Очень гибкая в своем классе, и не накладывает особых ограничений при бесплатном использовании.
Второе демо
Убедившись, что всё работает, я начал прикручивать бесплатное звуковое сопровождение, бесплатные шрифты и первые всплывающие надписи и зачатки графического интерфейса.
Интерфейс в мобильных играх - отдельная больная тема, кстати. Разрешений экранов много, соотношений сторон - много. В итоге я сделал игру чисто под вертикальную ориентацию экрана (т.е. уклон больше в сторону телефонов, чем планшетов). Совет для новичков - когда делаете интерфейс, не привязывайтесь к абсолютным пикселям игрового окна. Постарайтесь задавать размеры, отступы вашей графики в процентах от высоты/ширины экрана, которые меняются от устройства к устройству. Так вы сэкономите кучу времени и нервов, поверьте.
Третье демо
Дальше я подумал, и понял, что пора вводить возможность проигрыша игрока. Решил, что не стоит придумывать велосипед и банально дал 5 жизней игроку. Пропустил гвоздь - пропала жизнь. Нет жизней - обратно в главное меню. Ну и более-менее начала у меня в голове формироваться цветовая "атмосфера" игры.
Четвертое демо
Я постепенно понимаю что мои шрифты - дно, да и вообще с графикой всё худо. Переделывать начал с кнопок, цветовую палитру для которых составил при помощи специальных сервисов в интернете (например, Paletton). Фоны, как потом я понял после пары опросов желающих, просто ущербные, да и вообще я "фотошоп мастер". Но радовало то, что основа геймплея игры работала как надо, и в планах у меня было сделать магазин апгрейдов за внутриигровые очки и таблицу рекордов. Попутно добавляю еще больше всплывающих надписей. Как оказалось - не зря.
Пятое демо (предрелиз)
После того как я добавил несколько базовых молотков для магазина апгрейдов, подогнал более подходящий и интересный фон, сделал более приятный глазу интерфейс, ввел критические попадания и еще пару фич, стало ясно - я на правильном пути и релиз близко.
Подготовка к релизу
Было очевидно, что рецепт затягивающей игры - разнообразие контента. Костяк игры был в принципе готов, и я приступил к увеличению разнообразия в игре. Я ввел дополнительно 4 вида гвоздей:
- Взрывные (при забивании наносят урон окружающим гвоздям)
- Хроно-гвозди (при забивании заставляют доску двигаться в обратном направлении на несколько секунд, давая игроку передышку)
- Гвозди жизни (+1 жизнь при забивании)
- Гвоздь-босс (редко попадается, нужно несколько десятков тапов, чтобы забить)
Такой бестиарий в итоге сделал игру гораздо интереснее, учитывая что доска ускорялась со временем.
Так же я сделал 8 молотков, доступных для покупки. Каждый из них сильнее предыдущего по своим "забивательным" характеристикам.
Наконец, я, не без сторонней помощи, довел графику до гораздо более достойного уровня (пример: первый скриншот этого поста) и нарисовал красивые иконки для игры.
Настало время собирать под мобильные устройства. Этот процесс включал в себя привязку к AdMob, Appodeal (рекламные платформы), Google Analytics, Google Play Services для андроид и сервисам iTunes, а так же оформление приложений в маркетах, сборку бинарников и отправку их на модерацию.
Ребят, это было жестко. Очень жестко. Некоторые SDK зависели друг от друга, конфликтовали между собой, компилятор выдавал десятки ошибок, танцы с бубном заменили мне утреннюю зарядку. Например, когда я подключал аналитику и рекламу одновременно, они ругались друг на друга и отказывались собираться. Лечилось это всё томным поиском старых версий SDK, которые работали еще адекватно (это я потом узнал, что для сервисов не редкость выбрасывать в публичный доступ забагованные SDK). Думаю, программисты поймут.
Короче говоря, для тех кто собирается выпускать инди игру в маркеты - предрелизная возня может стать вашим ночным кошмаром. Я крайне надеюсь, что лет через 6 интеграция сервисов будет гораздо легче для разраба.
Благо, выпуститься все же удалось, модерацию в обоих маркетах прошел с первого раза (о чудо) и получил возрастной рейтинг 4+.
Было бы просто здорово, если именно вы, дорогие пикабушники, сами оцените на своих девайсах игру из говна и палок, которая прошла цепочку таких вот диких метаморфоз и дожила до своего релиза, а так же поделитесь своим мнением в комментариях :)
Ссылочка для пользователей Android
Ссылочка для пользователей iOS
Всем огромное спасибо за внимание!