Трибуна
Kirill Kartukov
7697

brain:code — головоломка с необычной игровой механикой

Всем привет, меня зовут Кирилл, я Android-разработчик, и я всегда хотел попробовать себя в разработке мобильных игр. Недавно эта цель свершилась. Этот пост — небольшая история о том, как я делал свою первую игру и что из этого получилось.

В закладки
Аудио

Идея

Мне всегда нравились необычные логические игры, такие как Yellow от Bart Bonte и That Level Again от IamTagir. Поэтому с выбором жанра для своей первой игры я определился сразу. Также сразу обозначил основные требования к ней:

  • Простой и понятный дизайн. Без использования игровых движков, нативная разработка.
  • Не копировать существующие игровые механики, придумать что-то своё.
  • Делать игру такой, чтобы самому было интересно в неё играть.
  • Никакой рекламы во время игрового процесса. Тут и так всё понятно, никто не любит рекламу в играх (и не только).

Разработка

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

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

Чтобы визуально упростить ввод команд, решил сделать подсветку синтаксиса. Вдохновлялся на Color Themes :) Сейчас в игре присутствует 15 различных команд.

Всплывающее окно со списком всех команд

Далее необходимо было придумать сами головоломки и разработать уровни. Перед разработкой уровней я набросал список из примерно 100 идей для головоломок и решил, что в первый релиз приложения войдёт 50 уровней. В планах было сделать игру за месяц-полтора, но как это всегда бывает, сроки постепенно сдвигались — разработка самой игры началась в марте этого года, а первая версия приложения вышла только в августе.

По мере разработки игры идеи для уровней начинали отсеиваться: некоторые были очень схожими, часть из идей было сложно реализовать в контексте приложения, но главной причиной было время — на разработку каждого уровня приходилось тратить в среднем один-два дня вместо предполагаемых нескольких часов (разработкой игры занимался в свободное от работы время). Так, например, для реализации одного уровня необходимо было поднимать свой сайт.

​Тот самый уровень + подсветка синтаксиса

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

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

Пересмотрев множество различных сайтов с бесплатной музыкой, случайно для себя обнаружил Audio Library от YouTube, неожиданно полезная библиотека бесплатной музыки для коммерческого использования. Дело оставалось за малым — выбрать подходящий расслабляющий трек, что удалось :)

Релиз и продвижение

Если про разработку приложения я могу писать долго, то вот с продвижением я на «вы», поэтому в этом разделе будут только сухие факты. Также я довольно давно не выпускал своих персональных проектов, поэтому никакого чёткого плана по продвижению у меня не было.

