Fínstilling á Minecraft netþjóni

Fínstilling á Minecraft netþjóni
Á blogginu okkar höfum við nú þegar sagt, hvernig á að búa til þinn eigin Minecraft netþjón, en 5 ár eru liðin síðan þá og mikið hefur breyst. Við erum að deila með þér núverandi leiðum til að búa til og fínstilla miðlarahluta svo vinsæls leiks.

Á 9 ára sögu sinni (talið frá útgáfudegi) hefur Minecraft unnið sér inn ótrúlegan fjölda aðdáenda og hatursmanna bæði meðal venjulegra leikmanna og nörda. Hin einfalda hugmynd um heim úr kubbum hefur þróast úr einföldu afþreyingarformi í alhliða miðil til að miðla og búa til ýmsa hluti úr hinum raunverulega heimi.

Í viðbót við byggingu, leikurinn hefur getu til að búa til rökfræði, sem gerir þér kleift að innleiða fullgild reiknirit inni í Minecraft. YouTube er fullt af mjög áhrifamiklum myndböndum þar sem fólk, sem hefur lagt mikið á sig og eytt miklum tíma, hefur búið til afrit af hinu eða þessu raftæki eða smíðað ítarlegt eintak núverandi и skáldskapur byggingarlistarmannvirki. Allt takmarkast aðeins af ímyndunarafli leikmannsins og möguleikum leikjaheimsins.


En við skulum ekki tala frekar um hvað leikmennirnir búa til nákvæmlega, en við skulum skoða miðlarahluta forritsins og draga fram vandamálin (stundum mjög flókin) sem geta komið upp við notkun undir álagi. Við skulum gera fyrirvara strax um að við munum aðeins tala um Java útgáfuna.

Tegundir netþjóna

Einfaldasti kosturinn er netþjónn sem er innbyggður í leikjaforritið. Við sköpuðum heim, ýttum á einn takka og þjónninn varð aðgengilegur í gegnum staðarnetið. Þessi valkostur þolir ekki alvarlegt álag og þess vegna munum við ekki einu sinni íhuga það.

Vanilla

Mojang Studios dreifir miðlarahluta leiksins sem Java forriti ókeypis á opinberu heimasíðunni. Þetta gerir þér kleift að búa til þína eigin sérstakan netþjón og persónulegur heimur, sem gerir það aðgengilegt fyrir tengingu hvar sem er á jörðinni. Fyrir þá sem eru að gera þetta í fyrsta skipti er frábært kennsluefni, fáanlegt á samsvarandi gaming Wiki.

Þessi nálgun hefur einn alvarlegan galla, nefnilega skortur á út-af-the-kassa getu til að tengja viðbætur sem auka virkni netþjónsins og gera ekki aðeins kleift að gera marga ferla sjálfvirkan, heldur einnig til að hámarka afköst. Að auki hefur opinberi þjónninn nokkuð mikla vinnsluminni fyrir hvern tengdan spilara.

bukkit

Miðlaraforrit búið til af áhugamönnum byggt á Vanilla útgáfunni bukkit stækkaði verulega möguleika leiksins með því að styðja viðbætur og mods (breytingar). Það gerði ekki aðeins kleift að bæta nýjum kubbum við spilunina, heldur einnig að framkvæma ýmsar aðgerðir sem voru óaðgengilegar fyrir vanilluhugbúnað. Athyglisvert er að þetta forrit þurfti verulega minna minni.

Það er ekki erfitt að setja upp Bukkit; samsvarandi leiðbeiningar eru á auðlindinni GamePedia. En þetta meikar ekkert sens, þar sem Bukkit teymið hefur leyst upp síðan 2014, verkefnahönnuðir hafa orðið starfsmenn Mojang Studios, og geymsla yfirgefinn. Þannig er Bukkit í raun dauður og það er skynsamlegt að huga að næstu tveimur verkefnum.

SpigotMC

Til að auðvelda forritara viðbóta lífið var þörf fyrir API til að hafa samskipti við leikjaheiminn. Þetta er einmitt vandamálið sem skapararnir leystu. Spigot, taka Bukkit kjarnann og endurvinna hann til að ná betri áreiðanleika og frammistöðu. Engu að síður, Git geymsla verkefninu var lokað vegna Digital Millennium Copyright Act (DMCA), og það er ómögulegt að hlaða niður frumkóðann þaðan.

Eins og er er SpigotMC virkur þróað og notað. Það styður allar viðbætur sem búnar eru til fyrir Bukkit, en er ekki afturábak samhæft við það. Til að komast í kringum DMCA Takedown var fundið upp glæsileg aðferð sem kallast BuildTools. Þetta tól útilokar þörfina á að dreifa samsettu forriti og gerir notendum kleift að setja saman Spigot, CraftBukkit og Bukkit úr frumkóða. Allt þetta gerir DMCA bannið gagnslaust.

PaperMC

