
Minecraft danes sodi med najbolj priljubljene omrežne igre. V manj kot treh letih (prva uradna izdaja je bila jeseni 2011) je pridobila milijone oboževalcev po vsem svetu.
Razvijalci igre se namerno osredotočajo na najboljše vzorce iz prejšnjih dveh desetletij, ko so bile mnoge igre z današnjega vidika primitvne glede grafike in nezadostne glede uporabniške izkušnje, a so resnično prevzele igralce.
Kot vse igre s peskovnikom, Minecraft uporabnikom nudi ogromne možnosti za ustvarjanje - v tem je v bistvu tudi glavni skrivnost njegove priljubljenosti.
Organizacija strežnikov za igro v večpredstavnostnem načinu je naloga samih igralcev in njihovih skupnosti. Danes na spletu deluje deset tisoč igralnih strežnikov (glej na primer seznam tukaj).
Mnogo oboževalcev te igre imamo tudi med našimi strankami, ki v naših podatkovnih centrih najemajo opremo za igralne projekte. V tem članku bomo spregovorili o tehničnih vidikih, na katere je treba paziti pri izbiri strežnika za
Minecraft.
Izbira platforme
Minecraft vključuje naslednje arhitekturne elemente:
- strežnik - program, s katerim igralci med seboj komunicirajo po omrežju;
- odjemalec - program za povezavo s strežnikom, nameščen na računalniku igralca;
- vtičniki - dodatki k strežniku, ki dodajajo nove funkcije ali širijo obstoječe;
- modi - dodatki za igralni svet (nove blokade, predmeti, možnosti).
Za Minecraft obstaja veliko strežniških platform. Najbolj razširjene in priljubljene sta Vanilla in Bukkit.
Vanilla je uradna platforma razvijalcev igre. Na voljo je tako v grafični kot konzolni različici. Nova različica Vanilla vedno izide hkrati z novo različico Minecraft.
Slabost Vanilla je pretirana poraba pomnilnika (približno 50 MB na igralca). Še ena pomembna slabost je pomanjkanje vtičnikov.
Bukkit je bila ustvarjena s strani skupine navdušencev, ki so si prizadevali izboljšati uradni strežnik Minecraft. Poskus se je izkazal za precej uspešnega: funkcionalnost Bukkit je precej širša kot Vanilla - predvsem zahvaljujoč podpori raznoliki modi in vtičnikom. Hkrati porabi manj pomnilnika na vsakega igralca - približno 5–10 MB.
Slabosti Bukkita so v tem, da ob zagonu porabi preveč operativne pomnilnika. Poleg tega, dlje ko strežnik deluje, več pomnilnika potrebuje (tudi če je malo igralcev). Pri izbiri Bukkita kot strežnika je treba upoštevati, da nove različice običajno vsebujejo napake; stabilna različica se običajno pojavi približno 2-3 tedne po izdaji uradne različice Minecraft.
Poleg tega v zadnjem času pridobivajo na priljubljenosti tudi druge platforme (na primer Spout, MCPC in MCPC+), vendar se razlikujejo po omejeni združljivosti z Vanilla in Bukkit ter izjemno omejeni podpori za mode (na primer za Spout je sploh mogoče pisati samo modele od nule). Če jih že uporabite - naj samo za eksperimente.
Za organizacijo igralnega strežnika priporočamo uporabo platforme Bukkit, saj se ponaša z največjo prilagodljivostjo; poleg tega obstaja veliko različnih modov in vtičnikov. Stabilno delovanje strežnika Minecraft je v veliki meri odvisno od pravilne izbire strojne platforme. Poglejmo to vprašanje podrobneje.
Strojne zahteve
Tako strežnik kot odjemalec Minecraft sta zelo zahtevna do sistemskih virov.
Pri izbiri strojne platforme je treba upoštevati, da večjedrni procesor ne prinaša veliko prednosti: jedro strežnika Minecraft lahko uporablja le en računalniški tok. Drugo jedro pa ne bo odveč: nekateri vtičniki se izvajajo v ločenih tokovih, pa tudi Java porabi kar nekaj virov ...
Zato za Minecraft-strežnika je bolje izbrati procesor, ki ima višjo zmogljivost enega jedra. Bolj zmogljiv dvojedrni procesor bo bolj zaželen kot večjedrni, a manj zmogljiv. Na specializiranih forumih priporočajo uporabo procesorjev s taktnimi frekvencami ne manj kot 3GHz.
Za normalno delovanje Minecraft strežnika je potrebna velika količina pomnilnika. Bukkit zasede približno 1 GB pomnilnika; poleg tega se za vsakega igralca, kot je bilo že omenjeno, dodeli od 5 do 10 MB. Vtičniki in modi prav tako porabijo precej pomnilnika. Tako bo za strežnik z 30 do 50 igralci potrebnih vsaj 4 GB pomnilnika.
V Minecraftu je veliko odvisno od hitrosti delovanja datotečnega sistema, kot je na primer nalaganje istih vtičnikov. Zato je priporočljivo izbrati strežnik z SSD diskom. Roto diski verjetno ne bodo primerni zaradi nizke hitrosti naključnega branja.
Veliko vlogo igra tudi hitrost internetne povezave. Za igranje 40-50 ljudi bo dovolj povezave s hitrostjo 10 Mb/s. Vendar pa tisti, ki načrtujejo bolj obsežen Minecraft projekt, ki vključuje spletno stran, forum in dinamično karto, nujno potrebujejo povezavo z večjo prepustnostjo.
Katero konkretno konfiguracijo izbrati? Iz naših predlaganih konfiguracij priporočamo, da se osredotočite na naslednje:
- Intel Core 2 Duo E8400 3 GHz, 6 GB RAM, 2×500 GB SATA, 3000 RUB/mesec;
- Intel Core 2 Quad Q8300 2.5 GHz, 6 GB RAM, 2×500 GB SATA, 3500 RUB/mesec - to konfiguracijo uporabljamo za naš testni strežnik MineCraft, na katerem lahko pravkar igrate (kako to narediti, je opisano spodaj);
- Intel Core i3-2120 3.3 GHz, 8 GB RAM, 2×500 GB SATA, 3500 RUB/mesec.
Te konfiguracije so povsem primerne za ustvarjanje Minecraft strežnika za 30-40 igralcev. Nekatere pomanjkljivosti so odsotnost SSD diskov, vendar nudimo drugo, prav tako pomembno prednost: zagotovljen kanal 100 Mb/s brez kakršnih koli omejitev in razmerij. Pri naročilu vseh zgoraj navedenih konfiguracij se namestitvena taksa ne zaračunava.
Imamo tudi bolj zmogljive, a seveda dražje strežnike (pri naročilu teh konfiguracij se tudi namestitvena taksa ne zaračunava):
- 2× Intel Xeon 5130, 2 GHz, 8 GB RAM, 4×160 GB SATA, 5000 RUB/mesec;
- 2× Intel Xeon 5504, 2 GHz, 12 GB RAM, 3×1 TB SATA, 9000 RUB/mesec.
Priporočamo tudi novo proračunsko različico z SSD diskom na osnovi procesorja Intel Atom C2758: Intel Atom C2758 2.4 GHz, 16 GB RAM, 2×240 GB SSD, 4000 RUB/mesec, namestitvena taksa - 3000 RUB.
Namestitev in zagon strežnika Bukkit v OS Ubuntu.
Preden namestimo strežnik, ustvarimo novega uporabnika in ga dodamo v sudo skupino:
$ sudo useradd -m -s /bin/bash $ sudo adduser sudo
Nato bomo nastavili geslo, s katerim se bo ustvarjeni uporabnik prijavljal na strežnik:
$ sudo passwd
Ponovno se povežemo na strežnik z novim uporabniškim računom in se lotimo namestitve.
Minecraft je napisan v Javi, zato je obvezno namestiti Java Runtime Environment na strežnik.
Posodobimo seznam razpoložljivih paketov:
$ sudo apt-get update
Nato izvedemo naslednji ukaz:
$ sudo apt-get install default-jdk
Za namestitev in zagon Bukkit je priporočljivo tudi namestiti terminalni multiplikator – na primer, screen (lahko pa uporabite tudi druge terminalne multiplikatorje – glejte našo pregled):
$ sudo apt-get install screen
Screen bo potreben, če se bomo povezovali na igralni strežnik preko ssh. Z njegovo pomočjo bomo lahko zagnali strežnik Minecraft v ločenem oknu terminala, in celo po zaprtju ssh klienta bo strežnik deloval.
Ustvarimo direktorij, v katerem bodo shranjene datoteke strežnika:
$ mkdir bukkit $ cd bukkit
Nato bomo obiskali stran za prenos uradne spletne strani Bukkit. V zgornjem desnem kotu strani lahko vidite povezavo do zadnje priporočene različice strežnika (recommended build). Priporočamo, da prenesete prav to različico:
$ wget
Zdaj zagnamo screen:
$ sudo screen
in izvedemo naslednji ukaz:
$ java -Xmx1024M -jar craftbukkit.jar -o false
Pojasnimo, kaj pomenijo uporabljeni parametri:
- Xmx1024M – največja količina delovne spomine na strežnik;
- jar craftbukkit.jar – pot do strežnika;
- o false – omogoča dostop do strežnika s piratskimi strankami.
Strežnik bo zagnan.
Strežnik lahko ustavite tako, da v konzoli vnesete ukaz stop.
Nastavitev in konfiguracija strežnika
Nastavitve strežnika se hranijo v konfiguracijski datoteki server.properties. Vsebuje naslednje parametre:
- generator-settings – določa predlogo generiranja superploskega sveta;
- allow-nether – opredeljuje možnost prehoda v Nižji svet. Po privzetku je za ta parameter nastavljeno true. Če je nastavljeno false, bodo vsi igralci iz Nižjega sveta premaknjeni v navadni;
- level-name — ime mape s datotekami koja će se koristiti tijekom igre. Mapu treba smjestiti u istu direktorij gdje se nalaze datoteke servera. Ako takva direktorija ne postoji, server automatski stvara novi svijet i smješta ga u direktorij s istim imenom;
- enable-query — postavljanjem vrijednosti true aktivira GameSpy4 protokol za slušanje servera;
- allow-flight — omogućava letenje u svijetu Minecrafta. Prema zadanim postavkama, vrijednost je false (letenje nije dozvoljeno);
- server-port — određuje port koji će se koristiti za igru na serveru. Standardni port za Minecraft iznosi 25565. Mijenjanje ove vrijednosti se ne preporučuje;
- level-type — određuje tip svijeta (DEFAULT/FLAT/LARGEBIOMES);
- enable-rcon — omogućava daljinski pristup konzoli servera. Prema zadanim postavkama, to je isključeno (false);
- level-seed — ulazni podaci za generator razina. Da biste mogli stvarati nasumične svjetove, ovo polje treba ostati prazno;
- force-gamemode — postavlja standardni način igre za igrače koji se povezuju na server;
- server-ip — određuje IP adresu koju će igrači koristiti za povezivanje na server;
- max-build-height — određuje maksimalnu visinu gradnje na serveru. Njegova vrijednost treba biti broj koji je djeljiv s 16 (64, 96, 256 itd.);
- spawn-npcs — omogućava (ako je postavljena vrijednost true) ili zabranjuje (ako je postavljena vrijednost false) pojavu NPC-a u selima;
- white-list — uključuje i isključuje korištenje bijele liste igrača na serveru. Ako je postavljena vrijednost true, administrator će moći stvoriti bijelu listu dodajući igrače ručno. Ako je postavljena vrijednost false, bilo koji korisnik koji zna IP adresu i port može se povezati na server;
- spawn-animals — omogućava automatsko pojavljivanje prijateljskih mobova, ako je postavljena vrijednost true;
- snooper-enabled — omogućava serveru slanje statistike i podataka developerima;
- hardcore — uključuje hardcore način rada na serveru;
- texture-pac — datoteka tekstura koja će se koristiti prilikom povezivanja igrača na server. Kao vrijednost ovog parametra treba unijeti ime zip arhive s teksturama koja se čuva u istoj direktoriji kao i server;
- online-mode — omogoča preverjanje premium računov uporabnikov, ki se povezujejo s strežnikom. Če je ta parameter nastavljen na true, lahko strežnik obiskujejo le lastniki premium računov. Če je preverjanje računov onemogočeno (nastavljeno na false), lahko strežnik obiskujejo vsi uporabniki (vključno z, na primer, igralci, ki so ponarejali svoje ime), kar ustvarja dodatna varnostna tveganja. Ob onemogočenem preverjanju je mogoče igrati Minecraft preko lokalnega omrežja, brez dostopa do interneta;
- pvp — omogoča ali onemogoča vojskovanje med igralci. Če je ta parameter nastavljen na true, lahko igralci uničujejo drug drugega. Če je nastavitev false, igralci ne morejo povzročiti neposredne škode drug drugemu;
- difficulty — določa stopnjo težavnosti igre. Lahko ima vrednosti od 0 (najlažje) do 3 (najtežje);
- gamemode — določa, kateri način igre bo nastavljen za vstopajoče igralce na strežnik. Lahko ima naslednje vrednosti: 0 — Survival, 1 — Creative, 2 — Adventure;
- player-idle-timeout — čas neaktivnosti (v minutah), po katerem se igralci samodejno odzovejo s strežnika;
- max-players — največje dovoljeno število igralcev na strežniku (od 0 do 999);
- spawn-monsters — omogoča (če je vrednost nastavljen na true) pojav sovražnih bitij;
- generate-structures — omogoča (true) / onemogoča (false) generacijo struktur (zakladnice, trdnjave, vasi);
- view-distance — ureja radij aktualnih chunkov, ki se pošiljajo igralcu; lahko ima vrednosti od 3 do 15.
Dnevniki strežnika Minecraft se beležijo v datoteko server.log. Shranjena je v istem imeniku kot datoteke strežnika. Log se nenehno povečuje, kar zaseda vedno več prostora na disku. Delovanje mehanizma zapisovanja lahko organizirate z uporabo tako imenovane rotacije dnevnikov. Za rotacijo se uporablja posebna zbirka virov – logrotate. Omejuje število zapisov v dnevniku na določen prag.
Rotacijo dnevnikov lahko nastavite tako, da se vsi zapisi izbrišejo takoj, ko datoteka dnevnika doseže določeno velikost. Lahko določite tudi rok, po katerem so vsi stari zapisi razglašeni za zastarele in izbrisani.
Glavne postavke rotacije se nahajajo v datoteki /etc/logrotate.conf; poleg tega je mogoče za vsako aplikacijo ustvariti individualne nastavitve. Datoteke z individualnimi nastavitvami se hranijo v imeniku /etc/logrotate.d.
Ustvarimo besedilno datoteko /etc/logrotate.d/craftbukkit in vpišemo naslednje parametre:
/home/craftbukkit/server.log {
rotate 2
weekly
compress
missingok
notifempty
}
Podrobneje si poglejmo njihove vrednosti:
- parameter rotate določa število rotacij pred izbrisanjem datoteke;
- weekly določa, da se bo rotacija izvajala tedensko (lahko nastavimo tudi druge parametre: monthly – mesečno in daily – dnevno);
- compress določa, da je treba arhivske dnevnike stisniti (nasprotna možnost je nocompress);
- missingok določa, da se pri odsotnosti datoteke dnevnike nadaljuje z delovanjem in ne izpiše napak;
- notifempty določa, da se datoteka dnevnike ne premika, če je prazna.
O nastavitev rotacije dnevnikov lahko preberete podrobneje ovde.
Nasveti za optimizacijo
Takoj moramo omeniti, da bodo v tem razdelku predstavljeni nasveti, ki se nanašajo le na optimizacijo igralnega strežnika. Vprašanja fine nastavitve in optimizacije strežnika, na katerem je nameščen Minecraft, predstavljajo posebno temo, ki presega obseg tega članka; zainteresirani bralci lahko zlahka najdejo potrebne informacije na internetu.
Ena najpogostejših težav, ki se pojavijo pri igranju Minecrafta, so tako imenovani zamiki – situacije, ko program ne reagira pravočasno na uporabniški vnos. Te težave so lahko posledica težav tako na strani odjemalca kot na strani strežnika. Spodaj bomo dali priporočila, ki bodo pomagala zmanjšati verjetnost težav na strani strežnika.
Redno spremljajte porabo pomnilnika s strežnikom in vtičniki
Porabo pomnilnika lahko spremljate s pomočjo specializiranih administrativnih vtičnikov – na primer, LagMeter.
Spremljajte posodobitve vtičnikov
Praviloma si razvijalci novih vtičnikov z vsako novo različico prizadevajo zmanjšati obremenitev.
Trudite se ne uporabljati številnih vtičnikov s podobno funkcionalnostjo
Veliki pluginovi (kao što su Essentials, AdminCMD, CommandBook) često uključuju funkcionalnosti mnogih malih pluginova. Na primer, Essentials sadrži funkcije pluginova iConomy, uHome, OpenInv, VanishNoPacket, Kit. Male pluginove, čija funkcionalnost je u potpunosti pokrivena funkcionalnošću jednog velikog, većinom je moguće ukloniti kako ne bi opterećivali server.
Ograničite mapu i učitajte je sami
Ako ne ograničite mapu, opterećenje na serveru značajno će se povećati. Mapu možete ograničiti pomoću plugina WorldBorder. Da biste to uradili, potrebno je da pokrenete ovaj plugin i izvršite komandu /wb 200, a zatim nacrtate mapu koristeći komandu /wb fill.
Nacrtavanje će, naravno, potrajati, ali je bolje to uraditi jednom tako što ćete zatvoriti server na tehničke radove. Ako kartu bude crtalo svakog igrača, server će raditi sporo.
Zamenite teške pluginove sa bržim i manje zahtevnim
Daleko ne mogu se svi pluginovi za Minecraft smatrati uspešnim: često sadrže mnogo suvišnih i nepotrebnih funkcija, a ponekad i troše mnogo memorije. Neuspešne pluginove najbolje je zameniti alternativama (njih ima dosta). Na primer, plugin LWC može biti zamenjen sa Wgfix+MachineGuard, a plugin DynMap sa Minecraft Overviewer.
Uvek čistite drop ili instalirajte plugin za automatsko uklanjanje dropa
Dropovi u igrama su predmeti koji ispadaju prilikom smrti mobova ili uništavanja nekih blokova. Čuvanje i obrada dropova troše mnogo sistemskih resursa.
Da bi server radio brže, drop je poželjno ukloniti. To je najbolje uraditi pomoću specijalnih pluginova — na primer, NoLagg ili McClean.
Ne koristite anti-cheat
Na igrama serverima često se instaliraju takozvani anti-cheati — programi koji blokiraju pokušaje uticaja na igru na nepoštene načine.
Postoje anti-cheati i za Minecraft. Svaki anti-cheat uvek predstavlja dodatno opterećenje na server. Preporučuje se uspostavljanje zaštita za launcher (koje, doduše, ne daju apsolutnu sigurnost i lako se probijaju — ali to je već tema za posebnu raspravu) i za klijent.
Namesto zaključka
Vsak navodila in priporočila so veliko bolj učinkovita, če so podprta s konkretnimi primeri. Na podlagi zgoraj navedenih navodil za namestitev smo ustvarili svoj strežnik MineCraft in na karto dodali nekaj zanimivega.
Tukaj je, kar smo ustvarili:
- Strežnik Bukkit – stabilna priporočena različica 1.6.4;
- Vtičnik Statistics – za zbiranje statistike o igralcih;
- Vtičnik WorldBorder – za risanje in omejevanje karte;
- Vtičnik WorldGuard (+WorldEdit kot odvisnost) – za zaščito določenih območij.
Vabimo vse zainteresirane, da se igrajo na njem: za povezavo dodajte nov strežnik in navedite naslov mncrft.slc.tl.
Veseli bomo, če v komentarjih delite svoje izkušnje z namestitvijo, nastavitev in optimizacijo strežnikov MineCraft ter poveste, kateri moduli in vtičniki so vam zanimivi in zakaj.
Super novica: Od 1. avgusta je enkratni strošek za namenski strežnikov s fiksno konfiguracijo znižan za 50%. Zdaj znaša enkratni strošek le 3000 RUB.
Bralce, ki tu ne morejo pustiti komentarjev, vabimo k nam v blog.
Izvor: habr.com
