December 30, 2019

Мой 2019

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

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


Курсовая работа

Я реально не помню чем занимался до апреля. Да и сам апрель не особо помню. Возможно просто писал очередной код на Годо, который никому не пригодится? Возможно. По крайней мере мою активность можно более-менее отследить в Twitter и GitHub в любое время дня и ночи.

В апреле так получилось, что экстренно познакомился с такими языком, как PHP. В то время, пока мои однокурсники писали сайты на таблицах, я спал по 4-6 часов, забивал на учёбу, знакомился с кривым миром веба и пилил сайт кинотеатра. Это было ужасно. Сейчас я бы за такое не взялся, но тогда я не знал в какое "загадочное чудо" я наступаю.

Шаблоны, SQL запросы средней сложности, адаптивная вёрстка, дизайн - это лишь малая часть того, что я изучил за неделю написания сайта. Сейчас этот сайт возможно уже не найти в свободном доступе, но если и найду, то обязательно закину на GitHub. Пусть пылиться. Будет что вспомнить.

Из всей курсовой работы я написал только сайт (таков был уговор). На всё было потрачено около недели непрерывной работы, было написано более 6к строк (с учётом многочисленных оптимизаций) и изучено много нового. Так же в последние сутки была написана админ-панель. Я её отделил как в данном тексте, так и в работе. Она была связана с сайтом только БД. Это была полностью самостоятельно существовавшая часть сайта со своим дизайном, которым я горжусь. Какой адекватный человек будет писать отдельный дизайн для какого-то раздела сайта, когда осталось так мало времени? Я же не просто делал дизайн, а полностью продумал архитектуру, сделав её модульной и простой одновременно. Это было на столько прекрасно, что у преподавателя, принимавшего курсовую возникло подозрение, что для админ-панели использовался какой-то фреймворк. Чёрт! Приятно слышать, что без 5ти минут в вебе я уже написал что-то действительно стоящее и сложное.

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

Самое забавное в этой истории - я сделал этот сайт за "спасибо" и значительно перестарался. Получился слишком хороший сайт. Почему я не взял за него деньги? Это был мой личный выбор, о котором я не жалею. Сегодня на вопрос "За сколько бы ты смог сделать такой сайт?" я спокойно отвечаю "Это не важно. У тебя всё равно нет столько денег". Это был отличный опыт и в этом году я его только повторю, потому что в этом году эту курсовую придётся снова писать, но в этот раз для себя.


Вклад в Godot

Об этом я писал уже чуточку раньше в своём Telegram канале, но сделал это несколько урезано.

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

Это продлилось относительно недолго и уже через неделю я решил допинать себя и сделать что-то полезное для Godot. Точнее полезное я начал делать ещё в начале апреля, но раз история идёт последовательно, то некоторые вещи я вспоминаю уже по ходу написания статьи. Так вот. Весной я решил, что настало наконец время сделать вклад в развитие Годо и наконец сделать физику автомобилей адекватной. Сделал форк движка и понеслось. Это было сложно, долго и безрезультатно. Почти. Физику автомобиля я всё же поправил, но мне этого было мало и я пошёл дальше, стараясь напихать как можно больше фитч в физику авто. Это не имело смысла, потому что колёса проваливались в "текстуры", а занос был таким, что лучше бы его не было. Серёзно. И я это не мог поправить. И забросил эту идею вместе с открытым таском на GitHub.

Я не буду вдаваться в подробности, как это было выше. Скажу лишь то, что для работы с исходниками мне пришлось познакомиться с C++, научиться ориентироваться в коде большого проекта и стараться пробивать как можно больше фейспалмов. И на то были причины:

  1. Код автомобиля был изначально написан ещё для физического движка Bullet 2, корни которого сейчас остались в Годо в виде Godot Physics. Это забавно, но в новой версии буллета код не особо-то и изменился.
  2. Качество кода. Там было ужасно всё. Разные имена одного типа (в Годо используется t_real вместо float и double, потому что Годо сам определяет какой именно тип должен быть там). В этом же куске кода использовалось всё вподряд. И это я ещё не сказал про строение кода и впихивание кода двух больших нод в один файл.
  3. Уже через несколько дней я добавил колёсам фитчу, которую назвал "Multi-Ray". Она заключалась в том, что вместо одного луча из центра колеса исходило несколько лучей. Это было круто и даже должно было стать киллер фитчей, если бы я исправил один незначительный баг, который я так и не исправил. Но речь не о нём. Когда я писал эту систему, то ещё в 9 вечера допустил ошибку, когда я брал ближайшую точку вместо дальней. Казалось чего тут такого. Да ничего особенного. Просто из-за своей невнимательности я потратил всю ночь, чтобы отыскать причину, из-за которой колёса тонули в земле. Когда я нашёл причину, я был в дичайшем восторге, а лоб долго болел от шлепка ладошки.

