Как стать автором
Обновить
104.84
Samsung
Все дело в Samsung

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

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

Всем привет!

Меня зовут Шамиль Магомедов, я выпускник IT ШКОЛЫ SAMSUNG 2016 года, в настоящий момент — студент МИЭМ НИУ ВШЭ. Сегодня я хотел бы рассказать о том, как я превратился из “условно зачисленного” в 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 года можно на сайте программы.
Теги:
Хабы:
Всего голосов 13: ↑10 и ↓3+7
Комментарии0

Публикации

Информация

Сайт
www.samsung.com
Дата регистрации
Дата основания
1938
Численность
Неизвестно
Местоположение
Южная Корея
Представитель
Татьяна Волкова