- Прелюдия
- Разработка игры под iOS
- Продвижение игры
- Чисто поржать
Прелюдия
Эта история случилась в мае ровно на той скамейке, где Берлиоз с Бездомным поспорили о сущности Христа. Мы с приятелями тоже поспорили о возможности заработать на своей iPhone-игре. Я заявил, вдруг, что без вложения денег это невозможно. Мои оппоненты нехотя согласились. Я усилил троллинг и добавил: — Друзья мои, без больших денег это совершенно невозможно! Любая сумма менее $25000, потраченная на раскрутку приложения — обернется пшиком. Пшшшш!
Все возмутились и прогнали меня со скамейки. Заодно уж и из Москвы.
По следам публикации разгорелась нешуточная борьба за Кубок 26-08.
Игроки с Хабра настолько сильны, что в первый же день выгнали меня с вершины Олимпа. Но! В первой башне я нашел решение на 2 очка лучше прочих.И победил парней из Украины и России.
Можем еще!
Разработка игры под iOS
Оказавшись на задворках финансовых потоков и Европы я решил потрать $1000 долларов (упавших мне от старых игр) на доказательство своего Белого Тезиса, тем более Диван у меня имеется. Как вы уже догадываетесь, с годами любой разработчик создает лишь те проекты, на которые ему хватает сил. В свои 60- мне хватает сил ровно на 3 дня. Например, за июнь я сделал 10 новых игр. В основном забавный шлак, но графика и геймплей великолепны.
Графика
Графика во всех играх одинакова. Поясню — раз в месяц я захожу на envato.market и покупаю за $10-$20 долларов готовый набор изображений для мобильной игры. Вид необычных картинок будит во мне сотни идей, из которых я реализую ровно 10. По три дня на игру — месяц жизни долой и уставший мозг автора требует следующей порции изображений от художников. Художники! спасибо, что вы есть. Наркотикам — нет!
Теперь про июньские картинки — это набор изометрических кубиков. Приятные цвета, точные пикселы, что еще надо для счастья, Верещагин?
Шрифт Тройка. Замечателен своей грубостью и кириллицей.
Геймплей
Все игры, сделанные мной на основе вышеуказанной 2D графики, очень разные. Идеи от пакмана до 2048. Ссылок давать не буду, заминусуете же, черти, а я — рок-стар, крайне трепетно отношусь к брани. Еще копыта отброшу, а хочется увидеть, как выглядит iPhone 8.
Но про одну игру, выбранную для раскрутки, я вынужден буду рассказать со ссылками и прочей шелухой. А шелуха забавная.
Название
Игру назвал Blocks Chain. В технологии блокчейна я разбираюсь, но к данной игре она не имеет никакого отношения. Суть в следующем — дана пирамида из 56 трехмерных блоков четырех цветов. Каждый блок имеет случайный номер на боку, кратный 2. Это 2, 4, 8, 16, 32. Вы можете схлопнуть 2 любых одинаковых блока. То есть блок 2 и блок 2 превратятся в один блок 4.
2 + 2 > 4
4 + 4 > 8
8 + 8 > 16
64 + 64 > X
Если повезет — пасьянс сойдется в четыре больших разноцветных блока 128. В чем проблема, воскликнете вы — это ж элементарно! Проблема в том, что в пирамиде мы видим изначально лишь 21 блок из 56. Смотрите сами.
Короче, этакий маджонг получился.
Мне нравится расклад 32306. Решил за 2 часа.
Разработка
Язык Swift 3.0, день на кодирование. Что интересного? Интересная задача определения видимый-невидимый блок. Решил её с удовольствием, построив матрицу заслонов 56 на 56. То есть номера блоков в матрице отсортированы по координате Z
let a[1..56,1..56] // isHidden matrix
Если блок номер 34 заслоняет блок 16 полностью, то
a[34,16] = 0b11 // десятичное 3
если блок номер 50 заслоняет левую половинку блока 45, то
a[50,45] = 0b10 // десятичное 2
если блок номер 50 заслоняет правую половинку блока 46, то
a[50,46] = 0b01 // десятичное 1
Пробегая по матрице заслонов для любого блока (скажем номер 17) — мы считаем логические суммы от соответствующих элементов a[*,17] и если эта сумма равна 3 — блок невидимый. Во всех прочих вариантах он виден и готов к метаморфозам.
Расклады формирую случайно по стартовому random_seed. Всего 1 000 000 уникальных паззлов.
Архитектура
Элементарно на 5 экранах — 5 классов
MenuViewController
PlayViewController -> Obj
HelpViewController -> Obj
FinalViewController
ServerTopScoreViewController
В игре добавлен вычислительный класс Obj, где производятся все манипуляции с матрицами и массивами. В этом классе хранится история ходов игрока для текущего расклада. Массив history[] имеет тройное назначение — 1) помогает делать Undo — отменять ход, 2) сохраняет историю игры на сервер (чтобы я мог подсмотреть решение), 3) проигрывает записанное решение в разделе Help
Help
Важная часть для обучения игроков. В проекте я копирую PlayViewController в HelpViewController, убираю нажатия на экран (touchesBegin и пр.) и проигрываю какое-либо из красивых решений при помощи Timer и Animation, читая ходы из массива history[].
Отладка
Два дня рубился в игру. Вначале мышкой на эмуляторе. Подобрал правильные начальные условия для набора блоков — степени двойки можно распределить разными способами. Мой вариант на 14 кубиков — 32, 32, 16, 16, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2.
Звуки взял из старых игр — все они были заимствованы из Angry Birds, люблю финскую музыку, голос мордовской крови.
Второй день — полирую игру на железе. Предпочитаю iPhone маленького размера.
3-я часть, 5-ая колонна
Реклама включается, как только пользователь стал профи. То есть смог собрать хотя бы одну башню.
Для затравки сделал сервер, где выбираю 3 из 1 000 000 раскладов и каждый день выкладываю для заочного соперничества. Интровертам можно просто тихо играть и релаксировать без ажиотажа и вспышек фотокорреспондентов.
Продвижение игры
Игра завершена и выложена в магазин в 2-ух ипостасях (платная и бесплатная).
Зачем 2 приложения? Для эксперимента — я буду продвигать оба.
Выбор промоутера
Любой активный разработчик раз в месяц получает письма от сервисов по продвижению мобильных приложений (игр). На 90 процентов это индусы, остальные русские. Как расист (только белые женщины), я выбрал первую попавшуюся русскую контору. Называть не буду, что избежать рекламы/антирекламы. Звоню.
— Есть бюджет $1000, хочу продвинуть приложения…
— Сделаем, сэр!!!
Сервис — идеален, общение в скайпе, все рассказывают, все показывают, заставляют менять ключевые слова, если текущие не годятся и т.д.
Рекламная компания
Цель — попасть в ТОП10 русского Appstore.
Цена — для бесплатного $500.
Цена — для платного $250.
За два дня вошел в топ10. Хватило 6000 бесплатных фейк-скачиваний. Причем с первой попытки войти в топ10 не удалось. Компанию запустили заново с другими ключевыми словами (не осилил я специфику их терминологии) и результата достигли, все честно.
Платных загрузок — 600 (ребята попросили изменить цену приложения на 15 рублей). В результате $100 мне вернулось обратно.
Но натуральных загрузок не случилось, как я и предполагал.
В итоге бесплатное приложение я выбросил, оставил платную версию, которая приносит мне 1-4 долларов в неделю. Как и до рекламной компании.
Чисто поржать
Было смешно потратить $1000 (на самом деле $650). А то бы заплакал.
Надеюсь, с помощью данной публикации я верну деньги. Ха-ха-ха.
Комментарии (33)
LoadRunner
25.08.2017 16:24+21000000 уникальных раскладов — это математический расчёт и проверка на уникальность или как всегда — генерация наобум во славу Рандома?
PapaBubaDiop Автор
25.08.2017 16:46+2Наобум. Интересно посчитать число уникальных раскладов. 20!/4! мне кажется.
LoadRunner
25.08.2017 17:01А какие ограничения на кубики? Могут ли они все быть двойками? Или там всё определено — сколько и каких кубиков и меняется только их расположение?
PapaBubaDiop Автор
25.08.2017 17:20+1Все определено 14 кубиков каждого цвета. Паззлы не все решаются — примерно 25% у меня успешны. Специально для Хабра делаю игру бесплатной на эти выходные.
Вот играLoadRunner
25.08.2017 18:34Жаль, под Windows больше не пишете.
А можно подробнее про правила? Кубики только одинакового цвета можно складывать?PapaBubaDiop Автор
25.08.2017 19:19Да. Я добавил короткое видео в статью, можешь взглянуть.
LoadRunner
26.08.2017 10:00Один вопрос всё равно остаётся — можно брать только видимые кубики?
PapaBubaDiop Автор
26.08.2017 10:19Да.
LoadRunner
29.08.2017 12:41Я тут сообразил на ещё один вопрос: кубики можно брать, смотреть, что под\за ними и ставить на место или взял — ходи?
PapaBubaDiop Автор
29.08.2017 12:57Подсматривать можно (в этом удовольствие). Кроме того, активно работает кнопка Undo. Без нее — никак не подсмотреть скрытые глубоко блоки.
torkve
25.08.2017 17:50+6> В свои 60- мне хватает сил ровно на 3 дня. Например, за июнь я сделал 10 новых игр.
Зависть. Понимаю, что опыт и фантазия, но всё равно зависть.PapaBubaDiop Автор
25.08.2017 18:26+1Браво. Одним предложением раскрыли мою суть. По правде игр 5.
Весь список
Rubik 2048
Solitaire 2018
Six Towers
J-Bird
Blocks Chain
и т.д.
SAKrisT
25.08.2017 18:20+2Надеюсь, с помощью данной публикации я верну деньги. Ха-ха-ха.
Помогу вернуть :)PapaBubaDiop Автор
25.08.2017 18:29+6Поздно! Игра уже бесплатна) Остается вариант, что нажмешь толстый рекламный баннер от Chartboost!
Но ваши комментарии дороже денег, если честно…
bano-notit
25.08.2017 21:18+2Очень классно. Я от мира игр далековат, но вот ваша статья очень понравилась, вот думаю сейчас попробовать возродить одну из заброшенных наработок.
У Вас запал идёт на 3 дня, а у меня на несколько месяцев, но волнами...
vics001
26.08.2017 01:47Может cделать, что-то наподобие текстовой стратегии? Разрабатывать их не так сложно, а вот продумывать сценарий игры, мне кажется в 60 будет попроще и жизненный опыт поможет :)
P.S. Поле чудес была в некотором смысле игрой-стратегией, где на каждом шаге надо было выбирать букву, а в конце слово.
Laguna_Seca
26.08.2017 02:44-7Заработать без вложений можно. Нужно делать интересные игры. Проверено.
PapaBubaDiop Автор
26.08.2017 11:41+17Именно так я и говорил Ван Гогу: — Рисуй хорошие картины, а то помрешь в нищете.
Graysun
26.08.2017 15:56Расскажите пожалуйста.
TOP-10 Чего?
Общий. Категории. По какому-то запросу?PapaBubaDiop Автор
26.08.2017 18:40Топ 10 игр русского магазина (games). Запросы, ключевые слова забыл, простите уж. Хотя можно поднять переписку.
reinvent
26.08.2017 18:12>Цель — попасть в ТОП10 русского Appstore.
А это как-то помогает продвижению? Не эффективнее ли в соцсети?PapaBubaDiop Автор
26.08.2017 18:42+3Мой издатель говорил грубо, но верно:
топ 25 US зарабатывает. Остальные сосут.
Но это было 5 лет назад. По-моему, ничего не изменилось.
dadyjo
29.08.2017 15:19Мне кажется пользователи избалованы бесплатным ПО и низкими ценами, нужно просто продавать приложения задорого, представьте что любая программа в AppStor стоит 100$ :)
dadyjo
27.08.2017 20:12А что за библиотека используется для графики?
PapaBubaDiop Автор
27.08.2017 22:09Никаких сторонних библиотек не требуется — обычная родная яблочная графика. Основной элемент графики — UIImageView — картинка с альфа-каналом.
codmw44
29.08.2017 15:48-1Если продукт ничего из себя не представляет, то тут ничего не поможет и не окупится. Интересные продукты, с продуманной монетизацией и грамотно реализованной системой возврата пользователя в игру приносят больше чем стоимость одной установки с какой нибудь рекламной площадки. Если проект еще уникален и интересен игрокам, то можно с минимальным бюджетом выйти в топы. Что бы не быть голословным приведу пример: наша игра без единой потраченной копейки на маркетинг получила 5 млн установок в google play за пол года.
yar3333
Отличная пятничная статья! :)