Итог? Поезд сделал бум Я забросил работу, поняв, что просто не смогу осились весь этот ужас. Много ли я получил опыта? Впгон и маленькую тележку. Вернусь ли я к этой работе и доделаю ли я её? Конечно!! Но зачем? Для чего мне это всё? Об этом ниже.


RenderWare -> Godot

Я честно пытался идти от начала года к его концу но так получилось, что мы вернёмся ещё немного назад, чтобы закончить логичную цепочку. Эта история началась примерно в феврале, тоже ныне заброшена, но получит право на жизнь уже только в 2020 году.

Как же я плевался.. PBR, ужасная система строения сцен и работа с нодами.. И это всё Godot. Конец зимы и начало весны я занимался тем, что занимался портированием GTA Vice city на Godot. Проблем было множество, но только не с самими ресурсами игры, а с самим Godot.

На момент забрасывания портирования проект мог подгружать коллизии из оригинальных файлов, получать текстуры из txd файлов и расставлять объекты, опираясь на файлы, по которым расставляются модели в оригинале. Всё прекрасно, но ужасный рендер не позволял сделать многие красивые эффекты. И через несколько к этому присоединилась физика авто, которую я так и не смог сделать лучше.

Что же эти потуги мне дали в итоге? Я начал работать с движком на достаточно низком уровне, который только мог предоставить мне GDScript. К тому же мне пришлось научиться работать с побитовым чтением файлом и генерацией многих вещей из этих данных. Это был крутой опыт и к нему я точно вернусь.


Киберспорт

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

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

Теперь вернёмся в наше время, а точнее в ноябрь 2019. Так как мы были недовольны прошлогодней организацией турнира, то в этом году мы вежливо попросили передать права на проведение турнира нашей команде, в которой я теперь являюсь полноценным игроком. Мы тут же получили одобрение и отзывы за прошлый турнир. Шестерёнки закрутились и большая машина под названием "Лига МВЕУ" начала свой жизненный путь. Конечно даже на данный момент это ещё до сих пор не лига, но мы делаем всё возможное для этого.

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

Далее прошёл ещё один турнир в котором мы не участвовали, а лишь организовывали, потому что это был своего рода промо-турнир для школьников. Мы решили не останавливаться на достигнутом и пошли дальше. Помимо технических проблем с компьютерами мы исправили и множество других проблем. Теперь доступ к серверу осуществлялся через SSH, а в финальный день некоторые из нас вовсе получили опыт в комментировании игр в прямом эфире.

Какой же тут будет итог? Мы провели за декабрь 2 турнира и так получилось, что мы могли их проводить только в выходные дни. Вот и получилось, что мы все выходные с 8:00 до 21:00 просиживали в колледже. И не важно, что практически всегда игры проходили с 10:00 до 18:00, а в дни финала с 12:00 до 17:00. Мы всё равно приходили очень рано и уходили очень поздно. Спасало наше положение только участие в World Skills, в котором мы лишь делали вид, что участвуем и все об этом знают. Так сказать, это стало спасательной шлюпкой, давшей нам возможность восстанавливать силы в будни, пропуская многие бесполезные для нас пары.

А заключительная мысль? Это было чертовски сложно, интересно и для нас всех было как челлелндж. В 2020 году вы ещё не раз увидите от меня о киберспорте в МВЕУ. Тем более у нас уже появились первые партнёры, а эти 2 турнира - лишь первые 2 шажка большой машины. К тому же по некоторым параметрам проведения турниров обогнали даже нынешний Чемпионат УР, самый крупный чемпионат киберспорта, проходящий у нас в республике.


Окончание

Вот и долгожданный конец. Те, кто дочитал до этого места - большие молодцы. Мне кажется, что это было максимально сложно.

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