Настройка сервера

Материал из PetruCHIO - Mindustry server
Перейти к навигации Перейти к поиску
Write it.pngДанная статья является логическим продолжением вот этой статьи. Если у вас VPS/VDS, вы всё же пробросили порт у роутера, или же решили запустить сервер в сети VPN для товарищей с грамотным переключением карт и плагинами - вам сюда.

Начать стоит с того, что запущенный из меню паузы сервер - это и не сервер вовсе. Это - совместная игра с товарищем. На сервере карты переключаются автоматически после проигрыша, существуют плагины для дополнительной настройки сервера и грамотная система банов по IP/UUID. Начнём с терминологии - толкового словарика для юного админа.

Словарик юного администратора

Термин Русское определение
IP адрес Каждое устройство в интернете имеет свой уникальный адрес. Данный адрес, как правило, даётся тебе интернет-провайдером, и из-под него ты бродишь по интернету. Обычно бродишь ты, но тут бродить будут к нам. Запросто может получиться, что у игрока будет меняться IP адрес - рядовым пользователям интернета IP выдаётся при каждом подключении к сети (прим. выключить/включить мобильные данные на телефоне - и уже другой адрес; Перезагрузить роутер - уже другой адрес.). Если банить по IP - человек не зайдёт на сервер с этого IP. Если такой заблокированный адрес попадёт добропорядочному гражданину - он также будет несправедливо забанен.
Порт Не бывает такого, чтобы к тебе подключились не через порт. Порт в сети - это "место", к которому мы подключаемся. Игра Mindustry по умолчанию использует 6567 порт TCP/UDP (вот типы портов нам знать пока необязательно). Сайты в браузере, по которым мы бродим, обычно расположены на порту 80. Да-да, по сути, мы пробрасываем порт нашего компьютера в интернет через роутер именно для подключения в последствии к нам других товарищей - порты на роутере по умолчанию не проброшены, чтобы избежать проблем и незваных гостей.
VPS/VDS По сути - кусок железки, который вы арендуете. Делать с ним можно всё, что душе (и хостеру) угодно. В данном случае - сервер по Mindustry. Порты на таких "кусках железа", виртуальных серверах уже проброшены и сервер готов к использованию.
UUID Уникальный идентификатор игрока. Сохраняется в прогрессе игры. Если банить по UUID - игрок не сможет подключиться с этого его устройства. Исключение - случаи обхода банов хитрыми путями
Плагин Это отдельный файл .jar, закинутый в папку плагинов. Может расширять список команд сервера, добавлять какие-либо оповещения, изменять ники игроков и так далее. Есть самые разные плагины для сервера, которые уже успели написать.


Данный словарик дал вам понять, чем мы будем вертеть во время объяснения. Все эти термины так или иначе используются в администрировании сервера. Давайте-ка рассмотрим процесс настройки.

Загрузка ядра сервера

Загружается ядро сервера с страницы на GitHub - просто скачиваете лёгкую серверную версию. После этого необходимо запустить сервер через терминал командой

java -jar server-release.jar


Если вы используете VPS/VDS, то не забудьте установить пакет default-jre, что можно сделать через менеджер пакетов. Обычно на Ubuntu/Debian и их потомках используется менеджер пакетов apt
В итоге команда будет выглядеть так:

sudo apt install default-jre


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

Администрирование

Переходим к более интересному моменту. Вот вы успешно справились с запуском сервера и теперь видите вот это Serv1.png
Это - консоль сервера. Отсюда будет происходить управление им. Давайте рассмотрим команды управления им.

