tl;dr;
И так, что будет сделано в конце всего туториала?
- создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
- запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
- установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
- создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
- Установим еще одну популярную мини-игру SkyBlock
- Добавим внутриигровое меню на основе предметов инвентаря игрока
- Добавим внутриигровые деньги
- Создадим магазин
- … и многое другое
Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord: discord.gg/QjWSQhx
Я никогда раньше не играл в 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@178.128.148.39
где ~/minecraft — путь к созданному приватному SSH ключу, 178.128.148.39 — выданный хостингом IP адрес.
И так, мы на сервере.
MacBook-Pro-Denis-2:~ denisdnu$ ssh -i ~/minecraft root@178.128.148.39
Enter passphrase for key '/Users/denisdnu/minecraft':
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 Thu Apr 9 18:12:55 UTC 2020
System load: 0.24 Processes: 93
Usage of /: 1.7% of 57.98GB Users logged in: 0
Memory usage: 6% IP address for eth0: 178.128.148.39
Swap usage: 0%
0 packages can be updated.
0 updates are security updates.
Last login: Thu Apr 9 18:12:33 2020 from 94.100.220.60
root@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 -Xmx2G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
У меня сервер не запустился, так как не установлена Java:
Command 'java' not found, but can be installed with:
apt install default-jre
apt install openjdk-11-jre-headless
apt install openjdk-8-jre-headless
Устанавливаем:
apt update
apt install default-jre
Теперь запускаем повторно:
java -Xms1G -Xmx2G -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 -Xmx2G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar
Сервер запустился:
Запускаем игру и подключаемя к нашему серверу:
Поздравляю, ваш первый сервер запущен и работает.
Что мы будем делать в следующей части:
- установим первые плагины
- загрузим свою карту
- создадим еще один сервер для мини-игры
- установим мини-игру
- создадим первого игрового персонажа, который будет перенаправлять нас из лобби на сервер с мини-игрой
- настроим права к плагинам и командам сервера
Не переключайтесь!