У гэтым годзе сацыяльна-адукацыйнай праграме IT ШКОЛА SAMSUNG спаўняецца 5 гадоў (чытайце пра IT ШКОЛУ
Першым такім госцем у гэтай рубрыцы стаў Шаміль Магамедаў, выпускнік IT ШКОЛЫ SAMSUNG 2017 года, цяпер студэнт МИЭМ НИУ ВШЭ. Шаміль, вялікі дзякуй, што, нягледзячы на загружанасць, ты знайшоў час напісаць гэты артыкул!
Усім прывітанне!
Сёння я хацеў бы распавесці аб тым, як я ператварыўся з "умоўна залічанага" у IT-ШКОЛУ SAMSUNG у фіналіста ўсерасійскага конкурсу па мабільнай распрацоўцы дзякуючы гульні
перадгісторыя
Я паступіў у IT ШКОЛУ, калі вучыўся ў 10-ым класе. З самых першых дзён навучання я адставаў ад іншых рабят, і гэта было прадказальна яшчэ да пачатку курса (пра гэта казалі мае жудасна нізкія балы ўступнага іспыту). Усе гэтыя прынцыпы праграмавання, прылада платформы Android і мовы Java, як гэта ўсё зразумець?
На шчасце, у мяне было ўсё, што трэба для паспяховага засваення навыкаў распрацоўкі: бязмежнае жаданне ісці наперад і не спыняцца.
Удзяляючы вялікую колькасць часу дамашнім заданням, пастаянна затрымліваючыся пасля пар з настаўнікам Уладзімірам Уладзіміравічам Ільіным (з ім мне шалёна пашанцавала), я пачаў падладжвацца пад хуткія тэмпы навучання і задумвацца аб выпускным праекце.
З настаўнікам - В.В.Ільіным
Пошук ідэі
Многія думаюць, што пры стварэнні праекта, няхай гэта будзе стартап ці нешта невялікае для атрымання вопыту, уся складанасць заключаецца менавіта ў распрацоўцы: пісаць кучу кода, вывучаць новыя бібліятэкі, пастаянна тэсціраваць — жах! Паверце, гэта зусім не так. Я разважаў роўна гэтак жа, пакуль сам не сутыкнуўся з неабходнасцю абраць і рэалізаваць ідэю, аказалася, гэта адзін з самых няпростых этапаў.
Самае складанае ў выбары ідэі на пачатковай стадыі навучання - гэта вызначэнне складанасці рэалізацыі: я доўга не мог прыдумаць дадатак, якое было б мне па сілах і ў той жа час падабалася мне.
Больш за ўсё хацелася напісаць менавіта музычную гульню, але сумневы ў сваіх сілах вельмі перашкаджалі. Здавалася, што не атрымаецца давесці справу да канца, і з гэтай прычыны я не адзін раз мяняў свой выбар: мабільны більярд, боўлінг, раннер і г.д. У канчатковым выніку я вынес з гэтага адзін урок: складанасці будуць узнікаць заўсёды, незалежна ад ідэі прыкладання, і таму самае галоўнае - выбраць тое, што падабаецца і ісці да канца.
Мне заўсёды падабалася гульня Guitar Hero
Рэалізацыя гульнявой логікі
Асноўная ідэя прыкладанняў тыпу Guitar Hero - гэта націск на экран у рытм музыкі.
Перш за ўсё я прыступіў да рэалізацыі гульнявой логікі:
- Стварыў класы нот, кнопак і палос, па якіх будуць рухацца ноты.
- Размясціў палатно на ўвесь экран прыкладання і на ім ужо распісваў размяшчэнне аб'ектаў створаных класаў.
- Рэалізаваў адначасовы запуск mp3 файла песні і атрыманых з базы дадзеных масіва нот і вуаля! Першыя накіды гульні ўжо на маім смартфоне 🙂
Першая версія гульні
Так, выглядае "ўражліва", але гэтага было амаль дастаткова для тэсціравання гульні! Апошнім неабходным крокам з'яўляўся спіс нот для песні, і над яго рэалізацыяй мне прыйшлося пасядзець нямала часу.
Прынцып даволі просты: па значэннях табліцы базы дадзеных праграма стварае аб'екты класа "Нота" і дадае атрыманыя ноты ў масіў. Табліца складаецца з двух калонак:
- нумар лініі ад 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 года можна на
Крыніца: habr.com