Minecraft server optimizācija

Minecraft server optimizācija
MÅ«su blogā mēs jau stāstÄ«jām, 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 loÄ£iskās shēmas, 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 izdomāta un arhitektÅ«ras bÅ«vniecÄ«bu. Viss ierobežots tikai ar spēlētāja iztēli un spēles pasaules iespējām. 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.

Atskaņot video

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ā . Tas ļauj izveidot savu personÄ«go pasauli, padarot to pieejamu savienojumam no jebkuras pasaules malas. Tiem, kas to dara pirmo reizi, ir lieliskspamācÄ«ba atseviŔķa servera , 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 Bukkit , 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ā GamePedia. 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 repozitorijs 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 Spigot, pamatojoties uz Bukkit kodolu un to pārstrādājot, lai panāktu labāku uzticamÄ«bu un veiktspēju. Tomēr Git repozitorijs projekts tika bloķēts saistÄ«bā ar Digitālo autortiesÄ«bu likumu (DMCA), 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 projekta lapu galvenajā priekÅ”rocÄ«bā ir norādÄ«ts, ka ā€œTas ir ļoti ātrsā€. AttÄ«stÄ«tais kopiena ļ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 dokumentācijā.

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 Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. Å Ä« "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 2b2t (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 WorldBorder.

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 <Ń€Š°Š“ŠøŃƒŃ в блоках> spawn

Ja, 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 fill

Tā kā Ŕī darbÄ«ba potenciāli var ietekmēt spēlētājus, kas atrodas serverÄ«, neaizmirstiet apstiprināt izpildi:

/wb confirm

Kopumā, 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 plugin forums.

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

Minecraft server optimizācija
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 WorldGuard. Ņemiet vērā, ka pats spraudnis nestrādā bez cita spraudņa WorldEdit. 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

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster