Привет, мир или рождение 500-метровой звезды программирования -15


Привет, мир!


Всем привет. Меня зовут Илья, я живу во Владивостоке и моё хобби — программирование. Сразу хочу сказать, что мне 15 18 лет (я не уверен, можно ли размещать несовершеннолетним свои статьи на Хабре). Мой никнейм — Скарамуш, единственный, но, к сожалению, весьма повторимый (даже здесь его кто-то успел занять). Почему Скарамуш? Да потому что так называется моя любимая книга, написанная английским мастером пера Рафаэлем Сабатини. Главный герой книги — Андре-Луи Моро, гордо несущий по жизни роль Скарамуша (вообще Скарамуш — это один из персонажей классической итальянской комедии, хитрый малый, вечно плетущий интриги), является человеком остроумным, находчивым, решительным и ловким. Я такой же. Наверное. (Особенно ловок я был вчера, когда разбил кружку об унитаз. Даже не спрашивайте, что я делал).

Итак, для чего я всё это пишу? Буквально на днях я закончил и выложил в Play Market игру, над которой работал 7 месяцев. Можно было сделать всё гораздо быстрее, но мне было некуда, да и незачем торопиться. Добавьте к этому то, что я довольно ленивый человек. Мой график никогда не был очень напряжённым, где-то час в день 2-3 раза в неделю я занимался своим проектом (периодические я устраивал себе отпуски, вечерами не зависая за кодом в Android Studio, а рубя монстров в третьем Ведьмаке или грабя корабли в четвёртом Ассасине. Между прочим, мои любимые игры). И вот, наконец, N (дабы не возникали конфликты с политикой Habrahabr, которую я, несомненно, очень уважаю, здесь и далее будем называть её так) вышел.

Вы наверняка спросите меня, что же в этом такого? У половины Хабравчан в Play Market или App Store есть приложения, которые они разрабатывали в команде или же сами. Но для меня — это вершина одной из гор программирования. Пока что это плюгавенький холмик метров так в 500, но в моих планах Эверест. Главное, не стать одним из трупов, которые усеивают путь к его вершине (как красиво сказал. Кстати, я ещё и поэт, даже есть своя страничка с 600 читателями на Стихах.ру. Хотите послушать? Нет? Ну ладно). Но не будем о грустном.

Так вот, раз я теперь 500-метровая Звезда Программирования, то я просто обязан рассказать вам, как я добился такого успеха. Думаю, всем будет интересно (нет).

Глава 1. Рождение 500-метровой Звезды программирования


Всё началось в «5» классе. Сейчас я уже в «9» университете, так что мой путь длится довольно долго (повторюсь, я не знаю, можно ли несовершеннолетним публиковать статьи. Кстати, почему есть движение женщин, которые считают, что их права ущемляют, но не такого же движения подростков? Надо подкинуть идею правозащитникам. Судите сами: за двойку в школе родители могут выпороть и забрать компьютер, а в магазинах не продают Blazer и Bond с кнопкой. Возмутительно).

Как я уже говорил, всё началось в «5» классе. Тогда у нас был замечательный учитель информатики, С. А., бывший милиционер, вышедший на пенсию. Правда, на тот момент у нас были не лучшие отношения, потому что весь курс «5» класса склонялся к «Word — это текстовой редактор...», что заставляло меня ужасно скучать на уроках. Единственным развлечением были разговоры с одноклассниками, но эти маленькие бунты подавлялись очень быстро и жестоко. Мда.

Однако, в один прекрасный день С. А. не сказал своего привычного «Открываем учебники на странице...». Он сказал: «Слушаем». И мы слушали.

Уж не знаю почему, но он решил отклониться от школьной программы и рассказать нам об HTML. Все записывали кучу терминов и тегов, сидя с умным видом и кивая головой. Но вот только в них, головы глупых 10-летних детей, если что-то и помещалось, то вряд ли находило понимание. Мы просто понятия не имели, что значит «гипертекстовой документ» и как его можно создать из каких-то тегов. Да и вообще, зачем?

Понимание пришло потом, когда от громоздкой теории мы перешли к непосредственной практике. До нас конец дошло, что «гипертекстовые документы» — это не что-то, выходящее за рамки осознания, а всего лишь сайты, которые опутывают нас миллионами нитей в Вебе. В то время уже у всех был интернет и почти каждый имел свою страничку в ВК. Это был 2013 год.
Затем, ближе к концу учебного года пошли зачёты. Чтобы получить хорошую четвертную оценку, вам надо было создать свой небольшой локальный сайт в 1-2 страницы на школьном компьютере.

