Minecrafti serveri optimeerimine

Minecrafti serveri optimeerimine
Meie blogis oleme juba olen rÀÀkinud, kuidas luua oma Minecrafti server, kuid sellest on möödunud 5 aastat ja palju on muutunud. Jagame teiega asjakohaseid viise selle populaarse mÀngu serveri loomise ja optimeerimise kohta.

Oma 9-aasta ajaloo jooksul (kui arvestada vÀljaandmise kuupÀeva) on Minecraft kogunud uskumatult palju fÀnne ja kriitikuid nii tavapÀrastelt mÀngijatelt kui ka geekeritest. Lihtne kuubikute maailm on muutunud tavalisest ajaviitest universaalseks suhtlus- ja loomekeskkonnaks, kus saab luua erinevaid reaalse maailma objekte.

Lisaks ehitamisele pakub mÀng vÔimalust luua loogikateid, mis vÔimaldavad rakendada tÀielikke algoritme Minecraftis. YouTube'is on palju muljetavaldavaid videoid, kus inimesed, kes on investeerinud tohutult vaeva ja aega, on loonud koopiaid erinevatest elektroonilistest seadmetest vÔi ehitanud detailsed koopiad olemasolevatest ja vÀljamÔeldud arhitektuurilistest ehitistest. KÔik on piiratud vaid mÀngija kujutlusvÔime ja mÀngu universumi vÔimalustega.

Vaata videot

Aga jĂ€tkame jutu kĂ€tketud teemadega, mis on seotud mĂ€ngijate loominguga, ning vaatame rakenduse serveripoolt ning kĂ€sitleme probleeme, mis vĂ”ivad tekkida töö kĂ€igus koormuse all (mĂ”nikord ĂŒsna keerulised). TĂ€iendavalt mĂ€rkime, et rÀÀgime ainult Java Edition'ist.

ServeritĂŒĂŒbid

Lihtsaim variant on server, mis on integreeritud mÀngu klienti. Loodud maailm, vajutad nuppu, ja server on kohaliku vÔrgu kaudu saadaval. Selline variant ei suuda taluda tÔsist koormust, seega ei arutame seda varianti edasi.

Vanilla

EttevĂ”te Mojang Studios jagab mĂ€ngu serveripoolt tasuta Java-rakendusena. ametlikul veebileheltSee vĂ”imaldab sul luua omaenda pĂŒhendatud server ja isikliku maailma, tehes selle kergesti kĂ€ttesaadavaks igast maailma nurgast. Need, kes teevad seda esmakordselt, saavad suurepĂ€rase tutorial, mis on saadaval vastavas mĂ€ngu Wikis.

Sellel lĂ€henemisel on ĂŒks tĂ”sine puudus, nimelt - poe tasemel plugin-de integreerimise vĂ”imaluste puudumine, mis laiendavad serveri funktsionaalsust ning vĂ”imaldavad mitte ainult automatiseerida paljusid protsesse, vaid ka optimeerida jĂ”udlust. Lisaks tarbib ametlik server ĂŒsna palju RAM'i iga ĂŒhendatud mĂ€ngija kohta.

Bukkit

Harrastajate loodud Vanilla versiooni pĂ”hjal serverirakendus Bukkit laiendas mĂ€ngu vĂ”imalusi oluliselt, toetades pluginaid ja modifikatsioone. See lubas mitte ainult mĂ€ngu protsessis uusi plokke lisada, vaid ka teostada erinevaid manipuleerimisi, mis olid vanillisĂŒsteemides saadaval. Huvi tĂ”ttu, vajab see rakendus mĂ€lu oluliselt vĂ€hem.

Bukkit'i installimine ei ole keeruline, vastav juhend on saadaval ressursil GamePedia. Kuid see pole mÔtet, kuna alates 2014. aastast on Bukkit meeskond lahku lÀinud, projekti arendajad on saanud Mojang Studios'i töötajateks, ning repo on mahajÀetud. Seega on Bukkit sisuliselt surnud ja on mÔistlik pöörata tÀhelepanu jÀrgmistele kahele projektile.

SpigotMC

