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

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

    Всем привет!

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

    image

    Предыстория


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

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

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

    image

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

    Поиск идеи


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

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

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

    image

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

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


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

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


    image

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

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

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

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



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

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

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

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

    Дизайн


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

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



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



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

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



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

    Публикация


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

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

    Заключение


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



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

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

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

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

    Самое читаемое