Створення та налаштування сервера minecraft - блог компанії Селектел

Створення та налаштування сервера minecraft - блог компанії Селектел

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

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

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

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

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

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

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

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

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

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

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

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

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

вимоги до апаратного забезпечення

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

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

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

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

Величезне значення має і швидкість інтернет-підключення. Для гри 40-50 чоловік цілком вистачить каналу 10 Мб / c. Однак тим, хто планує більш масштабний 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 руб / міс.

Ці зміни цілком підійдуть для створення серверa 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:

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

Перепідключитися до сервера під новою обліковим записом і приступимо до встановлення.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • параметр 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 - щоб промальовувати і обмежити карту;
  • Плагін WorldGuard (+ WorldEdit як залежність) - щоб захистити деякі області.