
Minecraft днес е сред най-популярните онлайн игри. За не повече от три години (първият официален релиз беше през есента на 2011 г.) той спечели милиони фенове по целия свят.
Разработчиците на играта целенасочено се вдъхновяват от най-добрите образци отпреди двайсет години, когато много игри, по днешните стандарти, изглеждаха примитивни откъм графика и бяха неуспешни откъм потребителски опит, но все пак успяваха да пленят.
Както при всички игри с отворен свят, Minecraft предлага на потребителя огромни възможности за творчество – в това, всъщност, се крие основната тайна на неговата популярност.
Организацията на сървъри за играта в мултиплейър режим е задача на самите играчи и техните общности. Днес в Интернет функционират десетки хиляди игрови сървъри (вижте, например, списък тук).
Сред нашите клиенти също има много почитатели на тази игра, които наемат оборудване от нашите дата центрове за игрови проекти. В тази статия ще обсъдим техническите аспекти, на които трябва да обърнете внимание при избора на сървър за
Minecraft.
Избиране на платформа
В играта Minecraft влизат следните архитектурни елементи:
- сървър – програма, с помощта на която играчите взаимодействат помежду си в мрежа;
- клиент – програма за свързване със сървъра, инсталирана на компютъра на играча;
- плъгини – добавки към сървъра, които добавят нови функции или разширяват стари;
- модификации – добавки към игровия свят (нови блокове, предмети, възможности).
За 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 всъщност е възможно само да се пишат модификации от нулата). Ако се използват — то само за експерименти.
За организиране на игрови сървър, препоръчваме да се използва платформата Bukkit, тъй като тя предлага най-голяма гъвкавост; освен това под нея съществуват множество разнообразни модове и плъгини. Стабилната работа на сервера Minecraft в голяма степен зависи от правилния избор на хардуерната платформа. Нека разгледаме този въпрос по-подробно.
Хардуерни изисквания
Както сървърът, така и клиентът на Minecraft са много взискателни към системните ресурси.
При избора на хардуерна платформа трябва да се има предвид, че многоядреният процесор не предлага значителни предимства: ядрото на сървъра Minecraft може да използва само един изчислителен поток. Въпреки това, второ ядро няма да е излишно: някои плъгини се изпълняват в отделни потоци, а и Java също потребява немалко ресурси…
Следователно за Minecraft-сървър по-добре е да се избере процесор, при който производителността на едно ядро е по-висока. По-мощният двуядрен процесор ще бъде по-предпочитан от многоядрен, но по-малко мощен. На специализирани форуми се препоръчват процесори с тактова честота не по-ниска от 3GHz.
За нормалното функциониране на Minecraft сървъра е необходимо голямо количество оперативна памет. Bukkit заема около 1 ГБ оперативна памет; освен това, за всеки играч, както вече беше споменато, се отделят между 5 и 10 МБ. Плъгините и модовете също консумират доста памет. За сървър с 30 - 50 играча, следователно, ще са необходими поне 4 ГБ оперативна памет.
В Minecraft много неща (например зареждането на същите плъгини) зависят от скоростта на работа на файловата система. Затова е предпочитано да се избере сървър с SSD диск. Спиналните дискове едва ли ще подхождат заради ниската скорост на произволно четене.
Огромно значение има и скоростта на интернет връзката. За игра на 40-50 души напълно достатъчен е канал от 10 Мб/с. Въпреки това, за тези, които планират по-мащабен проект в Minecraft, включващ сайт, форум и динамична карта, е крайно желателно да имат канал с по-голяма пропускна способност.
Каква конкретна конфигурация е най-добре да изберете? От предлаганите от нас конфигурации препоръчваме да обърнете внимание на следните:
- Intel Core 2 Duo E8400 3GHz, 6GB RAM, 2×500GB SATA, 3000 руб./мес.;
- Intel Core 2 Quad Q8300 2.5GHz, 6GB RAM, 2×500GB SATA, 3500 руб./мес. — тази конфигурация ние използваме за нашия тестов сървър MineCraft, на който можете да играете в момента (как да го направите е описано по-долу);
- Intel Core i3-2120 3.3GHz, 8GB RAM, 2×500GB SATA, 3500 руб./мес.
Тези конфигурации са напълно подходящи за изграждане на Minecraft сървър за 30-40 играча. Някои от недостатъците са отсъствието на SSD дискове, но ние предлагаме друго не по-малко важно предимство: гарантиран канал от 100 Мб/с без ограничения и пропорции. При поръчка на всички изброени по-горе конфигурации не се начислява инсталационна такса.
Имаме и по-мощни, но при това, естествено, по-скъпи сървъри (при поръчка на тези конфигурации инсталационната такса също не се начислява):
- 2x Intel Xeon 5130, 2GHz, 8GB RAM, 4×160GB SATA, 5000 руб./мес;
- 2x Intel Xeon 5504, 2GHz, 12GB RAM, 3×1TB SATA, 9000 руб./мес.
Препоръчваме също да се обърне внимание на новия бюджетен модел с SSD диск на базата на процесора Intel Atom C2758: Intel Atom C2758 2.4GHz, 16 GB RAM, 2×240GB SSD, 4000 руб./мес., инсталационна такса — 3000 руб.
Инсталиране и стартиране на сървъра Bukkit в ОС 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 — определя типа на света (DEFAULT/FLAT/LARGEBIOMES);
- enable-rcon — отваря отдалечен достъп до конзолата на сървера. По подразбиране той е деактивиран (false);
- level-seed — входни данни за генератора на нива. За да можете да създавате случайни светове, това поле трябва да остане празно;
- force-gamemode — задава стандартния режим на игра за играчите, свързващи се със сървера;
- server-ip — указва IP адреса, който ще се използва от играчите за свързване към сървера;
- max-build-height — указва максималната височина на строежите на сървера. Неговата стойност трябва да бъде число, кратно на 16 (64, 96, 256 и т.н.);
- spawn-npcs — разрешава (ако е зададена стойност true) или забранява (ако е зададена стойност false) появата на NPC в селата;
- white-list — включва и изключва използването на белия списък с играчи на сървера. Ако стойността е зададена на true, администраторът може да създава белия списък, добавяйки в него никнеймовете на играчите на ръка. Ако стойността е false, всеки потребител, който знае IP адреса и порта на сървера, може да се свърже;
- spawn-animals — разрешава автоматичното появяване на миролюбиви мобове, ако е зададена стойност true;
- snooper-enabled — разрешава на сървера да изпраща статистика и данни на разработчиците;
- hardcore — включва режима Hardcore на сървера;
- texture-pack — файл с текстури, който ще се използва, когато играча се свърже към сървера. Като стойност на този параметър се задава името на zip архив с текстури, който се съхранява в същата директория като сървера;
- онлайн режим — включва проверка на премиум акаунти на потребителите, които се свързват към сървера. Ако този параметър е зададен на true, то само собствениците на премиум акаунти могат да влизат на сървера. Ако проверката на акаунтите е изключена (зададено е false), всеки потребител може да влиза на сървера (включително и играчи с фалшиви имена), което създава допълнителни рискове за сигурността. При изключена проверка, можете да играете Minecraft по локална мрежа, без достъп до интернет;
- pvp — позволява или забранява на играчите да воюват помежду си. Ако този параметър е настроен на true, играчите могат да унищожават един друг. Ако е зададено false, играчите не могат да нанасят директни щети помежду си;
- трудност — задава нивото на трудност в играта. Може да приема стойности от 0 (най-лесно) до 3 (най-трудно);
- игрови-режим — указва какъв игрови режим ще бъде зададен за играчите, влизащи на сървера. Може да приема следните стойности: 0 — Оцеляване, 1 — Творчество, 2 — Приключение;
- време-за-бездействие-играч — време на бездействие (в минути), след което играчите автоматично се отключват от сървера;
- максимален-брой-играчи — максималният допустим брой играчи на сървера (от 0 до 999);
- появяване-на-метежници — позволява (ако е зададено на true) появата на враждебни същества;
- генериране-на-структури — включва (true) / изключва (false) генерирането на структури (съкровища, крепости, села);
- разстояние-на-виждане — регулира радиуса на обновяваните чанкове за предаване на играча; може да приема стойности от 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 указва да не се премества файла на лога, ако той е празен.
По-подробно за настройките за ротация на логовете можете да прочетете тук..
Съвети за оптимизация
Веднага ще уточним, че в тази секция ще бъдат приведени съвети, касаещи само оптимизацията на игровия сървър. Въпросите за финна настройка и оптимизация на сървъра, на който е инсталиран Minecraft, представляват отделна тема, излизаща извън рамките на тази статия; заинтересованите читатели лесно ще могат да намерят необходимата информация в интернет.
Една от най-разпространените проблеми, възникващи при игра в Minecraft, са така наречените лагове - ситуации, когато програмата не реагира навреме на потребителския вход. Те могат да бъдат причинени от проблеми както на страната на клиента, така и на страната на сървъра. По-долу ще дадем препоръки, които ще помогнат да се намали вероятността от възникване на проблеми на сървърната страна.
Редовно следете разхода на памет от сървъра и плъгините
Консумацията на памет може да се проследява с помощта на специализирани административни плъгини - например, LagMeter.
Следете актуализациите на плъгините
Като правило, разработчиците на нови плъгини с всяка нова версия се стремят да намалят натоварването.
Опитайте се да не използвате множество плъгини с подобна функционалност
Големите плъгини (например, Essentials, AdminCMD, CommandBook) често включват функционалности на много малки плъгини. Например, същият Essentials съдържа функциите на плъгините iConomy, uHome, OpenInv, VanishNoPacket, Kit. Малките плъгини, чиято функционалност напълно се покрива от функционалността на един голям, в повечето случаи могат да бъдат премахнати, за да не натоварват сървъра.
Ограничете картата и я заредете сами
Ако не ограничите картата, натоварването на сървъра ще се увеличи значително. Можете да ограничите картата с помощта на плъгин. WorldBorder. За целта трябва да стартирате този плъгин и да изпълните командата /wb 200, след което да оформите картата с командата /wb fill.
Оформянето, разбира се, ще отнеме време, но е по-добре да го направите веднъж, затваряйки сървъра за техническа работа. Ако картата бъде оформяна от всеки играч, сървърът ще работи бавно.
Заменете тежките плъгини с по-бързи и по-малко ресурсноемки
Не всички плъгини за Minecraft могат да се нарекат успешни: често те съдържат много излишни и ненужни функции, а понякога консумират и много памет. Неуспешните плъгини е добре да бъдат заменени с алтернативи (има доста такива). Например, плъгинът LWC може да бъде заменен с Wgfix+MachineGuard, а плъгинът DynMap - с Minecraft Overviewer.
Винаги изчиствайте дропа или инсталирайте плъгин за автоматично премахване на дропа
Дропът в игрите е предметите, които падат при смъртта на моба или разрушаването на определени блокове. Съхраняването и обработката на дроповете заемат много системни ресурси.
За да работи сървърът по-бързо, е желателно дропът да се премахва. Това е по-добре да се прави с помощта на специални плъгини - например NoLagg или McClean.
Не използвайте античити
На игровите сървъри често се инсталират т. нар. античити - програми, които блокират опити за манипулиране на играта по некоректни начини.
Съществуват античити и за Minecraft. Всеки античит е винаги допълнителна натовареност за сървъра. Предпочитително е да се инсталират защити за лаунчера (които, обаче, не дават абсолютна гаранция за сигурност и лесно се заобикалят - но това вече е тема на отделен разговор) и за клиента.
Вместо заключение
Всяка инструкция и препоръка е много по-ефективна, ако е подкрепена с конкретни примери. На базата на предоставените по-горе указания за инсталация, създадохме нашия MineCraft сървър и добавихме нещо интересно на картата.
Ето какво получихме:
- Bukkit сървър - стабилна препоръчвана версия 1.6.4;
- Плъгин Statistics - за събиране на статистика за играчите;
- Плъгин WorldBorder - за визуализация и ограничаване на картата;
- Плъгин WorldGuard (+WorldEdit като зависимост) - за защита на определени области.
Каним всички желаещи да играят на него: за да се свържете, добавете нов сървър и укажете адреса mncrft.slc.tl.
Ще се радваме, ако споделите вашия опит в коментарите относно инсталацията, настройката и оптимизацията на MineCraft сървъри и разкажете какви модове и плъгини ви интересуват и защо.
Страхотна новина: От 1 август таксата за инсталация на выделен сървър с фиксирана конфигурация е намалена с 50%. Сега еднократната такса за инсталация е само 3000 руб.
Читателите, които не могат да оставят коментари тук, са поканени да се присъединят към нас в блог.
Източник: habr.com
