
MÅ«su blogÄ mÄs jau , kÄ izveidot savu Minecraft serveri, tomÄr kopÅ” tÄ laika ir pagÄjuÅ”i 5 gadi, un daudz kas ir mainÄ«jies. DalÄmies ar jums aktuÄlajiem veidiem, kÄ izveidot un optimizÄt servera daļu tik populÄrajai spÄlei.
Savas 9 gadu pastÄvÄÅ”anas laikÄ (ja Åem vÄrÄ tÄ izlaiÅ”anas datumu) Minecraft ir ieguvis neticamu skaitu fanu un kritiÄ·u gan starp parastajiem spÄlÄtÄjiem, gan starp Ä£ikajiem. VienkÄrÅ”Ä kubu pasaules koncepcija ir pÄrvÄrsta no parasta izklaižu veida par universÄlu vidi saziÅai un dažÄdu reÄlo objektu izveidoÅ”anai.
Papildus bÅ«vniecÄ«bai spÄlÄ ir iespÄja veidot , kas ļauj Ä«stenot pilnvÄrtÄ«gus algoritmus iekÅ” Minecraft. YouTube ir pilns ar diezgan iespaidÄ«giem video, kur cilvÄki, ieguldot milzÄ«gu spÄku un tÄrÄjot daudz laika, ir izveidojuÅ”i kopiju kÄda elektroniskÄ ierÄ«ce vai uzbÅ«vÄjuÅ”i detalizÄtu kÄda esoÅ”a un Bet neiesim tÄlÄk runÄt par to, ko tieÅ”i spÄlÄtÄji izveido, bet apskatÄ«sim servera daļu un izcelsim problÄmas (dažreiz diezgan sarežģītas), kas var rasties darba procesÄ slodzes apstÄkļos. Uzreiz jÄpiebilst, ka runa bÅ«s tikai par Java Edition.