Pluginide arendajate elu lihtsustamiseks oli vajalik API mĂ€ngumaailmaga suhtlemiseks. Just selle ĂŒlesande lahendamisega tegelesid loojad Spigot, vĂ”ttes aluseks Bukkit'i tuuma ja töötades selle ĂŒmber parema usaldusvÀÀrsuse ja jĂ”udluse saavutamiseks. Siiski, Git-repositooriumis projekti oli blokeeritud digitaalajastu autoriĂ”iguse seaduse (DMCA) tĂ”ttu ja sealt ei saa allalaadida lĂ€htekoodi.

Praegu areneb ja kasutatakse aktiivselt SpigotMC. See toetab kĂ”iki Bukkit'i pĂ”hjal loodud pluginaid, kuid ei ole nendega tagurpidi ĂŒhilduv. DMCA Takedown'i keelust möödumiseks leiutati elegantne lahendus nimega BuildTools. See tööriist vabastab vajalikust kompileeritud rakenduse levitamisest ja vĂ”imaldab kasutajatel Spigot'i, CraftBukkit'i ja Bukkit'i kompileerida lĂ€htekoodist. See kĂ”ik muudab DMCA keelu kasutuks.

PaperMC

Tundub, et kĂ”ik on suurepĂ€rane, ja Spigot sai suurepĂ€raseks vĂ”imaluseks. Kuid mĂ”ned entusiastid pidasid seda liiga vĂ€heseks ning nad lĂ”id oma Spigot'i „steroidide all” forki. Selle projekti lehelt peamiseks eeliseks on mĂ€rgitud, et “See on ÀÀrmiselt kiire”. Arenguga kogukond lahendab kiiresti tekkivaid kĂŒsimusi, samas kui laiendatud API vĂ”imaldab luua huvitavaid pluginaid. PaperMC saab kĂ€ivitada ĂŒhe lihtsa kĂ€suga, mis on toodud dokumentatsioonis.

PaperMC-aga on kĂ”ike head, mistĂ”ttu SpigotMC jaoks kirjutatud pluginad töötavad PaperMC-l kergesti, kuid ilma ametliku toeta. Tagurpidi ĂŒhilduvus SpigotMC-ga on samuti olemas. NĂŒĂŒd, kui oleme loetlenud erinevaid serveri loomise vĂ”imalusi, liikume edasi jĂ”udlusprobleemide juurde, mis vĂ”ivad tekkida.

Probleemid ja lahendused

Peamine, mida tuleb mĂ”ista, on see, et kĂ”ik, mis puudutab mĂ€ngumaailma töötlemist, töötatakse vĂ€lja ainult ĂŒhe fĂŒĂŒsilise serveri arvutustuumaga. Seega, kui teil on suurepĂ€rane server, kus on kĂŒmmekond arvutustuumade, kasutatakse ainult ĂŒhte. KĂ”ik ĂŒlejÀÀnud jÀÀvad tegelikult seisma. Selline on rakenduse arhitektuur ja te ei saa sellega midagi teha. Seega tuleks serveri valimisel pöörata tĂ€helepanu mitte tuumade arvule, vaid taktsagedusele. Mida kĂ”rgem see on, seda parem on jĂ”udlus.

Mis osas mÀlu mahust, tuleks lÀhtuda jÀrgmistest nÀitajatest:

  • planeeritav mĂ€ngijate arv;
  • planeeritav maailmade arv serveris;
  • iga maailma suurus.

Tuleb meeles pidada, et Java-rakendus vajab alati mÀlureservi. Kui arvate, et mÀlu tarbimine on 8 gigabaiti, siis tegelikult tuleks varuda 12. Numbrid on tinglikud, kuid pÔhimÔte ei muutu.

Serveri kĂ€ivitamiseks soovitame kasutada artiklis toodud rippmenĂŒĂŒs Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. See "must maagia" aitab serveril Ă”igesti seadistada "prĂŒgikoristaja" ja optimeerib mĂ€lu kasutamist. Ei tasu eraldada rohkem mĂ€lu, kui server tĂ”eliselt vajab tipphetkel mĂ€ngijate vooluga.

Kaardiblokkide genereerimine

„Kas te tĂ”esti arvate, et Kuu eksisteerib ainult siis, kui te seda vaatate?“ (Albert Einstein)