Я выбрал тематический сайт, посвящённый моему родному городу — Владивостоку. Это был весьма амбициозный проект, так как я решил, что его главная страница сайта будет состоять из двух фреймов: на одном будут разделы сайта, а на другом статьи, посвящённые той или иной теме.

Мне не удалось полностью реализовать свой проект — работал лишь правый фрейм со статьями. Чего я только не делал, но левый, с разделами сайта, не работал. Сейчас я знаю, что ошибся где-то в ссылке, указывающей на файл с фреймом, но тогда мне это было невдомёк.

Я сдал зачёт. На фоне отсталости проектов остального класса, в которых даже стандартный набор тегов html, head, /head, body, /body, /html был написан с ошибками, мой сайт с хромым фреймом выглядел весьма достойно хотя бы потому, что правая часть работала исправно (я не говорю, что я гений, просто я учусь в обычной школе с детьми из не самых благополучных семей, которых я всё равно искренне ценю и люблю). В четверти и году мне поставили «5».
Затем наступило лето уже 2014, в которое я впервые выехал за границу СНГ. У меня было слишком много впечатлений, чтобы помнить какой-то HTML, а уж тем более чинить свой неисправный фрейм. Мне было всё равно.

Глава 2. Всё новое — хорошо забытое старое


Прошёл ровно год, наступило лето 2015. Школа закончилась пару неделю назад, и я разбирал свой портфель. Во внутреннем кармане, где я хранил ручки, ластики и карандаши, лежала давно забытая красная флешка, которую я считал потерянной. Честно говоря, я даже не знаю, как она там оказалась. Это было неважно. Важно было то, что на ней хранился мой сайт.
Как бы молод не был человек, ему всегда присуща способность ностальгировать. Наверное, тогда я испытывал что-то вроде этого. Было забавно посмотреть на своё творение годовалой давности, каким бы убогим оно не было. Не знаю почему, но мне захотелось восстановить его.
Я полез искать свою старую тетрадку по информатике, но мне так и не удалось найти её. Может быть, я выкинул её. Не знаю.

На самом деле, это сыграло немаловажную роль в моём развитии, ведь мне пришлось выйти из зоны своего комфорта, зоны своей старой тетради, и пойти искать материал по HTML в интернете.

Первым сайтом в строке поиска мне попался HTML-book, как по мне, так самый лучший HTML-справочник: всё весьма точно, лаконично и понятно. Я быстро прочитал основные моменты создания сайта, а затем, во время разработки, лишь иногда заглядывал на него, чтобы посмотреть тот или иной тег.

Где-то за неделю я восстановил свой сайт, добавив на него ещё пару статей и даже найдя для него бесплатный хостинг, куда я его и залил.

Прочитав весь HTML-book и немного изучив на нем CSS, я решил разузнать о JavaScript, упоминания которого мне часто встречались. Программирование было довольно забавной штукой для меня, так что я подумал: «Почему бы и нет?» — и взялся за JS.

Глава 3. JS — всему голова


Многие придерживаются мнения, что начинать нужно с лёгких языков программирования, вроде Pascal или SmallBasic. Не соглашусь. По моему мнению, главное — это понять принципы работы алгоритмов, чтобы их понимать, а также научиться мыслить логически, чтобы их создавать. Первое довольно нетрудно, а второе заложено в каждом из нас. Так зачем же учить примитивные языки, которые за рамками программы обучения вам никогда не пригодятся? Но это моё личное мнение, я его никому не навязываю. Лучше вернёмся к моему рассказу.
За лето, изучая JS благодаря сайту learn-javascript, отличному ресурсу, как для новичков, так и для продвинутых пользователей, я написал немало односложных проектов, вроде «Число, наибольшее из трёх», «Калькулятор» или «Вычисление значения по той или иной формуле», что является стандартным набором заданий, для новичков в программировании. Однако для меня это было очень круто, и я не мог дождаться первого урока информатики в новом учебном году, чтобы всё показать своему учителю.

Он одобрил мои начинания, указал кое-какие недочёты в коде и напутствовал не останавливаться на достигнутом. А я и не собирался.

Кажется, я уже говорил, что «Ведьмак 3» — моя любимая игра. Если в неё кто-то играл, то наверняка помнит забавную карточную мини-игру «Гвинт». Больше «Гвинта» я любил только «Ведьмака». И программирование. (Ещё я люблю лимонад, который продаётся в соседнем магазине на розлив. А если вместе с ним ещё и гренок… Ммм).

Думаю, вы уже поняли, какой проект я решил реализовать. Это было прикольно. Во время разработки меня больше всего интересовала механика самого языка, таких вещей, как анимации или таймера, особенно было забавно работать с DOM. Дизайн же и внешний вид игры меня мало беспокоили. Всем этим я занимался месяца 3 или 4, не помню. А потом забросил. Мне просто надоело.



"… меня больше всего интересовала механика самого языка, таких вещей, как анимации или таймера, особенно было забавно работать с DOM. Дизайн же и внешний вид игры меня мало беспокоили..."

Как раз тогда проходил конкурс по всем школам на лучший сайт, посвящённый нашему городу. Угадайте, кто принял в нём участие?

От нашей школы я был единственным кандидатом на конкурс. Я один защищал интеллектуальную честь школы, так как все остальные либо не делали вообще ничего, либо защищали честь физическую — различные спортивные соревнования (у них это тоже не особо получалось).

Честь школы для меня всё-таки что-то значила, поэтому я усиленно начал работать над своим сайтом: полное изменение дизайна, введение поисковой системы, работающей на JS, написание и вёрстка новых статей.

Мои дизайнерские способности всегда оставляли желать лучшего (ну вот не дано мне всё, что связано с дизайнингом и рисованием — рисую я вообще на уровне первоклассника, страдающего от аутизма), однако сайт, по моему мнению, выдался весьма сносным.По-моему мнению.

Проект даже не прошёл на рассмотрение, как я позже узнал. Мне не отказали, нет, его просто даже не рассмотрели. Уж не знаю, почему.

Через месяц после этой истории, я познакомился с победителем прошлого конкурса. Он был на 4 года старше меня, и им оказался сын С. А., моего учителя информатики.

Он в открытую сказал мне, что делал свой проект через сайт-конструктор. Нет, я не стараюсь принижать его заслуги, он действительно проделал отличную работу: приятный дизайн, лёгкая навигация по сайту, большое количество хороших фотографий Владивостока (он настолько заморочился, что разыскал всех авторов фотографий, чтобы взять у них разрешение на их использование). Просто было немного обидно, что мой сайт, который я делал полностью вручную, даже не посмотрели. Ну и ладно.



Здесь должны были быть скриншоты моего чудесного, замечательного и великолепного сайта, но, к сожалению, не менее чудесный, замечательный и великолепный сервис uCoz удалил его неделю назад, о чём я узнал только во время написания статьи. У меня ужасно бомбит, так как никаких бэкапов сайта я не делал, но винить, кроме себя, некого — я прекрасно знал, что uCoz регулярно шлёт мне такие письма «счастья». Мораль басни такова: всегда делайте бэкапы всего на свете и почаще проверяйте свою почту. Не удивляйтесь, что письмо помечено 25-ым октября: я заметил его лишь через полтора месяца, плюс я уже больше месяца пытаюсь пробиться через модерацию. Жизнь сложна. Кстати, здесь, в данном участке текста, не работает тег «hr», и я не знаю, почему. Просто представьте, что тут стоит линия. Серенькая такая. Вжух.

Я окончательно забил на HTML и CSS, так как они мне ужасно надоели, а также и на JS, ибо структура веб-разработки меня разочаровала и повергла в уныние после просмотра парочки open-source проектов. Возможно, на это также повлиял провал в конкурсе, как никак, это ударило по моему самолюбию. Я отправился искать новую пристань в бескрайнем океане программирования…

Глава 4. Новая пристань


И нашёл. Этой пристанью оказалась мобильная разработка приложений под Android в среде Android Studio, отличное руководство по которой я нашёл на сайте developer-Android.

Знаете, что стало моим первым проектом? Правильно, снова «Гвинт». С тех пор, как я делал его на JS прошло немало времени, почти полгода, так что мне захотелось повторить свой проект, полностью переработав и улучшив его.

На новый «Гвинт» у меня также ушло 3-4 месяца, и я также забросил его, не доделав (вообще, это моя фишка — забрасывать незаконченные проекты. Единственным исключением стал N).
В этот раз я уделял больше внимания визуальной части, даже не поленился совместить поля для карт с рисунками бэкграунда, однако по-прежнему в приоритете для меня являлась механика и работа языка. Здесь всё было гораздо интереснее: богатые возможности анимации, языка, которым являлся Java, а также самой студии.



Скриншоты моего «Гвинта 2.0», написанного на Java