Команда Русское определение
help Выводит список команд, включая те, которые добавляют плагины и небольшое описание к ним на английском языке
version Отображает версию сервера
exit Завершает работу сервера и выходит обратно в систему
stop Останавливает хост сервера
host имя_карты режим Запускает хост на карте с выбранным режимом. Если это не написать - сервер будет недоступен.
Если не указывать режим - запустится выживание
survival - режим выживание, с волнами по таймеру
attack - режим атаки, цель - уничтожить базу врага. При уничтожении всех вражеских ядер игра заканчивается
pvp - сражение нескольких команд игроков. Побеждает та команда, ядро которой остаётся целым
sandbox - песочница, безграничные ресурсы, ой да мне ли объяснять, что это за режим? :D
port Задаёт порт для сервера. Обычно менять не надо, но если на одном сервере надо запустить несколько - можно задать другой порт. По умолчанию используется 6567, если его в игре не указывать - она сама постучит на порт 6567. Обычно порт указывается в игре через двоеточие, например 12.34.56.78:7777
Если не дописывать в конце новый порт - просто покажет текущий порт.
maps Выводит список карт на сервере
reloadmaps Перезагружает список карт, использовать в случае, если вы добавили/удалили карту
status Отображает статус сервера, список игроков на нём, карту и волну
plugins Выводит список установленных плагинов
plugin название Выводит информацию о конкретном плагине
say сообщение Выводит игрокам в чат сообщение от имени сервера. Можно использовать для объявлений, предупреждений, разрешений странных конфликтов и шуток
difficulty (сложность) Задаёт сложность игры на сервере, которую вы выберете.
easy - лёгкая
normal - обычная
hard - сложная
fillitems команда Заполняет ядро ресурсами у определённой команды
Если в текущей игре всего одна команда, то её можно не указывать
name название Задаёт название сервера. Можно использовать цветовые теги для разноцветного названия.
Если не писать новое название - можно прочитать старое
playerlimit off/число Задаёт ограничение игроков на сервере (число), либо убирает его (off)
Если не указать число или off - можно посмотреть текущий лимит
whitelist on/off Задаёт параметр белого списка игроков - это когда вы хотите сделать приватный сервер для нескольких игроков и не хотите видеть на нём чужаков
Если не указать on/off, то можно глянуть на статус белого списка - включен тот или нет
whitelisted выводит список игроков, которые есть в белом списке
whitelist-add UUID Добавить в белый список игрока, которому можно посещать сервер (при условии, что белый список активирован)
whitelist-remove UUID Убрать игрока из белого списка, запретив ему посещать сервер (при условии, что белый список активирован)
crashreport on/off Включить или выключить автоматическую отправку ошибок и вылетов разработчику
logging on/off Включает или выключает сохранение логов сервера в файлы
strict on/off Ставит или снимает ограничение на 1 устройство - если включено, то на сервере не могут находиться игроки с одинаковыми никами
socketinput on/off Разрешает или запрещает управление сервером сторонним приложениям через локальный TCP порт 6859
Если не указать on/off, можно узнать текущий статус настройки
allow-custom-clients on/off Разрешить или запретить использование пользовательских клиентов на сервере. Допустим игрок изменил в коде игры что-то и собрал игру обратно - это "пользовательская сборка". Внимание - из-за изменений в коде на таких сборках могут возникать ошибки!
Если не указывать значение, то можно посмотреть текущий статус данной настройки
shuffle on/off Включает или выключает случайный порядок карт на сервере. Если выключено - карты идут одна за другой
kick ник Выгнать игрока с сервера. Ещё некоторое время он не сможет зайти на него, не дольше пяти минут
ban тип значение Заблокировать игрока по одному из параметров
id - UUID игрока будет заблокирован, данный игрок уже не зайдёт с устройства
ip - IP блокируется IP адрес. Не забываем, что для обхода данного бана надо всего лишь переподключиться к интернету (или перезагрузить роутер)
name - блокируется игрок по конкретному никнейму
unban ip/UUID Снять блокировку с игрока по IP/UUID
admin ник Сделать игрока модератором
unadmin Разжаловать модератора до рядового игрока
admins Посмотреть список модераторов
runwave Запустить принудительно следующую волну. Работает даже тогда, когда из интерфейса игры этого сделать нельзя
load слот Загрузить состояние игры из слота (слот - это целое число)
save слот Сохранить состояние игры в слот (слот - это целое число)
gameover Разрушить ядро и закончить текущую игру
info UUID/IP/ник Посмотреть всю известную об игроке информацию - все IP-адреса, которые он использовал, все ники, которые он использовал, его UUID
gc тестовая команда, оптимизирует потребление ОЗУ сервера


Структура папок, или зачем server-release.jar кладут в отдельную папку

Вообще после старта создаётся рядом единственная папка - config. Вот уже там лежит всё, что нас будет интересовать

  • logs

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

  • maps

Тут лежат карты, которые должны быть на сервере. Карты имеют формат .msav (не путать с обычными игровыми сохранениями!) и доступны для скачивания в нашем архиве - там все карты, которые побывали у нас. Однако вы можете предложить игрокам нарисовать карты самостоятельно - именно так и появлялись карты у нас на сервере. Кстати, заполнять эту папку совсем не обязательно - определённый набор стандартных карт уже установлен и не требует более ничего.

  • plugins

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