TĂ€iesti uus server. Korra, kui mĂ€ngija esmakordselt edukalt ĂŒhendub, ilmub mĂ€ngujoonis ĂŒldisesse kogunemispunkti (spawni). See on ainus koht, kus mĂ€ngumaailm genereeritakse serveri poolt eelnevalt. Sel hetkel vaatab kliendipool seadistuste poole, kus vĂ”tmeparameetriks on renderdamise kaugus. Seda mÔÔdetakse chunk’ides (kaardi piirkond 16×16 ja kĂ”rgus 256 plokki). Kui palju chunk’e on seal mÀÀratud, just nii palju kĂŒsitakse serverilt.

Serveris hoitakse globaalselt maailma kaarti ja kui mĂ€ngija ilmingupunktis ei ole veel genereeritud plokke, genereerib server need dĂŒnaamiliselt ja salvestab enda juurde. Mitte ainult, et see nĂ”uab suuri arvutusressursse, vaid see suurendab ka pidevalt maailma kaardi suurust. Ühel vanimal anarhilisel serveril 2b2t (2builders2tools) on kaardi suurus juba ĂŒletanud 8 Tb ja maailma piir kulgeb 30 miljoni ploki mĂ€rgi juures. Selle serveriga seondub tuhandeid lugusid ja see vÀÀrib eraldi artiklit artiklite seeriast.

Maailma genereerimine ĂŒhe mĂ€ngija ĂŒmber ei ole probleem. Kuid maailma genereerimine saja mĂ€ngija ĂŒmber vĂ”ib serveri töös pĂ”hjustada vĂ€ikseid viivitusi lĂŒhikese aja jooksul, pĂ€rast mida koormus vĂ€heneb. Kui maailma genereerida kliendi joonistuskaugusel tuhandete mĂ€ngijate ĂŒmber, vĂ”ib see serveri "mahutada" ja eemaldada kĂ”ik mĂ€ngijad ajaĂŒlese katkestamise tĂ”ttu.

Serveri tarkvaras on selline vÀÀrtus nagu TPS (Ticks per Server — taktid sekundis). Tavaline 1 takt kestab 50 ms. (1 reaalmaailma sekund on 20 takti mĂ€ngumaailmas). Kui ĂŒhe takti töötlemise aeg tĂ”useb 60 sekundini, siis serveri rakendus sulgub, eemaldades kĂ”ik mĂ€ngijad.

Lahendus on piirata maailma teatud koordinaatidega ja teostada eelnevat generaatorit. Sellega vĂ€heneb vajadus dĂŒnaamilise genereerimise jĂ€rele mĂ€ngu ajal, ja serveril on piisav lugeda juba olemasolevat kaarti. MĂ”lemad probleemid lahendatakse ĂŒheainsa plugina abil. WorldBorder.

KĂ”ige lihtsam on seada maailma piir ĂŒmmargusena spawni punkti suhtes (kuigi seda saab teha ka mistahes kujul) ĂŒhe kĂ€su abil:

/wb set <раЮоус ĐČ Đ±Đ»ĐŸĐșах> spawn

Kui mĂ€ngutegeleane pĂŒĂŒab piiri ĂŒletada, visatakse ta tagasi mitme ploki vĂ”rra. Kui seda teete lĂŒhikese aja jooksul mitu korda, teleporteeritakse rikkumise teinud isik sunniviisiliselt spawni punkti. Eelnevat maailmapreparatsiooni on veelgi lihtsam teha, kasutades kĂ€sku:

/wb fill

Kuna see tegevus vÔib potentsiaalselt mÔjutada mÀngijaid, kes on serveris, Àrge unustage kinnitada selle teostamist:

/wb confirm

Kokku kulus 5000 ploki (~40 miljardit plokki) raadiuse genereerimiseks umbes 2 tundi IntelŸ XeonŸ Gold 6240 protsessoril. Seega, kui soovite kÀivitada suurema kaardi eelpreparatsiooni, arvestage, et see protsess vÔtab rohkem aega ja serveri TPS (tehingute sekundi jooksul) vÀheneb tÔsiselt. Samuti pidage meeles, et isegi 5000 ploki raadius vajab umbes 2 GB ruumi kÔvakettal.

Kuigi plugina viimase versiooni on vÀlja töötatud Minecrafti versioonile 1.14, on praktika nÀidanud, et see töötab suurepÀraselt ka hilisemates versioonides. TÀielik kÀskude nimekiri koos selgitustega on saadaval plugina foorumis.

