MÅ«su emuÄrÄ mÄs jau esam
Savas 9 gadu vÄstures laikÄ (skaitot no izlaiÅ”anas datuma), Minecraft ir izpelnÄ«jies pÄrsteidzoÅ”u fanu un nÄ«dÄju skaitu gan parasto spÄlÄtÄju, gan dÄ«Ä·u vidÅ«. VienkÄrÅ”Ä pasaules koncepcija, kas veidota no blokiem, ir attÄ«stÄ«jusies no vienkÄrÅ”as izklaides formas par universÄlu mediju saziÅai un dažÄdu objektu radÄ«Å”anai no reÄlÄs pasaules.
Papildus konstrukcijai spÄlei ir iespÄja radÄ«t
Bet nerunÄsim tÄlÄk par to, ko tieÅ”i spÄlÄtÄji rada, bet apskatÄ«sim aplikÄcijas servera daļu un izcelsim problÄmas (dažreiz ļoti sarežģītas), kas var rasties darbÄ«bas laikÄ ar slodzi. Uzreiz rezervÄsim, ka runÄsim tikai par Java izdevumu.
Serveru veidi
VienkÄrÅ”ÄkÄ iespÄja ir spÄles klientÄ iebÅ«vÄts serveris. MÄs izveidojÄm pasauli, nospiedÄm vienu pogu, un serveris kļuva pieejams vietÄjÄ tÄ«klÄ. Å Ä« iespÄja nevar izturÄt nopietnu slodzi, un tÄpÄc mÄs to pat neapsvÄrsim.
Vaniļa
Mojang Studios bez maksas izplata spÄles servera daļu kÄ Java lietojumprogrammu
Å ai pieejai ir viens nopietns trÅ«kums, proti, gatavu iespÄju trÅ«kums savienot spraudÅus, kas paplaÅ”ina servera funkcionalitÄti un ļauj ne tikai automatizÄt daudzus procesus, bet arÄ« optimizÄt veiktspÄju. TurklÄt oficiÄlajam serverim ir diezgan liels RAM patÄriÅÅ” katram pievienotajam atskaÅotÄjam.
bukkit
Servera lietojumprogramma, ko izveidojuŔi entuziasti, pamatojoties uz Vanilla versiju
Bukkit instalÄÅ”ana nav grÅ«ta, attiecÄ«gÄs instrukcijas ir resursÄ
SpigotMC
Lai atvieglotu spraudÅu izstrÄdÄtÄju dzÄ«vi, bija nepiecieÅ”ama API mijiedarbÄ«bai ar spÄļu pasauli. TieÅ”i Å”o problÄmu veidotÄji atrisinÄja.
Å obrÄ«d SpigotMC tiek aktÄ«vi izstrÄdÄts un izmantots. Tas atbalsta visus Bukkit izveidotos spraudÅus, taÄu nav ar to saderÄ«gs. Lai apietu DMCA noÅemÅ”anu, tika izgudrota eleganta metode ar nosaukumu BuildTools. Å is rÄ«ks novÄrÅ” nepiecieÅ”amÄ«bu izplatÄ«t kompilÄtu lietojumprogrammu un ļauj lietotÄjiem kompilÄt Spigot, CraftBukkit un Bukkit no pirmkoda. Tas viss padara DMCA aizliegumu bezjÄdzÄ«gu.
PaperMC
Viss Ŕķita forÅ”i, un Spigot kļuva par lielisku iespÄju. Bet dažiem entuziastiem ar to nepietika, un viÅi izveidoja savu Spigot dakÅ”iÅu āuz steroÄ«diemā. IeslÄgts
PaperMC ir lieliska saderÄ«ba, tÄpÄc SpigotMC rakstÄ«tie spraudÅi var viegli darboties PaperMC, taÄu bez oficiÄla atbalsta. Ir pieejama arÄ« atpakaļejoÅ”a saderÄ«ba ar SpigotMC. 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 jums jÄsaprot, ir tas, ka viss, kas saistÄ«ts ar spÄļu pasaules apstrÄdi, tiks apstrÄdÄts tikai vienÄ fiziskÄ servera skaitļoÅ”anas kodolÄ. TÄtad, ja pÄkÅ”Åi jums ir lielisks serveris ar duci skaitļoÅ”anas kodolu, tiks ielÄdÄts tikai viens. Visi pÄrÄjie bÅ«s praktiski dÄ«kstÄvÄ. Å Ä« ir lietojumprogrammas arhitektÅ«ra, un jÅ«s to nevarat darÄ«t. TÄpÄc, izvÄloties serveri, jums vajadzÄtu pievÄrst uzmanÄ«bu nevis kodolu skaitam, bet gan pulksteÅa frekvencei. Jo augstÄks tas ir, jo labÄka bÅ«s veiktspÄja.
RunÄjot par RAM ietilpÄ«bu, mums jÄvadÄs no Å”Ädiem rÄdÄ«tÄjiem:
- plÄnotais spÄlÄtÄju skaits;
- plÄnotais pasauļu skaits serverÄ«;
- katras pasaules lielums.
JÄatceras, ka Java lietojumprogrammai vienmÄr ir nepiecieÅ”ama RAM rezerve. Ja sagaidÄt, ka atmiÅas patÄriÅÅ” ir 8 gigabaiti, tad patiesÄ«bÄ tiem jÄbÅ«t 12. Skaitļi ir relatÄ«vi, bet bÅ«tÄ«ba nemainÄs.
Lai palaistu servera daļu, iesakÄm izmantot rakstÄ norÄdÄ«tos karogus
Bloku kartes Ä£enerÄÅ”ana
"Vai jÅ«s tieÅ”Äm domÄjat, ka mÄness pastÄv tikai tad, kad uz to skatÄties?" (Alberts EinÅ”teins)
PilnÄ«gi jauns serveris. TiklÄ«dz spÄlÄtÄjs pirmo reizi veiksmÄ«gi pieslÄdzas, spÄles varonis parÄdÄs vispÄrÄjÄ pulcÄÅ”anÄs punktÄ (nÄrstotÄ). Å Ä« ir vienÄ«gÄ vieta, kur serveris ir iepriekÅ” Ä£enerÄjis spÄļu pasauli. TajÄ paÅ”Ä brÄ«dÄ« klienta daļa aplÅ«ko iestatÄ«jumus, un galvenais parametrs ir zÄ«mÄÅ”anas attÄlums. Tas tiek mÄrÄ«ts gabalos (kartes laukums ir 16Ć16 un 256 blokus augsts) Cik tur ir norÄdÄ«ti gabali, ir tieÅ”i tas, cik tie tiks pieprasÄ«ti no servera.
Serveris glabÄ globÄlo pasaules karti, un, ja spÄles varoÅa parÄdÄ«Å”anÄs brÄ«dÄ« tajÄ vÄl nav Ä£enerÄtu bloku, tad serveris tos dinamiski Ä£enerÄ un saglabÄ. Tas ne tikai prasa lielus skaitļoÅ”anas resursus, bet arÄ« pastÄvÄ«gi palielina pasaules kartes izmÄru. VienÄ no vecÄkajiem anarhistu serveriem
RadÄ«t pasauli ap vienu spÄlÄtÄju nav problÄma. Radot pasauli ap simtiem spÄlÄtÄju, uz Ä«su laiku tiks izraisÄ«ta neliela servera palÄninÄÅ”ana, pÄc kuras slodze samazinÄsies. Izveidojot pasauli klienta renderÄÅ”anas attÄlumÄ ap tÅ«kstoÅ” spÄlÄtÄjiem, jau ir iespÄjams āizmestā serveri un visus klientus izmest no tÄ taimauta dÄļ.
Servera programmatÅ«rÄ ir tÄda vÄrtÄ«ba kÄ TPS (Ärces uz serveri - Ärces sekundÄ). Parasti 1 pulksteÅa cikls ir vienÄds ar 50 ms. (1 sekunde no reÄlÄs pasaules ir vienÄda ar 20 spÄles pasaules atzÄ«mÄm). Ja viena Ä·eksÄ«Å”a apstrÄde palielinÄs lÄ«dz 60 sekundÄm, servera lietojumprogramma tiks aizvÄrta, izmetot visus spÄlÄtÄjus.
RisinÄjums ir ierobežot pasauli ar noteiktÄm koordinÄtÄm un veikt iepriekÅ”Äju bloku Ä£enerÄÅ”anu. TÄdÄjÄdi mÄs noÅemam nepiecieÅ”amÄ«bu pÄc dinamiskas Ä£enerÄÅ”anas spÄles laikÄ, un serverim bÅ«s tikai jÄlasa esoÅ”a karte. Abas problÄmas var atrisinÄt ar vienu spraudni
VienkÄrÅ”Äkais veids ir iestatÄ«t pasaules robežu apļa formÄ attiecÄ«bÄ pret nÄrsta punktu (lai gan jÅ«s varat to izveidot jebkurÄ formÄ) ar vienu komandu:
/wb set <ŃŠ°Š“ŠøŃŃ Š² Š±Š»Š¾ŠŗŠ°Ń
> spawn
Ja spÄlÄtÄja varonis mÄÄ£inÄs ŔķÄrsot robežu, viÅÅ” tiks atstumts vairÄkus blokus. Ja tas tiek darÄ«ts vairÄkas reizes ierobežotÄ laika posmÄ, pÄrkÄpÄjs tiks piespiedu kÄrtÄ teleportÄts uz nÄrsta punktu. Pasaules pirmsÄ£enerÄÅ”ana tiek veikta vÄl vienkÄrÅ”Äk, ar komandu:
/wb fill
TÄ kÄ Å”Ä« darbÄ«ba var ietekmÄt servera spÄlÄtÄjus, noteikti apstipriniet:
/wb confirm
KopumÄ pasaules Ä£enerÄÅ”ana ar 5000 bloku rÄdiusu (~40 miljardi bloku) ar IntelĀ® XeonĀ® Gold 2 procesoru aizÅÄma aptuveni 6240 stundas. TÄpÄc, ja vÄlaties iepriekÅ” Ä£enerÄt lielÄku karti, Åemiet vÄrÄ, ka Å”is process prasÄ«s pietiekami daudz laika, un servera TPS tiks nopietni samazinÄts. TÄpat atcerieties, ka pat 5000 bloku rÄdiusam bÅ«s nepiecieÅ”ami aptuveni 2 GB diska vietas.
Neskatoties uz to, ka jaunÄkÄ spraudÅa versija tika izstrÄdÄta Minecraft versijai 1.14, eksperimentÄli tika konstatÄts, ka tas lieliski darbojas nÄkamajÄs versijÄs. Ir pieejams pilns komandu saraksts ar paskaidrojumiem
ProblÄmu bloki
Minecraft ir daudz dažÄdu bloku. TomÄr vÄlamies vÄrst lasÄ«tÄju uzmanÄ«bu uz tÄdu bloku kÄ TNT. KÄ norÄda nosaukums, Å”is bloks ir sprÄgstviela (redaktora piezÄ«me - Å”is ir virtuÄlÄs pasaules spÄles vienums, un Å”im vienumam nav nekÄ ar Ä«stÄm sprÄgstvielÄm). TÄ Ä«patnÄ«ba ir tÄda, ka aktivizÄÅ”anas brÄ«dÄ« uz to sÄk darboties gravitÄcijas spÄks. Tas liek serverim aprÄÄ·inÄt visas koordinÄtas, ja Å”ajÄ brÄ«dÄ« bloks sÄk krist.
Ja ir vairÄki trotila bloki, tad viena bloka detonÄcija izraisa detonÄciju un gravitÄcijas aktivizÄÅ”anos blakus esoÅ”ajos blokos, izkliedÄjot tos visos virzienos. Visa Ŕī skaistÄ mehÄnika servera pusÄ izskatÄs pÄc daudzÄm operÄcijÄm, lai aprÄÄ·inÄtu katra bloka trajektoriju, kÄ arÄ« mijiedarbÄ«bu ar blakus esoÅ”ajiem blokiem. Uzdevums ir ÄrkÄrtÄ«gi resursietilpÄ«gs, ko ikviens var viegli pÄrbaudÄ«t. Izveidojiet un uzspridziniet kubu no TNT blokiem, kuru izmÄrs ir vismaz 30x30x30. Un, ja jÅ«s domÄjÄt, ka jums ir labs, jaudÄ«gs spÄļu dators, 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 slodzi visÄ bloka detonÄcijas laikÄ. TÄpÄc, ja kÄds spÄlÄtÄjs to spÄj, veiktspÄjas problÄma ietekmÄs visus servera spÄlÄtÄjus.
VÄl grÅ«tÄks variants - Malu kristÄli. Ja TNT tomÄr eksplodÄ secÄ«gi, tad Edge Crystals detonÄ visi vienlaicÄ«gi, kas teorÄtiski var pilnÄ«bÄ apturÄt servera lietojumprogrammas darbÄ«bu.
No Ŕī scenÄrija var izvairÄ«ties, tikai pilnÄ«bÄ aizliedzot Å”o bloku izmantoÅ”anu spÄļu pasaulÄ. PiemÄram, izmantojot spraudni
SecinÄjums
Pareiza spÄļu servera pÄrvaldÄ«ba nav viegls uzdevums. GrÅ«tÄ«bas un samazinÄta veiktspÄja jÅ«s gaidÄ«s ik uz soļa, it Ä«paÅ”i, ja neÅemat vÄrÄ paÅ”u spÄles mehÄniku. Visu nav iespÄjams paredzÄt, jo spÄlÄtÄji dažkÄrt var bÅ«t ļoti radoÅ”i, mÄÄ£inot piespiest serveri darÄ«t kaut ko tÄdu, kam tas nebija paredzÄts. Tikai saprÄtÄ«gs lÄ«dzsvars starp riskiem un noteiktajiem ierobežojumiem ļaus serverim darboties nepÄrtraukti un nesamazinÄt tÄ veiktspÄju lÄ«dz kritiskajÄm vÄrtÄ«bÄm.
KarantÄ«nas laikÄ daži no mÅ«su darbiniekiem palaida garÄm savus iecienÄ«tÄkos birojus un nolÄma tos atjaunot Minecraft. Jums ir arÄ« iespÄja ierasties pie mums, neriskÄjot ar savu veselÄ«bu un netÄrÄjot laiku ceļÄ.
Lai to izdarÄ«tu, mÄs aicinÄm visus uz mÅ«su serveri minecraft.selectel.ru (klienta versija 1.15.2), kur tika atkÄrtoti izveidoti datu centri Tsvetochnaya-1 un Tsvetochnaya-2. Neaizmirstiet piekrist lejupielÄdÄt papildu resursus, tie ir nepiecieÅ”ami dažu atraÅ”anÄs vietu pareizai attÄloÅ”anai.
JÅ«s gaida uzdevumi, reklÄmas kodi, Lieldienu olas un patÄ«kama komunikÄcija.
Avots: www.habr.com