Ниже — краткий список каналов для продвижения, которые я использовал, и небольшой отчёт по каждому их них:

  • ASO — многие знают, что правильное описание приложения в Play Market играет одну из ключевых ролей и может привлечь хороший поток скачиваний и высокую позицию в выдаче по ключевым словам. На эту тему написано множество статей, и добавить мне особо нечего — старался сделать описание приложения, которое хорошо передаёт смысл и при этом содержит как можно больше ключевых слов.
  • Facebook Ads — пробовал ради интереса и для получения хоть какого-либо опыта. Реклама показывалась в ленте Facebook и Instagram. При бюджете в $10 смог получить 1243 показа и 18 кликов. Не знаю, насколько плохи эти результаты, но слышал, что грамотно настроенная реклама в Facebook и Instagram может давать хорошие показатели в соотношении цены к количеству привлечённых пользователей.

  • Google Ads — пробовал также ради интереса. Бюджет — $50. Общее количество показов: 87 400. Количество кликов по объявлению: 1660. Честно говоря, работа с Google Ads очень расстроила по нескольким пунктам: невозможность отключить показ объявления для планшетов и ПК, невозможность отключить некоторые каналы для показа рекламы, очень медленная работа самого сервиса — при изменении цены за клик Google переводила статус объявления в «Обучение», которое занимает семь (!) дней. Плюс сложилась довольно странная ситуация с установками приложения — Google Ads и панель разработчика упорно показывали 700 новых установок, а сторонняя система трекинга (Fabric) показывала только 100 новых пользователей, как так получилось — я не знаю.
  • Пост на форуме XDA-Developers — общее количество просмотров поста — 305, комментариев — два.
  • Пост на Product Hunt — результат практически нулевой (один upvote).
  • Посты и запросы на публикацию на сайтах The Startup Pitch, Launching Next, BetaList — результат нулевой, сайты такого типа обычно просят определённую сумму денег за мгновенную публикацию поста, иначе публикация будет выполнена через месяц. Не стоит своих денег.
  • Пост, а точнее — комментарий на Reddit — путём проб и ошибок оказалось, что на Reddit есть специальный пятничный пост Feedback Friday для желающих пропиарить свои творения. По ощущениям, туда заходят разработчики и только. Думаю, больше это сделано для уменьшения количества спама в остальных разделах Reddit. Результата ноль.
  • Google Indie Corner. Не могу найти ссылку на эту инициативу. Возможно, она уже закрыта. Суть проста — заполняешь специальную форму, где рассказываешь о себе и о своём проекте, и если повезёт, тебя бесплатно будут продвигать в специальном разделе для инди-игр. Заявку отправил — ответа не получил.

  • Пост на 4PDA — пожалуй, один из самых действующих бесплатных методов продвижения для моего проекта. Просмотры поста — 1373 за шесть дней, 54 скачивания приложения по прямой ссылке, несколько положительных комментариев.
  • Продвижение с помощью мотивированных установок — не все признаются, но многие используют эти сервисы для продвижения своих приложений или игр. Довольно ненадёжный способ продвижения, как по мне. Покупные отзывы и рейтинг очень быстро удаляются Google и могут только временно повлиять на рейтинг. В моём случае бюджет был $30, этого хватило на около 300 мотивированных установок и 25 отзывов, из которых 23 были удалены. Кстати, Google частенько удаляет и обычные отзывы, считая их фейковыми :) Сам сервис рекомендовать не могу, так как, судя по консоли Firebase, скачивания велись аккурат из двух городов в США — по всем признакам это были боты.
Текущие позиции по некоторым ключе​вым словам в США

Текущее положение дел

Довольно долгое время количество скачиваний держалось на уровне 30 в день. После перевода игры на русский язык и небольшого изменения описания приложения на английском языке количество скачиваний довольно резко выросло и сейчас составляет 200–300 в день.

Общий итог за первые два месяца :

  • Общее количество скачиваний за всё время — 3500.
  • Общее количество оценок — 98, средняя оценка 4,825, оценок с отзывами — 23.

О каком-либо доходе с игры пока что речи не идёт, так как выбранный мной способ монетизации абсолютно не агрессивный (посмотри рекламу — получи подсказку, а также покупка подсказок).

Ближайшие планы

В целом brain:code получает достаточное хорошие отзывы, поэтому я решил продолжить разработку новых уровней. Также параллельно ведётся разработка игры под iOS.

Всем, кто дочитал пост до конца, огромное спасибо. Это мой первый пост на vc.ru, хотя сижу я тут довольно давно в качестве читателя. Любые отзывы, комментарии и советы приветствуются.

Ну и наконец, ссылка на игру в Play Market :)

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Kirill Kartukov", "author_type": "self", "tags": ["\u0438\u0433\u0440\u044b"], "comments": 37, "likes": 57, "favorites": 119, "is_advertisement": false, "subsite_label": "tribuna", "id": 89559, "is_wide": true, "is_ugc": true, "date": "Fri, 25 Oct 2019 14:14:14 +0300", "is_special": false }
0
{ "id": 89559, "author_id": 186060, "diff_limit": 1000, "urls": {"diff":"\/comments\/89559\/get","add":"\/comments\/89559\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/89559"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
37 комментариев
Популярные
По порядку
Написать комментарий...
8

Штош. Будет игра под iOS, попробуем-с)

Ответить
4

Первый раз на vc.ru скриншот без моноброви)

Ответить
3

Kotlin или Java? IDE?

Ответить
1

Kotlin, Android Studio )

Ответить
0

Кирилл, можете посоветовать где почитать о разработке игр на андроид, предпочтительнее джава. С гуглом знаком, но как-то по делу ресурсов чтобы с примерами не попадалось, а руки «чешутся») заранее благодарен!

