Я никогда раньше не играл в Minecraft. Скажу даже больше, мне он был не особо интересен. Скорее все, по причине того, что я не понимал его идеи. Да, я видел, что в нем можно строить бесконечное множество сооружений, выращивать разного вида растения и животных, строить механизмы. Но я все еще не мог понять, как за этой игрой с примитивной графикой мои дети могут проводить целые дни напролёт.

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

Я начал думать, как ему помочь найти больше друзей и решить проблему с игрой по сети. Я знал, что есть альтернативная версия сетевой игры от Minecraft, которая называется Realms. Это платная подписка, по которой ты можешь создавать свой сервер, а Minecraft выступает хостером. Недостаток этого варианта в том, что играть на таком сервере может до 10 человек. Так же нет возможности устанавливать моды — дополнения от сторонних разработчиков, которые изменяют или дополняют оригинальный контент Minecraft. Такие сервера без модов еще называют ванильными.

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

Я знал, что существует две версии Майнкрафа. Одна — это Pocket Edition, предназначена для мобильных устройств и Windows 10, вторая — Java Edition, для ПК. Как оказалось они не совместимые друг с другом, поэтому я выбрал Java Edition, так как в игровом мире этой версии больше возможностей, в добавок под нее существует более широкий выбор плагинов. Ну и еще потому, что я Java разработчик.

Следующие пару часов я занимался тем, что создавал дроплет на digitalocean.com и разбирался, как запустить сервер Minecraftа.

Оказалось, что помимо нативного Vanilla сервера, существуют так же сторонние имплементации API для взаимодействия с игровым миром. Одна из них, Spigot — модификация оригинального сервера, позволяющая помимо прочего запускать плагины сторонних разработчиков, существенно расширяя возможности игрового мира. Такие плагины позволяют создавай мини-игры, вводить ограничения для игроков, объединять сервера в сеть и многое другое. Я остановился именно на этой реализации сервера, так как под него было множество плагинов и огромное комьюнити как разработчиков, так и пользователей.

Для нашего с сыном первого сервера нужна была карта мира. Можно было создать ее самостоятельно, но я решил взять готовую и при необходимости ее доработать. Выбирая среди множества доступных бесплатно карт я понял, что мне они не нравятся. Тогда я решил посмотреть карты на платных сайтах. Они оказались совершенно другого качества, очень креативные, красочные и реалистичные. Я остановился на одной из них, пиратском острове. Мне она так понравилась, что я решил ее купить. Так я потратил первые $20. Тогда я еще не подозревал, что это было только начало.

Совсем скоро я понял, что одной картой не обойдусь.



Я знал, что сын играет в мини игры и я хотел попробовать установить одну из его любимых. Называется она Murder Mystery. Эта игра с довольно простыми правилами. Есть детектив, который должен найти маньяка. Маньяк должен убить всех игроков. Все остальные — мирные жители, они могут собирать золото, которое обеспечит их защитой в виде лука. В начале игры неизвестно, кто маньяк, пока в его руке не появится меч.

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

Следущим этапом был поиск и установка соответствующих плагинов, которые позволяли бы переходить между картами, назначать команды для npc, отключать возможность наносить урон игрокам и многое другое. Сервер начал обрастать функционалом, а меня начал затягивать это процесс. Становилось понятно, что существуют огромные возможности по модификации игрового мира и мне, как Java разработчику, было интересно больше узнать про процесс разработки плагинов, которые также в большинстве своих случаев написаны на Java.

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

Но прежде чем размещать информацию о сервере в интернете, я решил, что одной мини-игры мало, сервер выглядит пустоватым и занялся поиском и установкой еще одной популярной мини-игры SkyBlock.



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

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

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



В итоге, я довел сервер до более-менее презентабельного состояния и опубликовал IP на одном из популярных сайтов. Он находился на первой странице в списке новых серверов пару часов и за это время его посетили десятки игроков. Многие хорошо отзывались о сервере, но так же было видно, что такого количества посетителей мало, что бы им было интересно оставаться на сервере продолжительное время. Но, не смотря на это, у нас появились первые постоянные игроки, а так же желающие помогать в развитии сервера. Как правило, это были дети и подростки, один из которых предложил создать и настроить Discord — сервис для голосового, видео- и текстового общения. Он очень популярный в игрово сообществе, но совершенно мне не знакомый. Так же у нас появился один постоянный игрок в SkyBlock, который был для нас как бета-тестировщик, терпеливо сообщал о багах, недочетах, которые я старался оперативно исправлять.

Что в итоге? Сейчас на сервере установлены две карты для Murder Mystery, добавлена мини-игра AcidIsland — вариация SkyBlock, добавлена очень популярная игра BedWars, но пока она ждет фикса от разработчиков. Добавлены внутриигровые деньги, магазин для SkyBlock и AcidIsland, зарегистрирован домен, установлен Discord бот для синхронизации внутриигрового чата с чатом в Discord. В планах расширить разнообразие игр, добавить внутриигровые ранги, запустить сайт. Количество дроплетов растет постоянно. На данный момент их уже четыре, суммарно на 8 CPU и 16 Gb RAM. Да, это занятие не дешевое, но для меня оказалось очень увлекательным. Надеюсь, в будущем, получится монетизировать сервер и вернуть потраченые средства. А пока мы с сыном с удовольствием играем на созданых нами картах, улучшаем и дополняем их. У него появились друзья, а я полюбил Minecraft за его безгарничные возможности для игроков любого возраста.

Если вы так же, как и мы, любите Minecraft и вам понравилась наша история, заходите в гости и посмотрите, что и как у нас получилось. Если у вас есть вопросы по технической части, добавляйтесь в Discord.

Сервер: mc.piratebayserver.net
Discord: discord.gg/QjWSQhx