Idle Tower Builder

Пароль от блогов я, почему-то, помню наизусть. А вот что касается публикации, не публиковал ничего больше года. Хотя, с текущей активностью сообщества, я мог бы де факто превратить блоги в свои личные :)

Вчера пошло на ревью обновление 1.0.9 нашей самой новой игры Idle Tower Builder. Это айдл, в котором вы добываете ресурсы и строите башню. С каждым этажом открываются новые постройки и механизмы, облегчающие строительство. Сейчас в игре контента на 17 этажей.

При дизайне содержимого этажей мы старались увеличить разнообразие происходящего на экране. Например, перетаскивать камни на обработку помогает НЛО, забрасывать кирпичи на верхние этажи башни можно пушкой, а Галилей, кидая яблоки с 11-го этажа и наблюдая за их падением, генерирует очки науки.

К рассчёту эффектов для нового контента применяем такой подход. Строим продуктовую цепочку (например, добыча камня — транспортировка камня — распил камня в кирпичи — строительство башни). Определяем в этой цепочке «бутылочное горлышко». Контент, открываемыей с новым этажом, должен это горлышко расширить (или создать новую цепочку).

К примеру, после 5го этажа в транспортировке камня, помимо грузчика, участвует и слон. После некоторого количества апгрейдов сено с соседнего поля уже не может восполнять силы слона. Поэтому после 7го этажа открывается фонтан, дающий буст к сбору сена на поле. Или, вот, лес. Он нужен для строительства подъёмного крана. В отличие от камня, это ресурс иссякаемый (решил я ненавязчиво включить экологические мотивы в игру, за что отхватил пару однозвёздных отзывов). Лес можно восстанавливать водой из колодца, а затем — из дождя. Дождь вызывает открывающаяся на 4м этаже дымовая машина.

Делать игру я начал в мае, когда закончилась моя работа в Лайон Студии. Дело в том, что там, хоть я и был просто биздевом, собственными мобильными и даже ХТМЛ5 проектами заниматься не мог. Удалось выговорить только право делать что-то беслатное для ПК в качестве хобби. Но я напрасно надеялся, что доведу до релиза свою Стратегилизацию — времени на хобби после работы просто не оставалось.

Cтав же свободным от обязательств, я вспомнил, что Арморы давно предлагали мне портировать Стимпанк Айдл Спиннер на ХТМЛ5. Я связался с Юпитер Хедли, она сказала, что интерес всё ещё есть. Но для старта мы решили не браться за огромный спиннер-песочницу, а сделать совершенно новый айдл, с чёткой целью для игрока. Так и родилась идея постройки башни. Игру решили назвать Babel Tower. Постройка Вавилонской башни с её смешением языков отлично объясняла традиционный для айдлов приём кратного увеличения затрат для достижения новых уровней. Просто-напросто рабочие, которые не понимают друг друга, часть стройматериалов растеряют, пока кирпич доедет до верхнего этажа.

Для изображения самих рабочих я, как не умеющий рисовать, выбрал минималистичный стиль. Трапеция, полукруг и шляпа — вот и вышел человечек. Анимация ходьбы — это просто горизонтальное движение с подпрыгиванием (ну как дети в куклы играют). В дальнейшем осмелел настолько, что сделал побольше разных персонажей.
персонажи в Idle Tower Builder

Давненько я не брал в руки джаваскрипт… Хотя нет, летом 2019го я делал HTML5 версию Bottle Cap Challenge. Тогда, не смотря на «горячую» тему, игра успеха не снискала. Но шаблон остался. На его базе я и стал надстраивать ХТМЛ5 движок для айдла. Как я показал в посте о «Фабрике рекламы», наш движок для айдлов на Action Script 3/Starling позволял быстро прототипировать новые механики. Перенести его на JavaScript/Phaser было несложно. Попутно я его упростил и оптимизировал. Отказался на время от возможности перетаскивать игровые объекты. В Башне у меня новые механизмы появляются только в заранее заданных местах.

