DrumHero: Как я делал первую в жизни игру

В этом году социально-образовательной программе IT ШКОЛА SAMSUNG исполняется 5 лет (читайте об IT ШКОЛЕ здесь), и по этому случаю мы предложили нашим выпускникам рассказать о себе и опыте создания своих мобильных приложений. Мы верим, что при большом желании каждый может достичь успеха!

Первым таким гостем в этой рубрике стал Шамиль Магомедов, выпускник IT ШКОЛЫ SAMSUNG 2017 года, ныне студент МИЭМ НИУ ВШЭ. Шамиль, большое спасибо, что, несмотря на загруженность, ты нашел время написать эту статью!

Всем привет!
Сегодня я хотел бы рассказать о том, как я превратился из “условно зачисленного” в IT-ШКОЛУ SAMSUNG в финалиста всероссийского конкурса по мобильной разработке благодаря игре DrumHero.

DrumHero: Как я делал первую в жизни игру

Предыстория

Я поступил в IT ШКОЛУ, когда учился в 10-ом классе. С самых первых дней обучения я отставал от других ребят, и это было предсказуемо еще до начала курса (об этом говорили мои ужасно низкие баллы вступительного экзамена). Все эти принципы программирования, устройство платформы Android и языка Java, как это все понять?

К счастью, у меня было все, что нужно для успешного освоения навыков разработки: безграничное желание идти вперед и не останавливаться.

Уделяя большое количество времени домашним заданиям, постоянно задерживаясь после пар с учителем Владимиром Владимировичем Ильиным (с ним мне безумно повезло), я начал подстраиваться под быстрые темпы обучения и задумываться о выпускном проекте.

DrumHero: Как я делал первую в жизни игру

С учителем — В.В.Ильиным

Поиск идеи

Многие думают, что при создании проекта, будь то стартап или что-то небольшое для получения опыта, вся сложность заключается именно в разработке: писать кучу кода, изучать новые библиотеки, постоянно тестировать — ужас! Поверьте, это совсем не так. Я рассуждал ровно так же, пока сам не столкнулся с необходимостью выбрать и реализовать идею, оказалось, это один из самых непростых этапов.

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

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

DrumHero: Как я делал первую в жизни игру

Мне всегда нравилась игра Guitar Hero

Реализация игровой логики

Основная идея приложений типа Guitar Hero — это нажатие на экран в ритм музыки.
Первым делом я приступил к реализации игровой логики:

  1. Создал классы нот, кнопок и полос, по которым будут двигаться ноты.
  2. Разместил полотно на весь экран приложения и на нем уже расписывал расположение объектов созданных классов.
  3. Реализовал одновременный запуск mp3 файла песни и полученных из базы данных массива нот и вуаля! Первые наброски игры уже на моем смартфоне 🙂

DrumHero: Как я делал первую в жизни игру

Первая версия игры

Да, выглядит “впечатляюще”, но этого было почти достаточно для тестирования игры! Последним необходимым шагом являлся список нот для песни, и над его реализацией мне пришлось посидеть немало времени.
Принцип довольно прост: по значениям таблицы базы данных программа создает объекты класса “Нота” и добавляет полученные ноты в массив. Таблица состоит из двух колонок:

  • номер линии от 1 до 4, по которой должна пойти нота и
  • время, в которое она должна появиться на экране.

На что же я потратил много времени, если все так просто? На заполнение этой базы данных!
К сожалению, на тот момент я не мог придумать, как автоматизировать процесс получения нот в нужном мне формате из mp3-файла песни, и поэтому мне пришлось вручную заполнять эти колонки на слух.

DrumHero: Как я делал первую в жизни игру

Процесс заполнения базы данных нотами

Этот способ позволил мне заняться разработкой и тестированием игры уже на первых порах, но было ясно, что нужно придумать что-то другое. Тут мне очень помог мой учитель, Ильин Владимир Владимирович, который рассказал о существовании MIDI-формата, объяснил его устройство и помог разобраться с найденной библиотекой для работы с MIDI файлами.

Прелесть этого формата заключается в том, что в нём каждый инструмент — это уже отдельная дорожка, на которой располагаются определенные “ноты”. Таким образом, можно циклом легко обрабатывать все ноты и в зависимости от дорожки и времени автоматически добавлять их в базу данных. Это очень важное свойство, ведь именно благодаря ему у меня получилось решить проблему игр такого жанра: отсутствие возможности добавления своих песен. Правда, у MIDI-формата есть большой минус — звук (все мы помним мелодии в ретро-играх, так ведь?).

Постепенно улучшая игровой процесс, я довел программу до вполне рабочего состояния, добавил много “фич”: возможность добавления своей песни из памяти устройства или из облачного каталога, выбор уровня сложности, режим новичка и многое другое.
И наконец я дошел до “вишенки на торте”…

Дизайн

Тут-то и началось воплощение моего “видения” игры. Первым делом я начал выбирать программу для рисования. Опыта в графическом дизайне у меня не было никакого, поэтому мне нужна была простая в освоении (Photoshop — мимо), но при этом гибкая и удобная программа (Paint, прости). Выбор пал на Inkscape — хороший инструмент для редактирования векторных изображений, преимущественно формата svg.

Немного освоившись в этой программе, я стал прорисовывать каждый элемент игры и сохранять его в разных разрешениях, подходящих для различных размеров экрана устройств. Также были попытки реализовать анимацию взрыва нот, и несмотря на негодность полученного дизайна, я был доволен. Безусловно, параллельно с доработкой проекта я продолжал работать над дизайном, добавляя новые краски (градиенты — это любовь “с первого взгляда”).

DrumHero: Как я делал первую в жизни игру

Первая версия дизайна (два экрана, без анимации, старое название)

DrumHero: Как я делал первую в жизни игру

Вторая версия дизайна (4 экрана, начальный экран плавно пульсирует разными цветами, везде градиенты)

Я защитил выпускной проект и был очень рад, когда узнал, что прошел отборочный тур и был приглашен в финал конкурса приложений IT ШКОЛЫ. У меня оставалось около месяца до конкурса, и я серьезно задумался о привлечении более профессионального в сфере дизайна человека. Поиски не прошли даром: как оказалось, близкая подруга моего брата — отличный дизайнер! Она сразу же согласилась помочь мне, а текущий дизайн игры — её заслуга.

DrumHero: Как я делал первую в жизни игру

Финальная версия дизайна

Публикация

После завершения работы над релиз-версией я сразу начал подготавливать приложение к публикации в Google Play Market. Стандартная процедура: приобретение аккаунта разработчика, составление страницы приложения и т.д. Но данный раздел не об этом.

Самое удивительное в этой истории — статистика скачиваний. Первое время количество скачиваний DrumHero увеличивалось постепенно и почти равномерно по некоторым странам Европы, США и странам СНГ, но прошел месяц и число скачиваний достигло отметки в 100 000 скачиваний! Интересен тот факт, что большая часть скачиваний пришлась на Индонезию.

Заключение

DrumHero — мой первый серьезный проект, на котором я учился программировать. Он не просто вывел меня во всероссийский финал конкурса проектов IT ШКОЛЫ SAMSUNG, но и подарил большой опыт в графическом дизайне, в GameDev, во взаимодействии с сервисом Play Market и во многом другом.

DrumHero: Как я делал первую в жизни игру

Конечно, сейчас я вижу в игре немало недостатков, хотя на сегодня число скачиваний достигло почти 200 000. В моих планах выпустить новую версию, есть идеи, как повысить стабильность, улучшить игровой процесс и увеличить количество скачиваний.

Справка:
IT ШКОЛА SAMSUNG — это бесплатная очная программа дополнительного образования для старшеклассников, работает в 25 городах России.
Выпускной проект учеников — это мобильное приложение. Это может быть игра, социальное приложение, планировщик — всё, что им захочется.
Подать заявку на обучение с сентября 2019 года можно на сайте программы.


Источник: habr.com

Добавить комментарий