Потом снова начались долгие поиски самого себя, в особенности идей для своего проекта. В то время я ненадолго увлёкся Unity, было интересно посмотреть, как разрабатывают серьёзные игры. Но вскоре у меня просто голова пошла кругом от того, что нужно уметь Unity-разработчику: умение создания и работы с 3D-моделями, умение работы с 3D-анимациями, а главное, знание синтаксиса странного заигрывания Unity с JS, которое называлось UnityScript и нормальное и полное описание которого я так и не смог найти (я знаю, что для всех этих дел есть C#, но Visual Studio почему-то установилась очень коряво, половина её компонентов не работала, а заниматься переустановкой мне не хотелось). Единственное, что мне безумно понравилось в Unity — это процесс террэйнинга. Он восхитителен.

Довольно забавно, что этот период моей жизни — освоение Android Studio и Unity был таким долгим, а написать получилось столь мало. Что ж, так всегда: малозначительного и неважного гораздо больше, чем важного и ценного.

Глава 5. Что-то кончается…


Итак, мы подходим к финалу моего рассказа. Продолжаю.

В конце концов, в апреле этого года, пока что ещё 2017, я вернулся в Android Studio с новой идеей для своей игры, которую я назвал N. Неделю ушла на создание концепции игры, проработку её сюжета и вселенной, после чего я приступил к коду.

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

Потом дела шли всё хуже и хуже, я меньше уделял время N, тем более, что опять наступило лето. К тому же, я потерял своего художника, который на добровольных основах обещал мне пару артов к игре, что тоже не способствовало улучшению моего настроения.

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

По ходу разработки, многие начальные идеи изменились. Например, вместо запланированных 10 глав было решено сначала сделать только 3, а затем, если к игре будет проявлен интерес — выпускать по 1 в месяц. Также вместо отдела с дополнительными материалами, этакого личного альбома главного героя, куда должны были отправиться арты и саундтрек игры, получилось ни-че-го.

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

Ну и сама игра: я старался создать интересную историю, которая иногда будет вызывать у игрока улыбку, а иногда заставит его задуматься. В то же время, я пытался сделать атмосферу игры не жутко-отталкивающей, а приятной, чему немало способствует саунд, который я сам сделал благодаря одной чудесной программки, чтобы игрок мог вечером, после тяжёлого дня, зайти в N и немного расслабиться за ним, как за книгой, не забивая себе голову бесконечным количеством имён и сюжетных поворотов, хотя игра и не является прямолинейной: у вас всегда есть выбор.

Глава 6. Что-то начинается…


Итак, что теперь? N выгружен в Play Market и сейчас имеет целых 3 скачивания и 3 оценки. Первую поставил мой друг (5 баллов), вторую я (4 балла, как самокритично), а третью (5 баллов) оставил какой-то хороший человек, чей ник мне по каким-то причинам даже не высвечивается. Чёрт возьми, я не знаю, кто ты, но спасибо. Серьёзно.

… я не знаю, кто ты, но спасибо…

Ладно, продолжим подводить итоги. N загружен, но найти его можно только через поисковую строку по названию. Я понятия не имею, как выводить его хотя бы в топ-500 в разделе «Приключения», куда я его и добавил. Хотя нет, есть пара идей. Первое: перевести игру на английский, чем я сейчас и занимаюсь (благо, знание языка позволяет), что, возможно, повлияет на популярность игры, да и вообще не будет лишним. Второе: надеюсь, что после прочтение этой статьи, на которую у меня ушло 4 дня и которую, возможно, вы оцените по достоинству, у кого-то возникнет интерес к моей игре. Моя стратегия идеальна.

Честно говоря, я не знаю, что ещё сказать, поэтому закончу свой пусть и скомканный, но всё же замечательный рассказ замечательной фразой из замечательной игры: «Что-то кончается, что-то начинается...»

Глава ??? Post scriptum


Я не был бы собой, если бы смог всё так внезапно закончить…

P.S.: За эти 4 дня написания статьи, за которые я заново прожил 4 года своей жизни, я понял, что программирование — это одна из самых великолепных вещей, которая случалась в моей жизни. Всем своим читателям я хочу сказать «спасибо» и пожелать успехов в бескрайнем океане жизни. Она всем нам нужна.

P.P.S.: Ну как же без этого… Если кому-то вдруг станет любопытно взглянуть на моё детище N, вам стоит лишь попросить – я обязательно выложу на него ссылку в комментариях.

Всем желаю удачи. Ещё увидимся.




К сожалению, не доступен сервер mySQL