Независимый разработчик Афсар Ахмад, создавший игру Rocket Romeo, поделился на ресурсе Kukuruku своей историей разработки мобильной игры для Android. Он несколько раз переделывал проект почти с нуля, менял арт-стиль и даже механику управления. Лишь после нескольких итераций, плейтестов и переосмыслений он смог запустить своё приложение в Google Play.
AD публикует перевод материала.
27 февраля 2015 года я выпустил свою первую игру для Android — Rocket Romeo. Как только я рассказал об этом друзьям, популярность игры начала расти. Проект, на мой взгляд, уже оценён по достоинству. Кроме того, я выяснил, что многие люди одобрили мою креативность.
Тогда я задумался, что вообще такое креативность. На самом деле последние 45 дней я только и делал, что пытался создать игру, которая понравится широкой аудитории.
Процесс создания игры итеративен и основан на экспериментах. Чтобы вы поняли, как выглядит цикл разработки в моем представлении, я расскажу вам историю создания Rocket Romeo.
Вот как игра выглядит сегодня
Как я уже сказал, многие игроки оценили мою креативность при создании этой игры. Однако я не считаю себя креативным человеком, скорее я приверженец итеративного подхода.
В этой статье я не буду обсуждать то, по какой причине было принято решение создавать игру для платформы Android. Поэтому свой рассказ я начну с того периода времени, когда принял решение разработать игровое приложение. Фаза формирования идеи началась где-то около 12 января 2015 года.
Первая идея
«Проклятая пчела». Концепт был таким: «Пчела проклята, и в темноте может летать только по часовой стрелке, а на свету — только против часовой стрелки. В игре есть препятствия, которые пчеле придется преодолевать. Игроку надо касаться экрана, чтобы переключаться между режимами дня и ночи и таким образом регулировать полет пчелы».
Как только была сформулирована базовая механика, я сосредоточился на создании графики. И сначала я занялся основным экраном игры.
Вы видите пчелу, которая следует по тропинке из сот, а палочки с ульями и есть те препятствия, которые пчеле надо преодолеть.
После трёх-четырёх часов работы над графикой, я понял, что результатом не доволен. То, что получилось, казалось мне отталкивающим. Я решил всё удалить и начать заново.
Но перед тем, как начать во второй раз, я подумал, почему бы не создать небольшой MVP, который позволит мне понять суть игры. Поэтому вместо того, чтобы работать над картинкой, я быстро переключился на Android Studio и на скорую руку создал прототип страницы, который выглядел так:
Маленький квадратик играл роль пчелы, а красные препятствия играли роль палок с ульями. Я провозился с MVP около часа и понял, что механика игры была плохой, а сама игра следовательно становилась неинтересной.
Я отказался от этой идеи и взялся за другую.
Идём к следующей идее
Мне очень понравился геймплей игры Road Fighter, и я подумал: «Почему бы не создать многопользовательскую версию игры, в которой гонки организуются регулярно через определенные промежутки времени? Игроки со всего мира смогли бы соревноваться. Гонки будут длиться две минуты и победит тот, кто пройдет быстрее всех».
Эта идея казалась интересной и сложной и с точки зрения разработки. На этот раз MVP был уже не важен, потому что я хотел в точности повторить опыт своей игры в Road Fighter. Я начал создавать графику.
Картинки выше показывают различные итерации оформления интерфейса игры. Проработав над этим концептом два дня, я понял, что теперь моя игра не даёт пользователю уникального опыта. Кроме того, в Google Play уже есть тысячи гонок, да ещё и реализованных на более высоком уровне. Так отпала ещё одна идея.
Следующая итерация
Больше идей у меня не было. Я подумывал о пазлах, об игре со световыми мечами, вариациях на тему 2048 и о многих других жанрах. Но ни один из этих проектов не был мне по-настоящему интересен.
Раньше я был фанатом студии Ketchapp. Все их игры простые, инновационные и весёлые. Я хотел создать что-то простое и захватывающее, что такой инди-разработчик, как я, легко смог бы создать.
Но ничего не прояснялось. Все идеи казались сложными и слишком смелыми. Но когда я уже почти потерял надежду, мне в голову пришла новая идея. Она была простой. Падающий объект с некоторой механикой может толкать объект и замедлять его скорость. Падающий объект будет пересекать прямоугольные отверстия, и за это будут начисляться очки.
В два счёта я подскочил к своему ноутбуку, на котором установлена Android Studio, и быстренько набросал MVP. Всё было прямоугольным.
Чтобы понять, какой будет игра, я создал этот прототип. Квадрат играл роль падающего предмета, а прямоугольные блоки были препятствиями, которые надо проходить. Как и предыдущие MVP, с этим я поработал чуть больше часа, и чем больше я работал над идеей, тем интереснее она мне казалась.
Как только разработчик доделывает базовую механику, наступает очередь создания иллюзии. Мне нужна была история, которая смогла бы объяснить, почему предмет падает. К тому же она должна была создать у пользователя впечатление, что герой выполняет какую-то миссию.
У меня ушло четыре-пять часов на то, чтобы написать маленький рассказ, который подходил бы к концепту игры. После нескольких доработок получилось следующее:
«Помогите Ромео из страны Chicken-land вызволить любовь всей его жизни — Джульетту — из лап Тёмного Дракона. Тёмный Дракон держит Джульетту в плену внутри вулкана. За спиной Ромео есть ракета, которая поможет ему спуститься вглубь вулкана, пройти через разнообразные лабиринты и добраться до Джульетты. Стань супергероем и помоги Ромео найти Джульетту».
Бинго! Итак, фоном будет вулкан, а на спине героя будет ракета. На пути герою должны встречаться мосты, препятствия или стража.
В этот раз я был на гребне волны. Всё стало понятно, и мне оставалось лишь создать красивую основную сцену. Поработав с Adobe Illustrator два-три дня, я создал несколько сцен. Следующие картинки показывают стадии создания фона и героя по мере отработки:
Начальные версии Ромео и фона сцены
То, что у меня получилось, дало мне надежду, и я решил, что смогу ещё лучше. Я стал просматривать портал Dribbble, чтобы найти ещё больше прототипов. Следующие два дня я сидел на порталах Behance и Dribbble, пытаясь понять, каким должен быть идеальный дизайн, чтобы создать впечатляющий игровой опыт.
И наконец я почувствовал, что всё делаю правильно, в результате у меня появились вот такие текстуры для фона. Качество мне понравилось.
Фон был сложный и создавал впечатление, что вы и правда находитесь в пещере. Лично мне всё понравилось, и я решил двигаться дальше.
Следующие 10 дней я работал над кодом, менял текстурный атлас, подгонял его под нужды различных сцен и читал книгу Марио Зехнера «Разработка игр для Android». Книга, кстати, просто потрясающая. Я пользовался структурой, о которой говорилось в этой книге. Тогда я совсем мало знал о таких игровых движках как Unity3D, AndEngine и Libgdx.
Через 10 дней у меня была работающая версия игры на Android Gingerbread 2.3.2. Однако игра всё ещё не казалась мне интересной, так как передвижение героя казалось искусственным и игровой опыт не был примечательным. К этому моменту логика передвижения героя была незатейливой и согласовывалась с моей теорией передвижения ракеты.
Эффекты из реального мира не имели ничего общего с моей игровой ракетой, поэтому я сформировал собственную логику. В результате она очень отошла от реальных законов физики, но зато возник хороший пользовательский опыт. После этого никаких других отладок по движениям героя уже не проводилось.
Основной геймплей был готов, и разработка находилась в той стадии, когда я уже мог передать начальную версию игры друзьям и получить какие-то отзывы. Большинству из них игра понравилась, но они сказали, что фон портил геймплей, и это было абсолютной правдой.
Я никогда не осознавал, что фон настолько важен. И вот я опять вернулся к началу, мне пришлось создавать фон заново. Новый дизайн фона означал также, что придется переделать героя и блоки (к этому времени мне казалось, что зеленый Ромео был уродливый и слишком надуманный).
Я снова начал экспериментировать с фоном. Вот некоторые версии отладки фона, которые я предпринимал, но всё впустую. Всё это время я пытался придерживаться теории, что Ромео падал в пещеру.
Я не был готов отказаться от истории, она казалась очень убедительной. Но позднее я всё-таки от неё отказался, и решил обратить внимание на новую стилистику — небо и облака. Такой фон был проще и ровнее.
История затормозилась. Я понятия не имел, почему герой падает, но я продолжал создавать игру, веря, что со временем осознаю, чем именно занимался герой игры.
Финальная отладка фона и героя уже на небесном фоне
Голубое небо было чистым и многообещающим. Поэтому я решил оставить его как есть. Игра вернулась к первоначальному этапу разработки. Я создал основную сцену, включил в неё небесных стражей. Добавил драконов, чтобы увеличить сложность по мере снижения героя.
Чтобы немного облегчить игрокам жизнь, я ввел систему сбора яиц. Когда игрок собирает 50 яиц, он зарабатывает новую жизнь.
Помимо отладки фона, я проводил много экспериментов с героем и эффектами. Я также запланировал телепортационные трубы, которые совершенно рандомно отправляли игрока вперёд или назад в пространстве. Топливо для подзарядки изначально было создано по-другому.
Предполагалось, что игроки будут приземляться на блоки, в которых содержалось горючее. Однако я отбросил эту идею, мне показалось, что этот опыт совсем не приносит удовольствия.
К концу процесса разработки я уже думал, что в игре нет ничего, что привлечёт людей. В таких простых играх, как эта, очень важным является вопрос «Сколько очков набрали другие игроки?» Я создал рейтинг лидеров. Вы видите глобальный размах и можете понять, на каком месте вы находитесь. Рейтинг стимулирует вас играть снова и снова и вытолкнуть остальных из списка лидеров.
В целом у меня ушло 45 дней на то, чтобы выпустить приложение после устранения ошибок, тестирования и разных эксериментов. Все это время я экспериментировал, тестировал и отлаживал приложение. Я формировал теории, начинал работать с предположениями и пытался навести во всём этом порядок.
Результатом всех бессонных ночей стала финальная версия Rocket Romeo, которая довольно быстро набирает популярность. Вы можете найти это приложение здесь.
Вся эта история и процесс разработки научили меня одной простой вещи: чтобы быть креативным, нужно пробовать разные идеи и, если они не работают, нужно пробовать что-то другое. Пытайтесь решить проблемы разными способами.
Если вы дочитали до конца, я очень вам благодарен. Я надеюсь, что моя маленькая история вдохновит вас на упорный труд и отладку вашего проекта.