Probleemsed plokid

Minecraftis on palju erinevaid plokke. Me tahaksime siiski luua lugejatele tĂ€helepanu plokile, mis on TNT. Nagu nimi ĂŒtleb, on see plokk plahvatusohtlik aine (toimetuse mĂ€rkus — see on mĂ€nguelement virtuaalses maailmas ja sel ei ole seost reaalse lĂ”hkeainega). Selle omadus on see, et aktiveerimise hetkel hakkab sellele mĂ”juma gravitatsioonijĂ”ud. See sunnib serverit arvutama kĂ”iki koordinaate, kui plokk hakkab sel hetkel langema.

Kui TNT-plokke on mitu, kutsub ĂŒhe bloki detoneerimine esile naabrite plokkide detoneerimise ja gravitatsiooni aktiveerimise, paisates need igas suunas laiali. Kogu see ilus mehaanika serveri poolel tundub kui arvukad operatsioonid iga ploki trajektoori arvutamisel ning naabrite plokkidega suhtlemisel. See on ÀÀrmiselt ressursimahukas ĂŒlesanne, mida saab igaĂŒks kergesti kontrollida. Looge ja lĂ”hkeke plokkide TNT kuubik, mille suurus on vĂ€hemalt 30x30x30. Ja kui arvasite, et teil on hea vĂ”imas mĂ€nguarvuti, siis eksisite tugevalt 😉

/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt

Minecrafti serveri optimeerimine
Sarnane „katse“ IntelÂź XeonÂź Gold 6240 serveris pĂ”hjustas tĂ”sise TPS vĂ€henemise ja 80% koormuse CPU-l kĂ”ikide plokkide plahvatuse ajal. Seega, kui keegi mĂ€ngijatest suudab midagi sellist teha, mĂ”jutab jĂ”udlusprobleem kĂ”iki serveris olevaid mĂ€ngijaid.

Veelgi rangem variant — ÄÀrmiselt TĂ€hed. Kui TNT siiski plahvatab jĂ€rjestikku, plahvatavad ÄÀrmiselt TĂ€hed kĂ”ik koos, mis teoorias vĂ”ib serveri rakenduse tegevuse tĂ€ielikult peatada.

Seda stsenaariumi saab vÀltida, kui keelata nende plokkide kasutamine mÀngumaailmas tÀielikult. NÀiteks plugina kaudu WorldGuard. Pange tÀhele, et see plugin ei tööta iseseisvalt ilma teise plugina, WorldEditabi. Seega installige esmalt WorldEdit ja seejÀrel WorldGuard.

KokkuvÔte

MĂ€nguserveri Ă”ige juhtimine ei ole lihtne ĂŒlesanne. IgapĂ€evaselt vĂ”ivad tekkida raskused ja jĂ”udluse langus, eriti kui arvesse ei vĂ”eta mĂ€ngu enda mehaanikat. KĂ”iki olukordi ette nĂ€ha ei saa, kuna mĂ€ngijad vĂ”ivad olla vĂ€ga leidlikud, pĂŒĂŒdes sundida serverit tegema asju, milleks see algselt ei olnud mĂ”eldud. Ainult mĂ”istlik tasakaal riskide ja kehtestatud piirangute vahel vĂ”imaldab serveril töötada pidevalt ja mitte vĂ€hendada oma jĂ”udlust kriitilistele tasemetele.

Karantiini ajal igatsesid mĂ”ned meie töötajad oma lemmikute kontorite jĂ€rele ja otsustasid need Minecraftis taasluua. Ka teil on vĂ”imalus meile kĂŒlla tulla, riskimata oma tervise ja raiskamata aega teel.

Sellega seoses kutsume kĂ”iki huvilisi meie serverisse minecraft.selectel.ru (kliendi versioon 1.15.2), kus on taasloodud andmekeskused Lillakas-1 ja Lillakas-2. Ära unusta nĂ”ustuda tĂ€iendavate ressursside allalaadimisega, need on vajalikud mĂ”nede asukohtade korrektseks kuvamiseks.

Teid ootavad seiklused, sooduskoodid, "munad" ja meeldiv suhtlemine.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster