Створення та налаштування сервера Minecraft

Створення та налаштування сервера Minecraft

Minecraft сьогодні належить до найпопулярніших мережевих ігор. За неповні три роки (перший офіційний реліз відбувся восени 2011 року) у нього з'явилися мільйони шанувальників у всьому світі.

Розробники гри свідомо орієнтуються на найкращі зразки двадцятирічної давності, коли багато ігор були за сьогоднішніми мірками примітивними з погляду графіки та недосконалими з погляду юзабіліті, але при цьому по-справжньому захоплювали.

Як і всі ігри-пісочниці, Minecraft надає користувачеві величезні можливості для творчості - в цьому, власне, і головний секрет його популярності.

Організацією серверів для гри в розрахованому на багато користувачів режимі займаються самі гравці та їх спільноти. Сьогодні в Інтернеті функціонують десятки тисяч ігрових серверів (див. наприклад, список тут).

Чимало шанувальників цієї гри є і серед наших клієнтів, і вони орендують у наших дата-центрах обладнання під ігрові проекти. У цій статті ми розповімо про те, на які технічні моменти потрібно звернути увагу при виборі сервера
Minecraft.

Вибираємо платформу

До складу гри Minecraft входять такі архітектурні елементи:

  1. сервер - програма, за допомогою якої гравці взаємодіють один з одним по мережі;
  2. клієнт - програма для підключення до сервера, яка встановлюється на комп'ютері гравця;
  3. плагіни — доповнення до сервера, які додають нові функції або старі, що розширюють;
  4. моди – доповнення до ігрового світу (нові блоки, предмети, можливості).

Для Minecraft існує багато серверних платформ. Найпоширенішими та популярнішими є Vanilla та Bukkit.

Vanilla це офіційна платформа від розробників гри. Поширюється як і графічному, і у консольному варіанті. Нова версія Vanilla завжди виходить одночасно із новою версією Minecraft.

Недоліком Vanilla є надмірне споживання пам'яті (приблизно 50 МБ на одного гравця). Ще одна істотна вада — відсутність плагінів.

буккіт був створений групою ентузіастів, які спробували вдосконалити офіційний сервер Minecraft. Спроба виявилася цілком вдалою: за функціональністю Bukkit набагато ширше, ніж Vanilla – насамперед завдяки підтримці різноманітних модів та плагінів. При цьому він споживає менше пам'яті кожного гравця — приблизно 5–10 МБ.

Мінуси Bukkit полягають у тому, що під час запуску він забирає надто багато оперативної пам'яті. Крім того, чим довше сервер працює, тим більше йому потрібно пам'яті (навіть якщо гравців мало). Вибираючи як сервер Bukkit, слід враховувати, що його нові версії, як правило, містять помилки; Стабільна версія зазвичай з'являється приблизно через 2-3 тижні після виходу офіційної версії Minecraft.

Крім того, останнім часом набирають популярність й інші платформи (наприклад, Spout, MCPC і MCPC+), але вони відрізняються обмеженою сумісністю з Vanilla і Bukkit і вкрай обмеженою підтримкою мод (наприклад, для Spout взагалі можна тільки писати моди з нуля). Якщо їх і використовувати, то тільки для експериментів.

Для організації ігрового серверу ми рекомендуємо використовувати платформу Bukkit, оскільки вона відрізняється найбільшою гнучкістю; крім того, під неї існує безліч різноманітних модів та плагінів. Стабільна робота сервера Minecraft залежить від грамотного вибору апаратної платформи. Розглянемо це питання докладніше.

Апаратні вимоги

І сервер, і клієнт Mineсraft дуже вимогливі до системних ресурсів.
При виборі апаратної платформи слід враховувати, що багатоядерний процесор не дасть великих переваг: ядро ​​сервера Minecraft може використовувати лише один потік обчислення. Друге ядро, втім, буде незайвим: деякі плагіни виконуються в окремих потоках, та й Java теж споживає чимало ресурсів.

Тому для Minecraft-сервера краще вибирати процесор, у якого вища продуктивність одного ядра. Більш потужний двоядерний процесор буде кращим, ніж багатоядерний, але менш потужний. На спеціалізованих форумах рекомендується використовувати процесори з тактовою частотою не нижче 3ГГц.

Для нормального функціонування сервера Minecraft потрібна велика кількість оперативної пам'яті. Bukkit займає приблизно 1ГБ оперативної пам'яті; крім того, під кожного гравця, як було зазначено вище, відводиться від 5 до 10 МБ. Плагіни та моди теж споживають досить багато пам'яті. Для сервера на 30-50 гравців, таким чином, потрібно не менше 4 ГБ оперативної пам'яті.

У Minecraft дуже багато (наприклад, завантаження тих самих плагінів) залежить від швидкості роботи файлової системи. Тому краще вибирати сервер із SSD-диском. Шпиндельні диски навряд чи підійдуть через низьку швидкість випадкового читання.

Величезне значення має швидкість інтернет-підключення. Для гри 40-50 чоловік цілком вистачить каналу 10 Мб/с. Однак тим, хто планує масштабніший minecraft-проект, що включає сайт, форум і динамічну карту, вкрай бажано мати канал з більшою пропускною спроможністю.

Яку конфігурацію найкраще вибрати? З пропонованих нами конфігурацій рекомендуємо звернути увагу на такі:

  • Intel Core 2 Duo E8400 3ГГц, 6ГБ RAM, 2х500ГБ SATA, 3000 руб/міс.;
  • Intel Core 2 Quad Q8300 2.5ГГц, 6ГБ RAM, 2х500ГБ SATA, 3500 руб/міс. — цю конфігурацію ми використовуємо для нашого тестового сервера MineCraft, на якому ви можете зараз пограти (як це зробити — написано нижче);
  • Intel Core i3-2120 3.3ГГц, 8ГБ RAM, 2×500ГБ SATA, 3500 руб/міс.

Ці конфігурації підійдуть для створення сервера Minecraft на 30-40 гравців. Деяким мінусом є відсутність SSD-дисків, але ми даємо іншу важливу перевагу: гарантований канал 100 Мб/с без будь-яких обмежень та співвідношень. При замовленні всіх перелічених вище змін настановний платіж не стягується.

Є у нас і більш продуктивні, але при цьому, природно, дорожчі сервери (при замовленні цих конфігурацій настановний платіж також не стягується):

  • 2х Intel Xeon 5130, 2ГГц, 8ГБ RAM, 4х160ГБ SATA, 5000 руб/міс;
  • 2х IntelXeon 5504, 2ГГц, 12ГБ RAM, 3×1ТБ SATA, 9000 руб/міс.

Рекомендуємо також звернути увагу на нову бюджетну модель з SSD-диском на базі процесора Intel Atom C2758 Intel Atom C2758 2.4ГГц, 16 ГБ RAM, 2×240ГБ SSD, 4000 руб/міс., Настановний платіж - 3000 руб.

Встановлення та запуск сервера Bukkit у OC Ubuntu

Перш ніж встановлювати сервер, створимо нового користувача та додамо його до групи sudo:

$ sudo useradd -m -s /bin/bash <ім'я користувача> $ sudo adduser <ім'я користувача> sudo

Далі задамо пароль, під яким створений користувач підключатиметься до сервера:

$ sudo passwd <ім'я користувача>

Перепідключимося до сервера під новим обліковим записом і приступимо до встановлення.
Minecraft написаний Java, тому на сервері обов'язково потрібно встановити Java Runtime Environment.

Обновимо список доступних пакетів:

$ sudo apt-get update

Потім виконаємо наступну команду:

$ sudo apt-get install default-jdk

Для встановлення та запуску Bukkit бажано також встановити термінальний мультиплексор - наприклад, screen (можна використовувати й інші термінальні мультиплексори - див. наш огляд):

$ sudo apt-get install screen

Screen знадобиться, якщо ми підключатимемося до ігрового сервера по ssh. З його допомогою можна буде запускати сервер Minecraft в окремому вікні терміналу, і навіть після закриття клієнта сервер ssh буде працювати.

Створимо директорію, в якій зберігатимуться файли сервера:

$ mkdir bukkit $ cd bukkit

Після цього зайдемо на сторінку завантажень офіційного сайту Bukkit. У правій верхній частині сторінки можна побачити посилання на останню рекомендовану для використання збірку сервера (recommended build). Радимо завантажувати саме її:

$wget <посилання на рекомендовану версію>

Тепер запустимо screen:

$ sudo screen

та виконаємо наступну команду:

$ java -Xmx1024M -jar craftbukkit.jar -o false

Пояснимо, що означають використовувані параметри:

  • Xmx1024M – максимальна кількість оперативної пам'яті на сервер;
  • jar craftbukkit.jar - ключ до сервера;
  • o false - дозволяє доступ до сервера з піратських клієнтів.

Сервер буде запущено.
Зупинити сервер можна, набравши в консолі stop.

Налаштування та конфігурування сервера

Параметри сервера зберігаються у конфігураційному файлі server.properties. Він містить такі параметри:

  • generator-settings - задає шаблон генерації суперплоського світу;
  • allow-nether - Визначає можливість переходу в Нижній світ. За промовчанням для цього параметра встановлено значення true. Якщо встановлено значення false, всі гравці з Нижнього світу будуть переміщені у звичайний;
  • level-name — ім'я папки з файлами картки, які будуть використовуватися під час гри. Папка розміщується в директорії, де знаходяться файли сервера. Якщо такої директорії немає, сервер автоматично створює новий світ і поміщає його в директорію з таким самим ім'ям;
  • enable-query - при встановленому значенні true активує протокол GameSpy4 для прослуховування сервера;
  • allow-flight - дозволяє польоти по світу Minecraft. За промовчанням має значення false (польоти заборонені);
  • server-port — Вказує порт, який використовуватиметься сервером гри. Стандартний порт для Minecraft – 25565. Значення цього параметра змінювати не рекомендується;
  • level-type - визначає тип світу (DEFAUT/FLAT/LARGEBIOMES);
  • enable-rcon – відкриває віддалений доступ до консолі сервера. За замовчуванням він вимкнений (false);
  • level-seed – вхідні дані для генератора рівнів. Щоб мати можливість створювати випадкові світи, це поле треба залишити пустим;
  • force-gamemode - вставляє для гравців, що підключаються до сервера стандартний режим гри;
  • server-ip — вказує IP-адресу, яка використовуватиметься гравцями для підключення до сервера;
  • max-build-height – вказує максимальну висоту споруди на сервері. Його значення має являти собою число, кратне 16 (64, 96, 256 і т.п.);
  • spawn-npcs - дозволяє (якщо встановлено значення true) або забороняє (якщо встановлено значення false) поява NPС у селах;
  • white-list — включає та вимикає використання білого списку гравців на сервері. Якщо встановлено значення true, адміністратор зможе формувати білий список, додаючи до нього ніки гравців вручну. Якщо ж встановлено значення false, то сервер може заходити будь-який користувач, знає його IP-адресу і порт;
  • spawn-animals - дозволяє автоматична поява доброзичливих мобів, якщо встановлено значення true);
  • snooper-enabled - дозволяє серверу відправляти статистику та дані розробникам;
  • hardcore - включає на сервері режим Хардкор;
  • texture-pac — файл текстур, який використовуватиметься при підключенні гравця до сервера. В якості значення цього параметра вказується ім'я zip-архіву з текстурами, який зберігається в тій директорії, що і сервер;
  • online-mode - включає перевірку преміум-акаунтів користувачів, що підключаються до сервера. Якщо для цього параметра встановлено значення true, але на сервер зможуть входити лише власники преміум-акаунтів. Якщо перевірку облікових записів вимкнено (встановлено false), на сервер можуть входити будь-які користувачі (у тому числі, наприклад, і гравці, які підробили нік), що створює додаткові ризики безпеки. При відключеній перевірці можна грати в Minecraft по локальній мережі без доступу до Інтернету;
  • pvp - дозволяє або забороняє гравцям воювати один з одним. Якщо цей параметр має значення true, гравці можуть знищувати один одного. Якщо встановлено значення false, то гравці не можуть завдавати один одному прямої шкоди;
  • difficulty - задає рівень складності гри. Може приймати значення від 0 (найлегший) до 3 (найскладніший);
  • gamemode - Вказує, який ігровий режим буде встановлений для гравців, що заходять на сервер. Може приймати такі значення: 0 - Survival, 1-Creative, 2-Adventure;
  • player-idle-timeout - час бездіяльності (у хвилинах), після якого гравці автоматично відключаються від сервера;
  • max-players - максимальна допустима кількість гравців на сервері (від 0 до 999);
  • spawn-monsters - дозволяє (якщо встановлено значення true) породження ворожих мобів;
  • generate-structures - включає (true) / відключає (false) генерацію структур (скарбниці, фортеці, села);
  • view-distance — регулює радіус чанків для відсилання гравцю; може набувати значення від 3 до 15.

Логи сервера minecraft записуються у файл server.log. Він зберігається у тій самій папці, що й файли сервера. Лог постійно збільшується у розмірі, забираючи дедалі більше дискового простору. Упорядкувати роботу механізму логування можна за допомогою так званої ротації логів. Для ротації використовується спеціальна утиліта – logrotate. Вона обмежує число записів у лозі певною межею.

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

Основні установки ротації знаходяться у файлі /etc/logrotate.conf; Крім того, для кожної програми можна створювати індивідуальні налаштування. Файли з індивідуальними параметрами зберігаються в директорії /etc/logrotate.d.

Створимо текстовий файл /etc/logrotate.d/craftbukkit та впишемо до нього такі параметри:

/home/craftbukkit/server.log { rotate 2 weekly compress missingok notifempty }

Розглянемо їх значення докладніше:

  • параметр rotate вказує кількість ротацій до видалення файлу;
  • weekly вказує, що ротація буде проводитись щотижня (можна встановити й інші параметри: monthly - щомісяця та daily - щодня);
  • compress показує, що архівні логи потрібно стискати (зворотна опція - nocompress);
  • missingok вказує, що за відсутності файлу лога потрібно продовжувати роботу і не виводити повідомлення про помилку;
  • notifempty вказує не зрушувати файл лога, якщо він порожній.

Детальніше про налаштування ротації логів можна прочитати тут.

Поради щодо оптимізації

Відразу ж обмовимося, що в цьому розділі будуть наведені поради щодо оптимізації ігрового сервера. Питання тонкого налаштування та оптимізації сервера, на якому встановлено Mineсraft, є окремою темою, що виходить за рамки цієї статті; зацікавлені читачі легко зможуть знайти потрібну інформацію в Інтернеті.

Однією з найпоширеніших проблем, що виникають при грі в Minecraft, є так звані лаги - ситуації, коли програма вчасно не реагує на введення користувача. Вони можуть бути зумовлені проблемами як на стороні клієнта, так і сервері. Нижче ми надамо рекомендації, які допоможуть знизити ймовірність виникнення проблем на серверній стороні.

Регулярно контролюйте витрату пам'яті сервером та плагінами

Споживання пам'яті можна відстежувати за допомогою спеціалізованих адміністративних плагінів, наприклад, LagMeter.

Слідкуйте за оновленнями плагінів

Як правило, розробники нових плагінів із кожною новою версією прагнуть знизити навантаження.

Намагайтеся не користуватися безліччю плагінів зі схожою функціональністю

Великі плагіни (наприклад, Essentials, AdminCMD, CommandBook) дуже часто включають функціональність багатьох дрібних плагінів. Наприклад, той самий Essential містить функції плагінів iConomy, uHome, OpenInv, VanishNoPacket, Kit. Дрібні плагіни, функціональність яких повністю покривається функціональністю одного великого, у більшості випадків можна видалити, щоб не перевантажувати сервер.

Обмежуйте картку та провантажуйте її самостійно

Якщо не обмежувати карту, навантаження на сервер суттєво збільшиться. Обмежити картку можна за допомогою плагіна WorldBorder. Для цього потрібно запустити цей плагін і виконати команду /wb 200, а потім промалювати карту за допомогою команди /wb fill.

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

Замініть великовагові плагіни на більш швидкі та менш ресурсомісткі

Не всі плагіни для Minecraft можна назвати вдалими: часто вони містять багато зайвих і непотрібних функцій, а іноді ще й споживають багато пам'яті. Невдалі плагіни краще замінювати на альтернативні (їх є чимало). Наприклад, плагін LWC можна замінити на Wgfix + MachineGuard, а плагін DynMap - на Minecraft Overviewer.

Завжди очищайте дроп або встановіть плагін для автоматичного видалення дропу

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

Щоб сервер працював швидше, дроп бажано видаляти. Це краще робити за допомогою спеціальних плагінів, наприклад, NoLagg або McClean.

Не використовуйте античити

На ігрових серверах часто встановлюються так звані античити - програми, які блокують спроби впливати на гру нечесними способами.

Існують античити і для Minecraft. Будь-який античит – це завжди додаткове навантаження на сервер. Переважно встановлювати захисту для лаунчера (які, втім, абсолютної гарантії безпеки не дають і легко ламаються - але це вже тема для окремої розмови) та для клієнта.

Замість висновку

Будь-які інструкції та рекомендації виявляються набагато ефективнішими, якщо вони підкріплені конкретними прикладами. Грунтуючись на наведених вище інструкціях по встановленню, ми створили свій сервер MineCrаft і помістили на карту щось цікаве.

Ось що в нас вийшло:

  • Сервер Bukkit – стабільна рекомендована версія 1.6.4;
  • Плагін Statistics – щоб збирати статистику про гравців;
  • Плагін WorldBorder – щоб промалювати та обмежити карту;
  • p align="justify"> Плагін WorldGuard (+WorldEdit як залежність) - щоб захистити деякі області.

Запрошуємо всіх бажаючих пограти на ньому: щоб підключитися, додайте новий сервер та вкажіть адресу mncrft.slc.tl.

Будемо раді, якщо в коментарях ви поділитеся власним досвідом встановлення, налаштування та оптимізації серверів MineCraft і розкажете, які моди та плагіни вам цікаві та чому.

Класна новина: З серпня установчий платіж на виділені сервери фіксованої конфігурації знижено на 1%. Тепер разовий настановний платіж становить лише 50 руб.

Читачів, які не можуть залишати коментарі тут, запрошуємо до нас блог.

Джерело: habr.com

Додати коментар або відгук