Разработка на js после типизированного as3 вызывала определённый дискомфорт. Нелегко было привыкнуть к this и к тому, что this может поменяться. Не работал (или работал неправильно) автокомплит. Не вызывали ошибок строки вида (for (var i=0; i<ar.lenth; i++), и долго приходилось выискивать, что идёт не так.
Писать код сначала я пытался в Visual Studio, но он дико тормозил при работе с проектом. Плюс там удвоение строки не выполнялось через Ctrl+D, а через неудобные Ctrl+C Ctrl+V. Перешёл на Notepad++. Там стал тормозить плагин вывода списка классов и функций.

Но постепенно работа наладилась. Для финальной сборки проекта мне в чате GameDev for Web посоветовали closure. Он хорошо помог отслеживать ошибки (даже ошибки с = вместо == в ифе). У коллег-разработчиков, которым делал видеообзоры их игр, попросил видео первых впечатлений на свою. Они очень помогли причесать туториал, прогресс и визуализацию.

Когда контента в игре было на 5 этажей, зарелизили игру на Арморах. Чтобы игроки дольше добирались до верха, экспоненциальный рост стоимости этажа в кирпичах заменили факториальным. Что это значит: изначально для установки 1го кирпича на этаж n требовалось произвести 10^n кирпичей. Игровое объяснение этому, как я уже говорил, такое: из-за непонимания рабочие теряют 9/10 от груза при его подъёме на этаж. Но в итоге цены стали следующими: 1 кирпич для 1го этажа, 10 для 2го, 10*12 = 120 для 3го, 10*12*14=1680 для 4го, 10*12*14*16=26880 для 5го.

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

Babel Tower on Armor Games
Балансировать геймплей помогли гугл таблицы. Это вообще тема отдельного поста, но один забавный случай приведу.
Для какого-то производства сделал апгрейды с ценой, увеличивающейся в 1.1 раз. Сами апгрейды действую так: дают +1 к величине, а каждый 5й — удвоение эффекта. Что получили в итоге: цена блока из пяти апгрейдов увеличивается в 1.1^5 = 1.61051 раз, а эффект после каждого «узлового» апгрейда растёт вдвое. Разумеется, такая система идёт вразнос. Надо менять параметры.

На Арморах рейтинг у игры после запуска стал 66%. Многе были недовольны наличием инаппов (хотя включение инаппов было требованием администрации Арморов, это вообще мой первый опыт включения их в игру). Другим не нравилось то, что лес быстро заканчивается (хотел бы я знать, высказывают ли они это же недовольство в реальном мире? ;) ) Третьи открыли весь контент и им было мало. Однако я показал себя разработчиком, заботящимся об игроках. За те три недели, пока игра висела на главной, мы выпустили 2 апдейта и довели число этажей с контентом до 10-ти. В итоге, когда игра вышла из «новых», в неё сыграли 121 тысячу раз, а рейтинг составил 73% (сейчас, через 3,5 месяца после релиза эти параметры равны 288к и 75%).

Параллельно начали делать версии для других порталов. Встраивать в игру разные требования по монетизации и брендингу оказалось удобно с помощью Гитхаба. Это вообще мой первый проект, который я перенёс с Дропбокса на Гит. Итак, в мастере у меня чистая версия игры без портальных СДК, а для каждого портала создаётся своя ветка. Затем, после добавления нового контента или исправления багов, я делаю в ветках update from master и публикую обновление на портал.

Особо интересна история того, как я попал на Конгрегейт. Туда я заливать Башню не торопился, т.к. веб порты других моих айдлов регулярно ставили там антирекорды рейтинга. Доходило даже до 2.2/5 (у игры, у которой в Гугл плее 4.3/5). Поэтому туда я хотел посылать игру уже после того, как обкатаю её на других порталах. Но вот 1го июля захожу я на реддит и читаю новость — Конг перестаёт принимать новые игры! Захожу на Конг — форма сабмита ещё работает. Быстро собираю версию с их системой очков, заливаю — залилось! Уфф, успел… Так Babel Tower стал последним айдлом на Конгрегейте.

(На самом деле, не последним — позже начали появляться игры, у которых до того был статус «Неопубликовано», и авторы стали их активировать. Но ничего, у меня тоже там есть 2 неопубликованные игры, может быть, если сайт останется, запаблишу ещё что-нибудь)

Через пару дней после заливки читаю вот такой душевный пост в ленте:


В итоге на Kongregate рейтинг установился в 3.34/5 после 123к плеев. Лучше же всего её приняли на CrazyGames и Poki (рейтинг 90 из 100) По эффективности порталы проранжировались следующим образом: ArmorGames ≈ Poki > CrazyGames > Kongregate > GameDistribution > y8