Allt virtist flott og Spigot varð frábær kostur. En þetta var ekki nóg fyrir suma áhugamenn, og þeir bjuggu til sinn eigin gaffal af Spigot „á sterum“. Á verkefnasíðu Helsti kosturinn er sá að "það er asnalegt hratt". Þróað samfélag gerir þér kleift að leysa vandamál sem koma upp á fljótlegan hátt og útvíkkað API gerir þér kleift að búa til áhugaverðar viðbætur. Þú getur ræst PaperMC með einni einfaldri skipun, gefin inn skjöl.

PaperMC hefur framúrskarandi eindrægni, svo viðbætur sem eru skrifaðar fyrir SpigotMC geta auðveldlega virkað á PaperMC, en án opinbers stuðnings. Afturábak samhæfni við SpigotMC er einnig til staðar. Nú þegar við höfum skráð hina ýmsu valkosti til að búa til netþjón, skulum við halda áfram að afköstum sem kunna að koma upp.

Vandamál og lausnir

Aðalatriðið sem þú þarft að skilja er að allt sem tengist vinnslu leikjaheimsins verður aðeins unnið á einum tölvukjarna líkamlega netþjónsins. Svo ef þú ert skyndilega með frábæran netþjón með tugi tölvukjarna, þá verður aðeins einn hlaðinn. Allir aðrir verða nánast aðgerðalausir. Þetta er arkitektúr forritsins og það er ekkert sem þú getur gert við því. Svo þegar þú velur netþjón, ættir þú ekki að borga eftirtekt til fjölda kjarna, heldur klukkutíðni. Því hærra sem það er, því betri verður árangurinn.

Varðandi útgáfu vinnsluminni, ættum við að halda áfram frá eftirfarandi vísbendingum:

  • áætlaður fjöldi leikmanna;
  • fyrirhugaður fjöldi heima á þjóninum;
  • stærð hvers heims.

Það ætti að hafa í huga að Java forrit þarf alltaf varasjóð af vinnsluminni. Ef þú býst við minnisnotkun upp á 8 gígabæta, þá þarftu í raun og veru að hafa 12. Tölurnar eru afstæðar, en kjarninn breytist ekki.

Til að ræsa miðlarahlutann mælum við með því að nota fánana sem tilgreind eru í greininni Stilla JVM – G1GC sorphirðufánana fyrir Minecraft. Þessi „svarti galdur“ gerir þjóninum kleift að stilla „sorphirðu“ rétt og hámarka notkun vinnsluminni. Þú ættir ekki að úthluta meira minni en þjónninn eyðir í raun þegar innstreymi leikmanna er sem mest.

Búa til blokkakort

„Heldurðu virkilega að tunglið sé aðeins til þegar þú horfir á það? (Albert Einstein)

Alveg nýr netþjónn. Um leið og spilarinn hefur tengst í fyrsta skipti birtist leikpersónan á almennum söfnunarstað (spawn). Þetta er eini staðurinn þar sem leikjaheimurinn er formyndaður af þjóninum. Á sama augnabliki lítur viðskiptavinur hlutinn á stillingarnar og lykilbreytan er teiknilengdin. Það er mælt í klumpur (kortasvæðið er 16×16 og 256 blokkir á hæð).Hve margir bitar eru tilgreindir þar er nákvæmlega hversu margir verða beðnir um frá þjóninum.

Miðlarinn geymir alþjóðlegt kort af heiminum og ef það eru engar myndaðar blokkir í því þegar leikpersónan birtist, þá býr þjónninn til þær á kraftmikinn hátt og geymir þær. Þetta krefst ekki aðeins stórra tölvuauðlinda heldur eykur það líka stöðugt stærð heimskortsins. Á einum af elstu anarkista netþjónum 2b2t (2builders2tools) Stærð kortsins er þegar komin yfir 8 Tb og landamæri heimsins eru um 30 milljónir blokka. Það eru þúsundir sagna tengdar þessum netþjóni og hann á skilið sína eigin grein í seríunni.

Það er ekki vandamál að búa til heim í kringum einn leikmann. Að búa til heim í kringum hundruð leikmanna mun valda minniháttar hægagangi á netþjóni í stuttan tíma, eftir það mun álagið minnka. Að búa til heim með viðskiptafjarlægð í kringum þúsund spilara er nú þegar fær um að „sleppa“ þjóninum og henda öllum viðskiptavinum út úr honum vegna tímaleysis.

Í miðlarahugbúnaðinum er gildi eins og TPS (Ticks per Server - ticks á sekúndu). Venjulega er 1 klukkulota jafnt og 50 ms. (1 sekúnda af raunheiminum jafngildir 20 tikkjum leikjaheimsins). Ef vinnsla á einu haki eykst í 60 sekúndur, verður netþjónaforritinu lokað, sem kastar öllum spilurum út.

Lausnin er að takmarka heiminn við ákveðin hnit og framkvæma bráðabirgðaframleiðslu blokkar. Þannig fjarlægjum við þörfina fyrir kraftmikla kynslóð meðan á leiknum stendur og þjónninn mun aðeins þurfa að lesa núverandi kort. Hægt er að leysa bæði vandamálin með einni viðbót Heimsmörk.

Auðveldasta leiðin er að setja heimsmörkin í formi hrings miðað við hrognpunktinn (þó að þú getir gert hann af hvaða lögun sem er) með einni skipun:

