Как я растянул дело пяти минут на пять лет

Ни за что бы не подумал, что такая мелочь может отнять столько времени...

Как я растянул дело пяти минут на пять лет

Я всех приветствую! В интернете уйма примеров, как люди годами стремились к своей мечте (или шли к своей цели), и в итоге смогли его реализовать путем упорного труда. Я тоже шел к своей цели, и буквально недавно достиг его. И да, я реально растянул дело пяти минут на целых пять лет. Как это возможно? Рассказываю…

Что за цель?

Моя задача была создать 2д игру (стрелялку) с онлайн мультиплеером для мобильных устройств. А также игра должна содержать не только онлайн мультиплеер, но и локальный. В игре, посредством уничтожения других игроков, нужно зарабатывать очки. Чем больше очков, тем выше игрок в списке игроков.

Предыстория

Мне 9 лет. Моей любимой игрой была Doodle Army 2: Mini Militia. Не помню почему и зачем, но я загорелся идеей создать похожую игру. В этом возрасте я писал моды (или аддоны) для Minecraft. Ну как писал, я заменял текстурки предметов и блоков, а также мобов, и текст названия объектов. Менял еще размеры мобов. На этом умение программировать заканчивались. И чтобы научиться полноценно программировать (вообще программировать), я начал поиски уроков на YouTube. Мой выбор языка пал на Java (Minecraft на Java кто-то сделал, чем я хуже :D ). После некоторого времени обучения понял, что это не мое. Кстати, на то время у меня не было ПК, поэтому одновременно с изучением Java я искал возможность программировать на телефоне. Когда учил Java, практиковался в приложении AIDE (в Google Play его нет, проверил). Затем использовал приложение, названия которого я не помню, но язык программирования там был специфичным. На нем толкового ничего не создал. Других приложений для создания игр больше не было на то время. Мне пришлось забросить это дело, пока у меня не появился компьютер. Когда у меня появился ПК (в 12 лет), я снова полез в YouTube за поиском туториалов по создании игр. Там я наткнулся на видео про «Как сделать стреляющую пушку в Godot», автором которого является SkanerSoft. Мне понравилось это видео, и также простота программирования на этом игровом движке. Причем движок мне сильнее понравился тем, что он предоставлялся одним файлом формата .exe (еще к нему тогда прилагалась консольная программа). С тех пор я и по сей день пользуюсь этим движком.

Теперь про растянутое дело

«Так, у меня есть все необходимые ресурсы для создания той самой игры, которую я хотел создать в 9 лет. Ну все, создаем. С начало нарисую все, потом напишу скрипты для того и этого, а после и мультиплеер сделаю»

Было бы все так просто, если бы я учился программировать и работать с движком не по шаблонам. Дело в том, что тогда я вообще не учился писать код и вникать в то, что я пишу. Тупо и слепо переписывал, что писали другие на YouTube авторы. Становится ясно, что я не напишу мультиплеер, так как это слишком сложно. И все авторы на YouTube по-разному писали мультиплеер. А я вообще не понимал что там, да и как. Многопользовательскую игру я так и не сделал, но бегающего по карте человечка реализовал. Для создании графики использовал Photoshop. Для создании звуков использовать диктофон. Вот медиа, которые я тогда отснимал:

Проходит время, я набираюсь опыта в создании игр. Но с мультиплеером вообще никак. На Reddit и остальных форумах писали, что это довольно тяжелая работа. В чатах по Godot Engine писали читать документацию (они были правы, а также тоже писали, что сделать мультиплеер это сложно), но то, что мне нужно я не находил в документации. Что именно нужно? Шаблоны))) И еще мне было лень читать документацию. А как я там пытался что-то найти, если лень читать? Я просто листал док. до тех пор, пока не находил блок кода :D

Глупо? Вы абсолютно правы. Много раз думал забросить эту идею. Но мне что-то не давало это сделать. На протяжении трех лет я всячески искал в интернете разжеванную информацию о создании мультиплеера. Все было без успешно, пока не наткнулся на одну демку в ассетах Godot Engine. На протяжении года, я копался в нем: узнавал какая функция за что отвечает, экспериментировал с добавлением новых функций, объектов, и т. д. Благодаря этой демке, я смог создать свой первый (локальный) мультиплеер. Для графики использовал (и использую) Inkscape. Выглядел он так:

Дальше я стал его развивать, добавляя все больше механик, оружии, предметов для более интересного игрового процесса. А онлайн мультиплеер я откладывал до тех пор, пока игра не станет полноценно увлекательной. Но к большому сожалению, я утерял проект в последствии установки новой для меня системы — Linux. Так как я нарочно уничтожил данные на диске, мне пришлось с нуля написать многопользовательский режим. На тот момент, я до сих пор не знал как написать онлайн режим. Но все изменила одна статья в VK.

Как я растянул дело пяти минут на пять лет

После того, как прочитал эту статью, я тут же начал писать систему комнат. На это ушло две недели. Исходя из опыта в потери данных, я опубликовал проект на GitHub, а также научился использовать git для контроля версии. Игра была готова для онлайн теста. И вот те самые пять минут: я арендовал VPS-сервер, загрузил туда файл и запустил его. Даже не представляете, как я был счатслив, когда игра смогла запуститься. Вот как это все работает:

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

Спасибо за внимание!

5
1