Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер



    Часть 2. Устанавливаем карту для лобби сервера

    Часть 3. Устанавливаем мини-игры

    tl;dr;
    И так, что будет сделано в конце всего туториала?

    • создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
    • запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
    • установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
    • создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
    • Установим еще одну популярную мини-игру SkyBlock
    • Добавим внутриигровое меню на основе предметов инвентаря игрока
    • Добавим внутриигровые деньги
    • Создадим магазин
    • … и многое другое

    Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
    По любым вопросам пишите в Discord.

    Поехали!

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

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

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

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

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

    Для старта нам достаточно конфигурации на 2 CPU и 2 GB RAM. Я пробовал 1 CPU, но сервер жутко долго стартовал, с 1GB оперативной памяти я иногда сталкивался с крашем сервера при импорте крупных карт.



    При создании дроплета я выбрал способ аутентификации — SSH key



    Выполнил инструкции по его созданию



    И так, виртуальный сервер готов.



    Заходим на него по ssh:

    ssh -i ~/minecraft root@IP_address
    

    где ~/minecraft — путь к созданному приватному SSH ключу, IP_address — выданный хостингом IP адрес.

    Хотел бы заметить, что для запуска сервера не рекомендуется использовать пользователя root, так как это может позволить злоумышленикам через уязвимые плагины нанести вред вашему серверу. Как добавить нового пользователя, вы можете ознакомиться по ссылке.

    Если кратко, то создаем пользователя (dinikin замените на вашего пользователя):

    adduser dinikin
    


    и предоставляем ему права администратора:

    usermod -aG sudo dinikin
    


    и права удаленного достпа по SSH:

    rsync --archive --chown=dinikin:dinikin ~/.ssh /home/dinikin
    


    Теперь начните новый сеанс и используйте SSH с новым именем пользователя:

    ssh -i ~/minecraft dinikin@your_server_ip
    


    И так, мы на сервере.

    Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
      System information as of Sat Apr 11 09:03:11 UTC 2020
    
      System load:  0.04              Processes:           96
      Usage of /:   1.7% of 57.98GB   Users logged in:     0
      Memory usage: 6%                IP address for eth0: 142.93.248.77
      Swap usage:   0%
    
    0 packages can be updated.
    0 updates are security updates.
    
    
    
    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    dinikin@minecraft-main:~$ 
    

    Создаем папку для нашего первого Minecraft сервера и переходим в неё:

    mkdir PirateBay
    cd PirateBay
    

    Теперь нам нужно определиться с реализацией сервера. Их существует несколько, самые популярные — это Spigot, Paper, Forge. Более детально про отличия этих серверов вы можете почитать здесь.

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

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

    Однако я столкнулся с тем, что при работе с одним из плагинов для редактирования карт, последний работал некорректно и в логах рекомендовал использовать Paper как более оптимизированный форк на основе Spigot.

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

    curl -kLJ https://papermc.io/api/v1/paper/1.15.2/165/download -o Paper-1.15.2.jar

    и пробуем запустить

    java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
    

    У меня сервер не запустился, так как не установлена Java:

    Command 'java' not found, but can be installed with:
    
    sudo apt install default-jre            
    sudo apt install openjdk-11-jre-headless
    sudo apt install openjdk-8-jre-headless

    Устанавливаем:

    sudo apt update
    sudo apt install default-jre

    Теперь запускаем повторно:

    java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
    

    Сервер не запускается, выдавая сообщение:

    You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
    

    Открываем файл:

    nano eula.txt
    

    меняем eula=false на true и сохраняем. Еще раз запускаем сервер:

    java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
    

    Сервер запустился:



    Запускаем игру и подключаемя к нашему серверу:



    Если у вас в друг по какой-то причине версия Майнкрафт оказалась не лицензионной, подключиться к серверу не удастся.
    Что бы это исправить, в файле PirateBay/server.properties устанновите параметр online-mode=false
    Но я все же рекомендую не пожалеть $26.95 и поддержать разработчиков этой замечательной игры.

    Поздравляю, ваш первый сервер запущен и работает.

    Что мы будем делать в следующей части:

    1. установим первый плагин
    2. подготовим пустой мир для создания лобби
    3. скачаем карту для лобби и импортируем её


    Не переключайтесь!
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 38

      0
      Жду продолжения, сын явно заинтересуется.
        0
        Игра в принципе интересная. Но требует очень много времени.
        В конце концов встретил плагин с возможностью трансформироваться в танк и самолет и просто устроил ковровые бомбардировки местной фауны.
          +1
          Ваш бы цикл статей, да в 2011 год…
            –3

            Мне бы эту эту инфу лет эдак 5 назад, когда сам яро надрачивал в эту игрушку)) Жду продолжение!

              0
              Вот правильная весчь, чтоб занять свободное админское время на дому. Сенкс.
                0
                Запускаем игру и подключаемя к нашему серверу:

                А что есть «игра»? Какая то программа на стороне игрока?
                  0
                  Игра — это клиент игры. Сервер создаётся в виде «консольки», куда можно вводить админские команды. Через клиент игры можно зайти на сервер, т.е подключиться в мир, в который могут подключиться и другие игроки, используя IP и порт сервера.
                    0
                    Ага, но где же он берется? В данном случае? Я юзал ванильный вариант сервера через TLauncher, но к Paper он не цепляется :(
                      0
                      Аргх… а что пишет? Важна же лишь версия майнкрафта и версия сервера. Они должны совпадать. То есть на сервер 1.12 не зайдёт человек с клиентом версии 1.11 (если не рассматривать спец. плагины для этого). Если сервер грузит и пишет ошибку в версии над значком пинга (щас вроде так) — значит проблема в этом. Если сервер вообще бесконечно грузит в списке или пишет что не удалось обнаружить — значит скорее всего с айпи что-то в файле настроек намудрили. Самый верный способ это узнать какой айпи у роутера\модема (192.168.0.1 или какой-то другой) и тупо его вбить в файл настроек в поле для айпи сервера. Честно, забыл как он называется. Подключаться к серверу по этому же айпи.
                      Ещё одна возможная проблема — сервер помечен как лицензионный в том же файле настроек. Опять же, не помню как убрать галочку. Ламерская ошибка и я чуть не забыл её тут описать перед тем как отправить сообщение, но её тоже надо проверить. Тилаунчер ведь по-сути пиратский клиент, сборник всех версий майнкрафта.

                      UPD: тема со сменой айпи на 192.168… работает только если сервер на своём компе хостится. Иначе ведь как по локальному айпи подключиться к левому серверу, на котором твой сервер))
                        0
                        Версии вроде как равны — 1.15.2. С сетями у меня все путем. Профиль клиента удалили. Пишет клиент при подключении к серверу:
                        Не удалось подключиться к серверу
                        Ошибка входа: Недействительная сессия
                          +1
                          Хм… а точно строчка «online-mode=» в данный момент в файле server.properties имеет состояние «false»? Если там стоит true, то может вызывать проблему. Также некоторые хостинги не позволяют менять некоторые переменные и в том числе часто находится online-mode. Типа разрешены только лицензионные сервера у них.
                            0
                            Я сам себе хостинг. Действительно дело было в online-mode. В старом конфиге было false. А в новом не углядел. Спасибо.
                  0

                  Вы на сервере с 2ГБ RAM даете JVM -Xmx2G? И ещё из под рута сервер игровой запускаете?

                    0
                    Спасибо за замечание, исправлю
                    0
                    Отличная тема для карантина! А когда планируется вторая часть с установкой мини-игр?
                      0
                      На этих выходных
                      0

                      Сразу видно, только начали ;)
                      Версий еще большое множество, включая Bedrock edition, версия, написанная на С++, её сейчас пытаются усердно продвигать, но любимая жава сильнее. Хосщу сервак по майну для друзей, не против и вам помочь. Пишите в дискорде: Sqidrod#8509 или в вк: vk.com/violent_0
                      Спасибо за статью ;)

                        0
                        Bedrock edition тоже ставил, но он сильно ограничен по функционалу, да и сын больше предпочитает ПК
                          0

                          Bedrock и для пк тоже, даже в магазине 10 винды раньше раздавался, сейчас хз.

                            0
                            а сейчас продается за весьма приличную сумму
                        0
                        Запускать сервер от root очень глупо, т.к. некоторые плагины могут иметь дыры/ошибки/баги с помощью которых можно сделать rm -rf /*
                          0
                          Согласен, исправлю
                          0
                          Для хостинга я выбрал DigitalOcean

                          Это не тот, который при создании аккаунта настоятельно требует ввести данные кредитки, после чего может моментально без объяснения причин заблочить аккаунт с сообщением: «We are sorry to inform you that your account has been locked by DigitalOcean»?
                            0
                            не знаю, ни когда с таким не сталкивался
                              0
                              Тот, видимо. :D
                              У меня для начала оплаты (после пробного периода) стал требовать фото с паспортом. Пришлось послать.
                              0
                              А как насчет сервера с Education Edition — бывают?
                                0
                                все уже сделано и обновляется :) hub.docker.com/r/itzg/minecraft-server
                                а почему не forge?
                                  0

                                  Подписался, жду продолжения)

                                    0
                                    Я один не понимаю. зачем нужен этот пост?
                                      0
                                      Гайдов на создание своих мини игр полным полно в сети (в том числе и с готовым сборками).
                                      Хотелось бы увидеть что-то инновационное в статье, что перевернет «игру».
                                      P.S. Есть уже готовые тулзы для администрирования майнкрафт серверов, например MinecraftServerManagement, очень удобная.
                                      P.S.S. Авто-поднятия сервера так и не увидел, да и запускать в текущем коннекте сервер — глупая идея (лучше делать через screen, чтобы не терялся доступ к терминалу)
                                        0
                                        Готовые сборки не содержат информации, как их кастомизировать.
                                        Я не занимаюсь этим профессионально, что бы делать инновации. Я, благодаря ребёнку, с майнкрафтом познакомился месяц назад, просто решил облегчить жизнь таким же родителям, как и я, которых дети просят установить сервер.
                                        У MinecraftServerManagement последний релиз был год назад, видимо он таки не зашёл комьюнити
                                        Про screen написал во второй части.
                                        Работающих скриптов автоподнятия я не нашёл, может поделитесь?
                                        0
                                        Я правильно понимаю, что все это только для версий для компа? С планшета к своему серверу не присоединишься?
                                          0
                                          верно
                                          0
                                          Без пары дней неделю назад тоже и почти по той же причине поднял сервер. Правда ради dynmap пришлось поставить Spigot. Не вижу каких-либо проблем с ним, даже наоборот — он стабильнее официального сервера.
                                            0
                                            У меня была проблема с импортом больших schematic файлов через FAWE плагин, в Spigot он постоянно сыпал ошибки и рекомендовал использовать Paper
                                              0
                                              dynmap

                                              Выкинуть. Генерация карты в процессе (не удивлюсь если и в главном потоке) сервера — зло. Уже от 10 игроков это становится заметно.
                                              Советую обратить внимание на github.com/mapcrafter/mapcrafter и его форки. Полная генерация карты 10к*10к версии 1.13.2 занимает 15 минут и выполняется на другой машине не мешая серверу. Игроков вполне устраивает обновление карты каждые 20-30 минут (а с возможностью генерации диффов — то цикл в 10 минут — реален). И главное — не зависит от сервера (не считая модов) ;)
                                              PS: Есть еще github.com/overviewer/Minecraft-Overviewer, но он генерирует гораздо дольше. Хоть и более активен в разработке.
                                              0
                                              А можно использовать 2 GB / 1 CPU для создания сервера?
                                                0
                                                можно, но скорее всего будет лагать даже при небольшом кол-ве игроков, но на старте я так и делаю, потом добавляю ресурсов, если начинает работать не стабильно

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

                                              Самое читаемое