/wb set <радиус в блоках> spawn

Ef spilarapersónan reynir að fara yfir landamærin verður honum ýtt aftur nokkrum kubbum. Ef þetta er gert nokkrum sinnum innan takmarkaðs tíma, verður brotamanni sendur með valdi á spawn-staðinn. Forkynslóð heimsins er enn einfaldari, með skipuninni:

/wb fill

Þar sem þessi aðgerð gæti hugsanlega haft áhrif á leikmenn á þjóninum, vertu viss um að staðfesta:

/wb confirm

Alls tók það um það bil 5000 klukkustundir að búa til heim með radíus upp á 40 blokkir (~2 milljarðar blokkir) á Intel® Xeon® Gold 6240 örgjörva. Þess vegna, ef þú vilt búa til stærra kort fyrirfram, skaltu hafa í huga að þetta ferli mun taka ágætis tíma og TPS þjónsins mun minnka verulega. Mundu líka að jafnvel radíus upp á 5000 blokkir mun þurfa um það bil 2 GB af plássi.

Þrátt fyrir að nýjasta útgáfan af viðbótinni hafi verið þróuð fyrir Minecraft útgáfu 1.14, kom í ljós að það virkar frábærlega í síðari útgáfum. Heildarlisti yfir skipanir með útskýringum er fáanlegur á plugin spjallinu.

Vandamálsblokkir

Það er mikið úrval af kubbum í Minecraft. Hins vegar viljum við vekja athygli lesenda á slíkri blokk sem TNT. Eins og nafnið gefur til kynna er þessi blokk sprengiefni (Athugasemd ritstjóra - þetta er leikhlutur sýndarheimsins og þetta atriði hefur ekkert með alvöru sprengiefni). Sérkenni þess er slík að á örvunarstundu byrjar þyngdarkrafturinn að verka á hann. Þetta neyðir þjóninn til að reikna út öll hnit ef á þessu augnabliki byrjar kubburinn að falla.

Ef það eru nokkrir TNT blokkir, veldur sprenging eins blokkar sprengingu og virkjun þyngdaraflsins í nálægum blokkum og dreifir þeim í allar áttir. Öll þessi fallega vélfræði á netþjóninum lítur út fyrir að vera margar aðgerðir til að reikna út feril hverrar blokkar, sem og samspil við nágrannablokkir. Verkefnið er afar auðlindafrekt sem hver sem er getur auðveldlega athugað. Búðu til og sprengdu tening úr TNT kubbum sem er að minnsta kosti 30x30x30 að stærð. Og ef þú hélst að þú ættir góða og öfluga leikjatölvu þá skjátlaðist þér mjög 😉

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

Fínstilling á Minecraft netþjóni
Svipuð „tilraun“ á netþjóni með Intel® Xeon® Gold 6240 leiddi til alvarlegs TPS-falls og 80% örgjörvaálags á öllum sprengingartímanum. Þess vegna, ef einhver leikmaður er fær um að gera þetta, þá mun frammistöðuvandamálið hafa áhrif á alla leikmenn á þjóninum.

Enn erfiðari kostur - Brúnkristallar. Ef TNT springur engu að síður í röð, þá springa Edge Crystals allir á sama tíma, sem í orði getur algjörlega stöðvað rekstur netþjónaforritsins.

Aðeins er hægt að forðast þessa atburðarás með því að banna algjörlega notkun þessara kubba í leikjaheiminum. Til dæmis með því að nota viðbótina Heimsvörður. Vinsamlegast athugaðu að þessi viðbót ein og sér virkar ekki án annarrar viðbót WorldEdit. Svo settu upp WorldEdit fyrst og síðan WorldGuard.

Ályktun

Það er ekki auðvelt verkefni að stjórna leikjaþjóni á réttan hátt. Erfiðleikar og minnkuð frammistaða munu bíða þín við hvert beygju, sérstaklega ef þú tekur ekki tillit til leikkerfisins sjálfs. Það er ómögulegt að sjá allt fyrir, því leikmenn geta stundum verið mjög skapandi í að reyna að þvinga þjóninn til að gera eitthvað sem það var ekki ætlað. Aðeins sanngjarnt jafnvægi á milli áhættu og settra takmarkana mun gera þjóninum kleift að starfa stöðugt og draga ekki afköst hans niður í mikilvæg gildi.

Í sóttkví misstu sumir starfsmenn okkar eftirlætisskrifstofanna sinna og ákváðu að endurskapa þær inni í Minecraft. Þú hefur líka tækifæri til að heimsækja okkur án þess að hætta heilsu þinni eða eyða tíma á veginum.

Til að gera þetta bjóðum við öllum á netþjóninn okkar minecraft.selectel.ru (viðskiptavinaútgáfa 1.15.2), þar sem gagnaverin Tsvetochnaya-1 og Tsvetochnaya-2 voru endurgerð. Ekki gleyma að samþykkja að hlaða niður viðbótarauðlindum, þau eru nauðsynleg fyrir rétta birtingu sumra staða.

Verkefni, kynningarkóðar, páskaegg og skemmtileg samskipti bíða þín.

Heimild: www.habr.com

Bæta við athugasemd