W tym roku program społeczno-edukacyjny IT SCHOOL SAMSUNG kończy 5 lat (przeczytaj o IT SCHOOL
Pierwszym takim gościem w tej sekcji był Shamil Magomedov, absolwent SAMSUNG IT SCHOOL z 2017 roku, obecnie student MIEM NRU HSE. Shamil, dziękuję bardzo za poświęcenie czasu na napisanie tego artykułu, pomimo napiętego harmonogramu!
Witam wszystkich!
Dziś chciałbym opowiedzieć o tym, jak dzięki grze przeszedłem od „warunkowego przyjęcia” do SAMSUNG IT SCHOOL do finalisty Ogólnorosyjskiego konkursu na rozwój urządzeń mobilnych
prehistoria
Do SZKOŁY IT trafiłem w 10 klasie. Już od pierwszych dni szkolenia pozostawałem w tyle za innymi chłopakami, co było do przewidzenia jeszcze przed rozpoczęciem kursu (co potwierdzały moje koszmarnie niskie oceny z egzaminów wstępnych). Te wszystkie zasady programowania, struktura platformy Android i język Java, jak to wszystko zrozumieć?
Na szczęście miałem wszystko, czego potrzebowałem, aby skutecznie opanować umiejętności rozwojowe: bezgraniczną chęć poruszania się do przodu i nie zatrzymywania się.
Poświęcając dużo czasu na odrabianie lekcji, ciągle spóźniając się po zajęciach z nauczycielem Władimirem Władimirowiczem Iljanem (miałem z nim niesamowite szczęście), zacząłem dostosowywać się do szybkiego tempa nauki i myśleć o moim projekcie dyplomowym.
Z nauczycielem - V.V. Ilyinem
Szukaj pomysłu
Wiele osób uważa, że podczas tworzenia projektu, czy to startupu, czy czegoś małego w celu zdobycia doświadczenia, cała trudność leży w rozwoju: pisanie pęczka kodu, nauka nowych bibliotek, ciągłe testowanie - horror! Uwierz mi, to wcale nie jest prawda. Rozumowałem dokładnie tak samo, dopóki sam nie stanąłem przed koniecznością wyboru i wdrożenia pomysłu, co okazało się jednym z trudniejszych etapów.
Najtrudniejszą rzeczą w wyborze pomysłu na początkowym etapie nauki jest określenie złożoności realizacji: przez długi czas nie mogłem wymyślić aplikacji, którą byłbym w stanie wykonać, a jednocześnie by mi się spodobała.
Przede wszystkim chciałem napisać grę muzyczną, ale przeszkodziły mi wątpliwości co do moich umiejętności. Wydawało się, że dokończenie pracy nie będzie możliwe i z tego powodu nie raz zmieniałem wybór: mobilny bilard, kręgle, biegacz itp. Ostatecznie wyciągnąłem z tego jedną lekcję: trudności zawsze będą się pojawiać, niezależnie od pomysłu na aplikację, a co za tym idzie najważniejsze jest, aby wybrać to, co lubisz i przejść do końca.
Zawsze lubiłem grę Guitar Hero
Implementacja logiki gry
Podstawową ideą aplikacji takich jak Guitar Hero jest dotykanie ekranu w rytm muzyki.
Przede wszystkim zacząłem wdrażać logikę gry:
- Stworzono klasy nut, przycisków i pasków, po których będą się przesuwać nuty.
- Umieściłem canvas na całym ekranie aplikacji i na nim opisałem już położenie obiektów tworzonych klas.
- Zaimplementowano jednoczesne uruchamianie pliku mp3 z piosenką i szeregiem nut uzyskanych z bazy danych i voila! Pierwsze wersje gry już są na moim smartfonie :)
Pierwsza wersja gry
Tak, wygląda „imponując”, ale to prawie wystarczyło, aby przetestować grę! Ostatnim niezbędnym krokiem była lista nut do utworu, a nad jej wdrożeniem musiałem spędzić dużo czasu.
Zasada jest dość prosta: korzystając z wartości tabeli bazy danych, program tworzy obiekty klasy „Note” i dodaje powstałe notatki do tablicy. Tabela składa się z dwóch kolumn:
- numer wiersza od 1 do 4, w którym powinna znaleźć się notatka oraz
- czas, w którym powinien pojawić się na ekranie.
Po co spędziłem dużo czasu, skoro wszystko jest takie proste? Aby zapełnić tę bazę danych!
Niestety, w tamtym czasie nie wiedziałem, jak zautomatyzować proces uzyskiwania nut w potrzebnym formacie z pliku mp3 utworu, więc musiałem ręcznie wypełniać te kolumny ze słuchu.
Proces wypełniania bazy notatkami
Ta metoda pozwoliła mi wcześnie rozpocząć tworzenie i testowanie gry, ale było jasne, że muszę wymyślić coś innego. Tutaj bardzo mi pomógł mój nauczyciel, Iljin Władimir Władimirowicz, który opowiedział o istnieniu formatu MIDI, wyjaśnił jego strukturę i pomógł mi odkryć bibliotekę, którą znalazłem do pracy z plikami MIDI.
Piękno tego formatu polega na tym, że w nim każdy instrument jest już osobną ścieżką, na której znajdują się określone „nuty”. W ten sposób możesz łatwo przeglądać wszystkie nuty i, w zależności od utworu i czasu, automatycznie dodawać je do bazy danych. To bardzo ważna właściwość, bo to dzięki niej udało mi się rozwiązać problem gier tego gatunku: brak możliwości dodawania własnych utworów. To prawda, że format MIDI ma dużą wadę - dźwięk (wszyscy pamiętamy melodie z gier retro, prawda?).
Stopniowo ulepszając rozgrywkę, doprowadziłem program do stanu w pełni działającego, dodałem wiele „funkcji”: możliwość dodania własnego utworu z pamięci urządzenia lub z katalogu w chmurze, wybór poziomu trudności, tryb dla początkujących i wiele więcej.
I w końcu doszłam do „wisienki na torcie”...
Konstrukcja
To tutaj zaczęło się ucieleśnianie mojej „wizji” gry. Przede wszystkim zacząłem wybierać program do rysowania. Nie miałem żadnego doświadczenia w projektowaniu graficznym, więc potrzebowałem programu, który będzie łatwy w nauce (swoją drogą Photoshop), ale jednocześnie elastyczny i wygodny (Paint, przepraszam). Wybór padł na Inkscape - dobre narzędzie do edycji obrazów wektorowych, głównie w formacie svg.
Po zapoznaniu się nieco z tym programem zacząłem rysować każdy element gry i zapisywać go w różnych rozdzielczościach, odpowiednich dla różnych rozmiarów ekranów urządzeń. Były też próby wprowadzenia animacji eksplozji banknotów i pomimo nieprzydatności powstałego projektu, byłem zadowolony. Oczywiście równolegle z finalizacją projektu kontynuowałem pracę nad projektem, dodając nowe kolory (gradienty to miłość „od pierwszego wejrzenia”).
Pierwsza wersja projektu (dwa ekrany, brak animacji, stara nazwa)
Druga wersja projektu (4 ekrany, ekran początkowy płynnie pulsuje różnymi kolorami, wszędzie gradienty)
Obroniłem swój projekt finałowy i bardzo się ucieszyłem, gdy dowiedziałem się, że przeszedłem eliminacje i zostałem zaproszony do finału konkursu aplikacyjnego SZKOŁA IT. Do konkursu został mi około miesiąc i poważnie myślałem o zatrudnieniu bardziej profesjonalnej osoby w dziedzinie projektowania. Poszukiwania nie poszły na marne: jak się okazało, bliski przyjaciel mojego brata jest znakomitym projektantem! Od razu zgodziła się mi pomóc, a obecny projekt gry jest jej zasługą.
Ostateczny projekt
Publikacja
Po zakończeniu prac nad wersją wydawniczą od razu przystąpiłem do przygotowywania aplikacji do publikacji w Google Play Market. Standardowa procedura: uzyskanie konta programisty, utworzenie strony aplikacji itp. Ale ten rozdział nie jest o tym.
Najbardziej zaskakującą rzeczą w tej historii są statystyki pobrań. Początkowo liczba pobrań DrumHero rosła stopniowo i prawie równomiernie w niektórych krajach Europy, USA i krajach WNP, ale minął miesiąc i liczba pobrań osiągnęła 100 000 pobrań! Ciekawostką jest to, że większość pobrań pochodziła z Indonezji.
wniosek
DrumHero to mój pierwszy poważny projekt, w którym nauczyłem się programować. Nie tylko doprowadził mnie do ogólnorosyjskiego finału konkursu projektu SAMSUNG IT SCHOOL, ale także dał mi duże doświadczenie w projektowaniu graficznym, GameDev, interakcji z usługą Play Market i wielu innych.
Oczywiście teraz widzę wiele niedociągnięć w grze, choć dziś liczba pobrań osiągnęła prawie 200 000. W planach mam wydanie nowej wersji, są pomysły jak zwiększyć stabilność, usprawnić rozgrywkę i zwiększyć liczbę pobrań.
FAQ:
SAMSUNG IT SCHOOL to bezpłatny, stacjonarny program edukacji dodatkowej dla uczniów szkół średnich, działający w 25 miastach Rosji.
Projekt dyplomowy studentów to aplikacja mobilna. Może to być gra, aplikacja społecznościowa, planista, cokolwiek tylko chcą.
Zgłoszenia na szkolenie można składać od września 2019 r. o godz
Źródło: www.habr.com