Serveru veidi
VienkÄrÅ”Äkais variants ir serveris, kas ir iebÅ«vÄts spÄles klientÄ. IzveidojÄt pasauli, nospiedÄt vienu pogu, un serveris uzreiz ir pieejams vietÄjÄ tÄ«klÄ. Å Ädu variantu nopietna slodze izturÄt nevar, tÄdÄļ mÄs to pat neapskatÄ«sim.
Vanilla
Mojang Studios izplata spÄles servera daļu kÄ bezmaksas Java lietotni
oficiÄlajÄ mÄjaslapÄ pamÄcÄ«ba , pieejama attiecÄ«gajÄ spÄles Wiki. , ГоŃŃŃŠæŠ½ŃŠ¹ в ŃŠ¾Š¾ŃвеŃŃŃŠ²ŃŃŃŠµŠ¹ ŠøŠ³ŃŠ¾Š²Š¾Š¹ Wiki.
Å im pieejai ir viens nopietns trÅ«kums, proti, nav iespÄju āno kastesā pievienot spraudÅus, kas paplaÅ”ina servera funkcionalitÄti un ļauj ne tikai automatizÄt daudzas procedÅ«ras, bet arÄ« optimizÄt veiktspÄju. TurklÄt oficiÄlajam serverim ir diezgan augsts operatÄ«vÄs atmiÅas patÄriÅÅ” uz katru pievienoto spÄlÄtÄju.
Bukkit
Enthusiastu veidota servera lietojumprogramma, balstÄ«ta uz Vanilla versiju , ievÄrojami paplaÅ”inÄja spÄles iespÄjas, atbalstot spraudÅus un modifikÄcijas. TÄ Ä¼Äva pievienot spÄļu procesam jaunus blokÄ·Ädes un veikt dažÄdas manipulÄcijas, kas nav pieejamas vaniļas programmatÅ«rÄ. Interesanti, ka Å”ai lietojumprogrammai bija ievÄrojami mazÄks atmiÅas prasÄ«jums.
InstalÄt Bukkit nav Ä«paÅ”i sarežģīti, attiecÄ«gÄ instrukcija ir pieejama resursÄ . Bet tas nav jÄgas, jo kopÅ” 2014. gada Bukkit komanda izŔķīrÄs, projekta izstrÄdÄtÄji kļuva par Mojang Studios darbiniekiem, un ir pamests. TÄdÄjÄdi, Bukkit faktiski ir miris, un ir vÄrts pievÄrst uzmanÄ«bu diviem nÄkamajiem projektiem.
SpigotMC
Lai atvieglotu spraudÅu izstrÄdÄtÄju dzÄ«vi, bija nepiecieÅ”ams API, lai mijiedarbotos ar spÄles pasauli. TieÅ”i Å”o uzdevumu risinÄja , pamatojoties uz Bukkit kodolu un to pÄrstrÄdÄjot, lai panÄktu labÄku uzticamÄ«bu un veiktspÄju. TomÄr projekts tika bloÄ·Äts saistÄ«bÄ ar DigitÄlo autortiesÄ«bu likumu (), un nav iespÄjams lejupielÄdÄt avota kodu no turienes.
PaÅ”laik SpigotMC aktÄ«vi attÄ«stÄs un tiek izmantots. Tas atbalsta visus spraudÅus, kas izstrÄdÄti Bukkit, tomÄr ar to nav saderÄ«gs. Lai apietu DMCA Takedown aizliegumu, tika izdomÄta eleganta metode, ko sauc par BuildTools. Å is rÄ«ks atbrÄ«vo no nepiecieÅ”amÄ«bas izplatÄ«t kompilÄtu lietojumprogrammu un ļauj lietotÄjiem veikt Spigot, CraftBukkit un Bukkit kompilÄciju no avota koda. Viss tas padara DMCA aizliegumu bezjÄdzÄ«gu.
PaperMC
IzskatÄs, ka viss ir lieliski, un Spigot ir kļuvis par lielisku variantu. Bet daudziem entuziastiem tas Ŕķita par maz, un viÅi izveidoja savu Spigot āuz steroÄ«diemā forku. Par galvenajÄ priekÅ”rocÄ«bÄ ir norÄdÄ«ts, ka āTas ir ļoti Ätrsā. AttÄ«stÄ«tais ļauj Ätri risinÄt raduÅ”Äs problÄmas, bet paplaÅ”inÄtais API ļauj izstrÄdÄt interesantus pluginus. Palaist PaperMC var ar vienu vienkÄrÅ”u komandu, kas norÄdÄ«ta .
AttiecÄ«bÄ uz PaperMC saderÄ«bu viss ir lieliski, tÄpÄc SpigotMC rakstÄ«tie pluginus viegli darbosies arÄ« PaperMC, bet bez oficiÄlas atbalsta. AtpakaļsaderÄ«ba ar SpigotMC arÄ« ir klÄt. Tagad, kad esam uzskaitÄ«juÅ”i dažÄdas servera izveides iespÄjas, pÄriesim pie veiktspÄjas problÄmÄm, kas var rasties.
ProblÄmas un risinÄjumi
Galvenais, kas jÄzina, ir tas, ka viss, kas attiecas uz spÄles pasaules apstrÄdi, tiks apstrÄdÄts tikai uz viena fiziskÄ servera skaitļoÅ”anas kodola. Ja jums ir lielisks serveris ar desmit skaitļoÅ”anas kodoliem, tad noslogots bÅ«s tikai viens. PÄrÄjie faktiski bÅ«s bezdarbnieki. TÄ ir lietojumprogrammas arhitektÅ«ra, un jÅ«s to nevarat mainÄ«t. TÄpÄc, izvÄloties serveri, jÄpievÄrÅ” uzmanÄ«ba nevis kodolu skaitam, bet gan pulksteÅa frekvence. Jo augstÄka tÄ bÅ«s, jo labÄka bÅ«s veiktspÄja.
AttiecÄ«bÄ uz operatÄ«vÄs atmiÅas apjomu, Å”eit jÄÅem vÄrÄ Å”Ädi rÄdÄ«tÄji:
- plÄnotais spÄlÄtÄju skaits;
- plÄnotais pasaules skaits serverÄ«;
- katras pasaules lielums.
JÄatceras, ka Java lietojumprogrammai vienmÄr nepiecieÅ”ams rezerves operatÄ«vÄs atmiÅas apjoms. Ja plÄnojat patÄriÅu 8 gigabaitus, tad faktiski jÄbÅ«t 12. Skaitļi ir nosacÄ«ti, taÄu jÄga no tÄ nemainÄs.
Servera daļas palaiÅ”anai mÄs ieteiktu izmantot rakstÄ uzskaitÄ«tos karogus . Å Ä« "melna burvÄ«ba" ļauj serverim pareizi konfigurÄt "atkritumu savÄcÄju" un optimizÄt operatÄ«vÄs atmiÅas izmantoÅ”anu. NedrÄ«kst pieŔķirt vairÄk atmiÅas, nekÄ patiesÄ«bÄ patÄrÄ serveris pie maksimÄlÄ spÄlÄtÄju pieplÅ«duma.
Bloku kartes Ä£enerÄÅ”ana
āVai jÅ«s tieÅ”Äm domÄjat, ka MÄness pastÄv tikai tad, kad jÅ«s uz to skatÄties?ā (Alberts EinÅ”teins)
PilnÄ«gi jauns servers. Kad spÄlÄtÄjs pirmo reizi veiksmÄ«gi pieslÄdzas, spÄles varonis parÄdÄs kopÄjÄ savÄkÅ”anas punktÄ (spawns). Å Ä« ir vienÄ«gÄ vieta, kur spÄles pasaule pirmsÄkumÄ Ä£enerÄjas servera pusÄ. TajÄ paÅ”Ä brÄ«dÄ« klients skatÄs iestatÄ«jumos, un galvenais parametrs ir attÄloÅ”anas attÄlums. To mÄra Äaklos (16x16 kartes laukums ar 256 bloku augstumu). Cik daudz Äaklu tur norÄdÄ«ts, tik daudz arÄ« tiks pieprasÄ«ts no servera.
ServerÄ« tiek glabÄta globÄlÄ pasaules karte, un, ja tajÄ vÄl nav Ä£enerÄtu bloku spÄles varoÅa ienÄkÅ”anas punktÄ, serveris tos dinamiski Ä£enerÄ un saglabÄ. Tas prasa lielus aprÄÄ·inu resursus un nepÄrtraukti palielina pasaules kartes izmÄru. Viens no vecÄkajiem anarhijas serveriem (2builders2tools) karte jau pÄrsniegusi 8 TB, un pasaules robeža ir 30 miljonu bloku atzÄ«me. Ar Å”o serveri saistÄ«tas tÅ«kstoÅ”iem stÄstu, un tam ir pelnÄ«ta atseviŔķa rakstu sÄrija.
Pasaules Ä£enerÄÅ”ana ap vienu spÄlÄtÄju nav problÄma. Pasaules Ä£enerÄÅ”ana ap simts spÄlÄtÄjiem izraisÄ«s nelielus servera traucÄjumus Ä«su laiku, pÄc kura slodze samazinÄsies. Pasaules Ä£enerÄÅ”ana attÄloÅ”anas attÄluma tuvumÄ ap tÅ«kstoÅ” spÄlÄtÄjiem var ''nogÄzt'' serveri un izmest visus klientus pa laiku.
Servera programmÄ ir tÄds rÄdÄ«tÄjs kÄ TPS (Ticks per Server ā takti sekundÄ). StandartÄ 1 taktis ir 50 ms. (1 reÄlÄ pasaules sekunde ir vienÄda ar 20 spÄles pasaules taktiem). Ja viena takta apstrÄde palielinÄs lÄ«dz 60 sekundÄm ā servera programma tiks aizvÄrta, izmest visus spÄlÄtÄjus.
RisinÄjums ir ierobežot pasauli ar noteiktiem koordinÄtÄm un veikt iepriekÅ”Äju bloku Ä£enerÄÅ”anu. TÄdÄjÄdi mÄs atbrÄ«vojam nepiecieÅ”amÄ«bu pÄc dinamikas Ä£enerÄÅ”anas spÄles procesÄ, un serverim bÅ«s pietiekami izlasÄ«t jau esoÅ”o karti. Abu jautÄjumu risinÄÅ”anai nepiecieÅ”ams vienÄ«gais spraudnis .
VisvieglÄk ir noteikt pasaules robežu kÄ apli attiecÄ«bÄ pret spawna punktu (lai gan to var izveidot jebkuras formas) ar vienu komandu:
/wb set <ŃŠ°Š“ŠøŃŃ Š² блокаŃ
> spawnJa, ja spÄles tÄls mÄÄ£inÄs ŔķÄrsot robežu, tas tiks atgriezts par vairÄkiem blokiem atpakaļ. Ja to izdarÄ«s vairÄkas reizes ierobežotÄ laikÄ, pÄrkÄpÄjs tiks piespiedu kÄrtÄ teleports uz dzimÅ”anas punktu. IepriekÅ”Äja pasaules Ä£enerÄÅ”ana tiek veikta vÄl vieglÄk ar komandu:
/wb fillTÄ kÄ Å”Ä« darbÄ«ba potenciÄli var ietekmÄt spÄlÄtÄjus, kas atrodas serverÄ«, neaizmirstiet apstiprinÄt izpildi:
/wb confirmKopumÄ, lai Ä£enerÄtu pasauli ar 5000 bloku rÄdiusu (~40 miljardi bloku), aizgÄja apmÄram 2 stundas uz IntelĀ® XeonĀ® Gold 6240 procesora. TÄpÄc, ja vÄlaties palaist prÄÄ£enerÄciju lielÄkai kartei, Åemiet vÄrÄ, ka Å”is process prasÄ«s ievÄrojamu laiku, un servera TPS bÅ«s nopietni samazinÄts. TurklÄt atcerieties, ka pat 5000 bloku rÄdiuss prasÄ«s aptuveni 2 GB vietas uz datu nesÄja.
Neskatoties uz to, ka pÄdÄjÄ plugin versija tika izstrÄdÄta Minecraft versijai 1.14, eksperimentÄli ir pierÄdÄ«ts, ka tÄ lieliski darbojas arÄ« vÄlÄkÄs versijÄs. Pilns komandu saraksts ar skaidrojumiem pieejams .
ProblÄmu bloki
Bloku veidu Minecraft ir ļoti daudz. TomÄr mÄs vÄlÄtos pievÄrst lasÄ«tÄju uzmanÄ«bu tÄdam blokam kÄ TNT. KÄ norÄda nosaukums, Å”is bloks ir sprÄgstviela (redakcijas piezÄ«me ā tas ir spÄles priekÅ”mets virtuÄlajÄ pasaulÄ un tam nav nekÄda sakara ar reÄlÄm sprÄgstvielÄm). TÄ Ä«paŔība ir tÄda, ka aktivizÄÅ”anas brÄ«dÄ« tam sÄk darboties gravitÄcijas spÄks. Tas liek serverim aprÄÄ·inÄt visas koordinÄtas, ja tajÄ brÄ«dÄ« bloks sÄk krist.
Ja bloku TNT ir vairÄki, viena bloka detonÄcija izraisa detonation un gravitÄcijas iedarbÄ«bu uz blakus blokiem, izkliedÄjot tos visÄs pusÄs. Visa Ŕī skaistÄ mehÄnika servera pusÄ izskatÄs kÄ daudzas operÄcijas, lai aprÄÄ·inÄtu katra blokÄ trajektoriju un mijiedarbÄ«bu ar blakus esoÅ”ajiem blokiem. Uzdevums ir ÄrkÄrtÄ«gi resursietilpÄ«gs, ko katrs var viegli pÄrbaudÄ«t. Izveidojiet un uzspridziniet kubu no TNT blokiem, kura izmÄrs ir vismaz 30x30x30. Un, ja domÄjÄt, ka jums ir labs spÄcÄ«gs spÄļu dators, tad jÅ«s ļoti kļūdÄ«jÄties š
/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt 
LÄ«dzÄ«gs "eksperiments" serverÄ« ar IntelĀ® XeonĀ® Gold 6240 izraisÄ«ja nopietnu TPS kritumu un 80% CPU noslodzi visÄ bloku detonÄcijas laikÄ. TÄpÄc, ja kÄds no spÄlÄtÄjiem spÄs to paveikt, veiktspÄjas problÄma ietekmÄs visus serverÄ« esoÅ”os spÄlÄtÄjus.
VÄl grÅ«tÄks variants ā Galaktikas kristÄli. Ja TNT tomÄr eksplodÄ secÄ«gi, tad Galaktikas kristÄli detonÄ visu uzreiz, kas teorÄtiski var vispÄr apturÄt servera aplikÄciju darbÄ«bu.
Å o scenÄriju var novÄrst, tikai pilnÄ«bÄ aizliedzot Å”o bloku izmantoÅ”anu spÄles pasaulÄ. PiemÄram, ar palÄ«dzÄ«bu spraudÅa . Å emiet vÄrÄ, ka pats spraudnis nestrÄdÄ bez cita spraudÅa . TÄtad vispirms instalÄjiet WorldEdit, pÄc tam WorldGuard.
SecinÄjums
PrasmÄ«ga spÄļu servera vadÄ«ba nav viegla lieta. GrÅ«tÄ«bas un veiktspÄjas kritums gaida ik uz soļa, jo Ä«paÅ”i, ja neÅem vÄrÄ paÅ”u spÄles mehÄniku. IespÄjams paredzÄt visu, jo spÄlÄtÄji dažkÄrt ir ļoti izdomÄ«gi, mÄÄ£inot panÄkt servera darbÄ«bu tÄ, kÄds tas nav paredzÄts. Tikai saprÄtÄ«gs lÄ«dzsvars starp riskiem un uzstÄdÄ«tajiem ierobežojumiem ļaus serverim darboties nepÄrtraukti, nezaudÄjot veiktspÄju kritiskÄs robežÄs.
KarantÄ«nas laikÄ daži mÅ«su darbinieki ilgojÄs pÄc mīļajiem birojiem un nolÄma tos atjaunot Minecraft. Jums arÄ« ir iespÄja pievienoties mums, neriskÄjot ar savu veselÄ«bu un netÄrÄjot laiku ceļÄ.
TÄpÄc mÄs aicinÄm visus interesentus uz mÅ«su serveri minecraft.selectel.ru (klienta versija 1.15.2), kur ir atjaunoti datu centri Ziedu-1 un Ziedu-2. Neaizmirstiet piekrist papildu resursu lejupielÄdei, tie ir nepiecieÅ”ami, lai pareizi attÄlotu dažas lokÄcijas.
JÅ«s sagaida uzdevumi, promo kodi, "olas" un patÄ«kama saziÅa.
Avots: habr.com