Ответить
1

Лично я таких тем не читал, так как сразу знал чего я хочу. 
Если речь идет об игровых движках - то практически единственный, на котором можно разрабатывать игры на Java, это libGDX (из минусов - поддерживает только 2D). Дальше уже все зависит от ваших потребностей от функционала игры. 
Если это 3D игра, то скорее всего будет проще сделать все на Unity
Если без движка, то это OpenGL ES 
По каждой из тем очень много информации в интернете. Стоит просто начать с чего-то легкого)

Ответить
0

libGDX НЕ только 2d

Ответить
0

И вправду, видимо я с чем-то другим перепутал

Ответить
2

Спасибо за отзыв!
Я думаю что следующий пост будет уже после окончания разработки под iOS.
Как раз за этот период накопится новая статистика по общим результатам скачиваний и продвижения. На текущих способах продвижения останавливаться не планирую - ищу новые пути. Может будет что добавить)

Ответить
2

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

Ответить
1

Кстати по поводу серверной части - сразу задумайся о защите покупок через сервер)

Ответить
0

Спасибо!
Согласен, для разработчика это самая тяжелая часть, буду стараться найти что-то интересное)

Ответить
2

делать игру такой, чтобы самому было интересно играть

А как это у Вас получается? Вы же знаете ответы на все головоломки. И всё равно интересно?

Ответить
1

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

Ответить
0

Это сложный вопрос. Кто-то играет бесконечно в мини-игры типа лингоплей хотя исход известен. А кто-то раз за разом проходит диаблу. Наверное шлифуют навыки до идеала или ищут скрытое. Или никак не могут остановиться в гонке за уровнем.

Не зря же мем появился "<кто-нибудь> восьмидесятого левела". ;)

Ответить
1

установил, игра-огонь

Ответить
0

Спасибо, старался)

Ответить
0

а кто помнить сайт-головоломку по адресу что-то вроде hacker??
там было около 25 шагов и в каждом вопросе/ответе был зашит номер шага.
очень остроумные формулировки были.

Ответить
–2

hackerrank есть, что-то такое

Ответить
0

hackerrank и подобные - это задачки по программированию, совсем не то;)

Ответить
0

Очень круто, спасибо, почитал бы отдельно про "портирование" на iOS (про разницу и сложности, тоже скоро предстоит) и подробнее по продвижению и результатам

Ответить
1

Не в ту ветку написал по неопытности. Следующей статье быть, только немного позже)

Ответить
0

Ссылка не рабочая, перепроверь ещё раз, на телефоне с Android Google Chrome блокирует

Ответить
1

Перепроверил с своего телефона, Chrome перекидывает на мобильную версию сайта Google Play. Ничего не блокируется. Как именно  у тебя блокирует Chrome?

Ответить
0

Кирилл, удачи Вам!!!! Выйдет на IOS- поиграем))

Ответить
0

Спасибо большое! Постараюсь выпустить как можно быстрее)

Ответить
0

Да нафиг этот огрызок, фигачь сразу китайскую локализацию на том же андроиде)

Ответить
1

Кстати выход в Китай это отличная идея. Но кроме китайской локализации есть еще одна проблема - так как у Google проблемы в Китае, то необходимо что-то думать с реализацией внутриигровых покупок и рекламой)

Ответить
0

Было бы приложение на iOS , скачиваний было бы в разы больше, уверена! Я заинтересовалась , установило бы себе эту игру) круто, успехов!

Ответить
0

Спасибо, будет игра под iOS)  

Ответить
0

После таких отзывов в ГП не скачать игру просто грех. Скачал, поиграл - круто! 

Ответить
0

Спасибо большое!

Ответить
0

Спасибо. Очень интересная задумка. Только что скачал - попробую.
Отдельный плюс за вес приложения - 6,4 МВ.

Ответить
0

Спасибо большое !
По поводу размера приложения - без фоновой музыки было бы еще на 3 МБ меньше)

Ответить
0

Поиграл немного. Музыка фоновая весьма гармонично вписывается в игровой процесс.
А так всё понравилось. Спасибо за игру)

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }