Á blogginu okkar höfum við nú þegar
Á 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
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
Þ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
Það er ekki erfitt að setja upp Bukkit; samsvarandi leiðbeiningar eru á auðlindinni
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.
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“. Á
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
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
Þ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
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
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
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
Á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