Однако, как бы хороши или плохи порталы ни были, а трафик в игры на них после начального релиза имеет свойство сдуваться. В июле пришла пора идти на мобайл. Пошёл туда не самым очевидным путём. Казалось бы, просто обернуть js в apk и всё. Но нет. Оптимизации, которые я внёс в движок айдлов при переносе его с AS3 на JS, решил вернуть на AS3. Смысл в этом был: помимо собственно геймлпея, AS3 движок содержал много полезных функций: кросс-продвижение, просьба проголосовать, переключение между несколькими игровыми мирами в одной игре, бонусы за коды из соцсетей и т.д. Так что в июле я начал рефакторинг мобильного движка. Добавил (наконец-то) автоподстройку под изменяемый размер окна, реорганизовал структуру массива для перевода и подгружаемых ассетов, перестроил, исходя из опыта js, работу с экранами интерфейса.

Для перевода классов игровых объектов с js на as3, я написал скрипт, который выполняет большинство стандартных замен. Потом проходил по коду и причёсывал вручную. Возврат к AS3 помог решить и проблему с производительностью. На моём ноутбуке с Core i7, при запуске HTML5 игры на полном экране, даже в меню, кулер начинает надрываться. Причём это происходило почти с любыми HTML5 играми. Это мне даже помешало провести стрим: ноут не вытягивал OBS и игру одновременно. А версия на Action Script 3 же, при полном наборе игровых объектов, идёт идеально.

Всю техническую часть: аналитику, рекламу, IAP, сделал через Enhance. Я там уже не работаю, так что скажу честно: трижды я свою собственную ошибку посчитал ошибкой Enhance'а, но в итоге оказалось, что там всё ок, а я сам что-то напутал. Единственный недостаток Enhance: при встраивании IAP процент ANR поднялся с 0.13% до 1.1% Сейчас разбираемся с командой, как это исправить.

С именем игры тоже надо было что-то делать. Недальновидно назвав веб-версию Babel Tower, я не учёл два факта: 1) мобильная игра с таким именем уже существует и 2) поисковый запрос «Babel Tower» выдаёт преимущественно материалы на религиозную тематику. Так что мобильную и ПК игру назвали Idle Tower Builder — ёмко и по делу.

Сразу после релиза я показал игру Перпетууму. Она ему понравилась и он снял замечательный обзор.


Игроки, которые пришли с обзора, оставили положительные отзывы, и рейтинг игры установился равным 4.7. Я решил написать Гуглу с просьбой о продвижении. Они ответили, попросили сделать адаптивную иконку, поддержку аппаратной кнопки Back и пару других правок. Пока я их делал, пришли новые игроки и сбили рейтинг до 3.97. Продвижения игра не получила.

Я продолжил обновлять игру. Добавил контент для этажей 13-16 в HTML5 версию, подсветил изменения на Гитхабе — перенёл на AS3. Сделал балансные правки на AS3, подсветил изменения — перенёс на HTML5. В одном из обновлений, наконец-то, добавил просьбу оставить отзыв, если игра понравилась. Причём делается это ненавязчиво — сначала в углу экрана появляется вопросительный знак, и уже по клику по нему выходит сообщение. Тогда же опубликовал видео игры на Реддите. Там пост набрал 130 баллов, рейтинг игры в сторе вновь стал расти

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

Где-то между выпуском веб и мобильной версий фейсбук заблокировал группу, где собрались почти 9к игроков в Стимпанк спиннер. Разблокировать её он, по всей видимости, не собирается. Так что активность сообщества мы перенесли в Дискорд.
Вот наша группа: discord.gg/DczCGxF

Игру можно скачать и играть вот где:
App Store: apps.apple.com/us/app/idle-tower-builder/id1527621990
Google Play: play.google.com/store/apps/details?id=com.airapport.idletowerbuilder
Itch: airapport.itch.io/idle-tower-builder
Kongregate: www.kongregate.com/games/GeneralVimes/babel-tower
Armor Games: armorgames.com/babel-tower-game/18964

P.S. Как-то в чате мы обсуждали вопрос застоя в сообществе и говорили о том, что раньше разработчики чаще всего писали посты, когда игра лежала на ревью у ФГЛ. А сейчас, когда у разработчиков куча текущих задач, как-то не до постов. Вот и косвенное подтверждение этому — на данную публикацию я вдохновился, когда затянулся Гугловский аппрув. Писал я его весь выходной день (кстати, на Эппле уже появилась 1.0.9, на Гугле — ещё нет).

Публикации действительно занимают много времени, но вижу, что многие наши возрождают традиции постов на Пикабу: J0x, coder1cv8, Biuzer. Сам я там не пишу, пока не будет играбельной Стратегилизации (игры, которую я громно анонсировал в 2016м, но заморозил летом 2017го, переключившись на Стимпанк).
Может быть… когда-нибудь…

В общем, коллеги, желаю удачи в разработке и хороших историй, которыми захочется делиться!
  • +3

Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.