Gure blogean dagoeneko badugu
Bere 9 urteko historian (argitaratze datatik zenbatzen hasita), Minecraft-ek zale eta gorroto ugari irabazi ditu jokalari arrunten eta geeken artean. Blokeez osatutako munduaren kontzeptu sinplea entretenimendu forma soil batetik mundu errealeko hainbat objektu komunikatzeko eta sortzeko bitarteko unibertsal izatera igaro da.
Eraikuntzaz gain, jokoak sortzeko gaitasuna du
Baina ez dezagun gehiago hitz egin jokalariek zer sortzen duten zehazki, baina ikus ditzagun aplikazioaren zerbitzariaren zatia eta nabarmendu ditzagun kargapean funtzionatzerakoan sor daitezkeen arazoak (batzuetan oso konplexuak). Egin dezagun erreserba berehala, Java edizioari buruz bakarrik hitz egingo dugulako.
Zerbitzari motak
Aukerarik errazena jokoaren bezeroan integratutako zerbitzari bat da. Mundu bat sortu genuen, botoi bat sakatu eta zerbitzaria sare lokalaren bidez eskuragarri bihurtu zen. Aukera honek ezin du karga larririk jasan, eta, beraz, ez dugu kontuan hartuko.
Vanilla
Mojang Studios jokoaren zerbitzariaren zatia Java aplikazio gisa banatzen ari da doan
У этого подхода есть один серьезный недостаток, а именно — отсутствие возможностей «из коробки» подключать плагины, расширяющие функционал сервера и позволяющие не только автоматизировать многие процессы, но и оптимизировать производительность. Кроме того, у официального сервера достаточно большое потребление оперативной памяти на каждого подключенного игрока.
bukkit
Vanilla bertsioan oinarritutako zaleek sortutako zerbitzari-aplikazioa
Bukkit instalatzea ez da zaila; dagozkion argibideak baliabidean daude
SpigotMC
Pluginen garatzaileei bizitza errazteko, jokoen munduarekin elkarreragiteko API baten beharra zegoen. Hau da, hain zuzen, sortzaileek konpondu zuten arazoa.
Gaur egun, SpigotMC aktiboki garatu eta erabiltzen da. Bukkit-erako sortutako plugin guztiak onartzen ditu, baina ez da horrekin bateragarria. DMCA Takedown-a inguratzeko, BuildTools izeneko metodo dotore bat asmatu zen. Tresna honek konpilatutako aplikazio bat banatzeko beharra ezabatzen du eta erabiltzaileei Spigot, CraftBukkit eta Bukkit iturburu-kodetik konpilatzeko aukera ematen die. Horrek guztiak alferrikakoa egiten du DMCA debekua.
PaperMC
Dena polita zirudien, eta Spigot aukera bikaina bihurtu zen. Baina hori ez zen nahikoa zaletu batzuentzat, eta Spigot-en sardexka propioa sortu zuten "esteroideetan". On
PaperMC-k bateragarritasun bikaina du, beraz, SpigotMC-rako idatzitako pluginek erraz funtziona dezakete PaperMC-en, baina laguntza ofizialik gabe. SpigotMC-rekin atzerako bateragarritasuna ere badago. Zerbitzari bat sortzeko aukera ezberdinak zerrendatu ditugunez, joan gaitezen sor daitezkeen errendimendu-arazoetara.
Arazoak eta irtenbideak
Ulertu behar duzun gauza nagusia da jokoaren mundua prozesatzearekin zerikusia duen guztia zerbitzari fisikoko informatika-nukleo batean bakarrik prozesatuko dela. Beraz, bat-batean dozena bat konputazio nukleo dituen zerbitzari bikaina baduzu, bakarra kargatuko da. Beste guztiak ia alferrik egongo dira. Hau da aplikazioaren arkitektura, eta ezin duzu ezer egin. Beraz, zerbitzari bat aukeratzerakoan, arreta jarri behar duzu ez nukleo kopuruari, baizik eta erlojuaren maiztasunari. Zenbat eta altuagoa izan, orduan eta errendimendua hobea izango da.
RAM gaitasunaren gaiari dagokionez, adierazle hauetatik abiatu beharko genuke:
- aurreikusitako jokalari kopurua;
- zerbitzarian aurreikusitako mundu kopurua;
- mundu bakoitzaren tamaina.
Gogoratu behar da Java aplikazio batek beti behar duela RAM erreserba bat. 8 gigabyteko memoria-kontsumoa espero baduzu, 12 izan behar dituzu. Zenbakiak erlatiboak dira, baina funtsa ez da aldatzen.
Zerbitzariaren zatia hasteko, artikuluan zehaztutako banderak erabiltzea gomendatzen dugu
Blokeen mapa sortzea
"Benetan uste al duzu ilargia begiratzen duzunean bakarrik existitzen dela?" (Albert Einstein)
Zerbitzari guztiz berria. Jokalariak lehen aldiz konektatu bezain laster, jokoaren pertsonaia biltzeko puntu orokorrean (sorkuntza) agertzen da. Hau da zerbitzariak jokoaren mundua aurrez sortzen duen leku bakarra. Momentu berean, bezeroaren zatiak ezarpenei begiratzen die eta funtsezko parametroa marrazketa distantzia da. Zatitan neurtzen da (maparen eremua 16×16 eta 256 blokeko altuera du).Zenbat zati adierazita dago zenbat eskatuko zaizkion zerbitzariari.
Zerbitzariak munduko mapa global bat gordetzen du, eta jokoaren pertsonaia agertzen den unean oraindik sortutako blokerik ez badago, zerbitzariak dinamikoki sortzen ditu eta gordetzen ditu. Honek baliabide informatiko handiak behar izateaz gain, munduko maparen tamaina etengabe handitzen du. Zerbitzari anarkista zaharrenetako batean
Jokalari baten inguruan mundu bat sortzea ez da arazoa. Ehunka jokalariren inguruan mundu bat sortzeak zerbitzariaren moteltze txikiak eragingo ditu denbora laburrean, eta ondoren karga gutxituko da. Mila jokalari inguru bezeroak errendatzeko distantzian mundu bat sortzea dagoeneko gai da zerbitzaria "jaregin" eta bezero guztiak bertatik botatzeko denbora-muga baten ondorioz.
Zerbitzariaren softwarean, esaterako, balio bat dago TPS (Zerbitzari bakoitzeko ticks - ticks segundoko). Normalean, 1 erloju-ziklo 50 ms-ren berdina da. (Mundu errealeko segundo 1 jokoaren munduko 20 tickren berdina da). Tick baten prozesamendua 60 segundora igotzen bada, zerbitzariaren aplikazioa itxi egingo da, jokalari guztiak botaz.
Konponbidea mundua koordenatu batzuetara mugatzea eta aurretiazko blokeen sorrera egitea da. Horrela, jokoan zehar belaunaldi dinamikoaren beharra kentzen dugu, eta zerbitzariak lehendik dagoen mapa bat bakarrik irakurri beharko du. Arazo biak plugin bakar batekin konpondu daitezke
Modurik errazena munduaren muga zirkulu baten forman ezartzea da sortze puntuarekiko (edozein forma egin dezakezun arren) komando batekin:
/wb set <радиус в блоках> spawn
Jokalari pertsonaia muga zeharkatzen saiatzen bada, hainbat bloke atzera botako du. Denbora mugatu batean hainbat aldiz egiten bada, delitugilea indarrez teleportatuko da sorkuntza puntura. Munduaren aurreko belaunaldia are sinpleago egiten da, komandoarekin:
/wb fill
Ekintza honek zerbitzariko jokalariei eragin diezaiekeenez, ziurtatu baieztatu:
/wb confirm
Guztira, gutxi gorabehera 5000 ordu behar izan zituen Intel® Xeon® Gold 40 prozesadore batean 2 blokeko (~6240 milioi bloke) erradioa duen mundu bat sortzeko. Horregatik, mapa handiagoa aldez aurretik sortu nahi baduzu, kontuan izan prozesu honek denbora dezente hartuko du, eta zerbitzari TPS larriki murriztuko da. Gainera, gogoratu 5000 blokeko erradioak ere 2 GB gutxi gorabehera diskoko espazioa beharko duela.
Pluginaren azken bertsioa Minecraft 1.14 bertsiorako garatu zen arren, esperimentalki ondoko bertsioetan ondo funtzionatzen duela ikusi zen. Komandoen zerrenda osoa azalpenekin dago eskuragarri
Arazo blokeak
Minecraft-en bloke ugari daude. Hala ere, irakurleen arreta erakarri nahi dugu horrelako bloke bati buruz TNT. Izenak dioen bezala, bloke hau lehergailua da (editorearen oharra - mundu birtualeko joko-elementua da eta elementu honek ez du ezer benetako lehergailuekin). Bere berezitasuna aktibatzeko unean grabitatearen indarra eragiten hasten da. Horrek zerbitzaria koordenatu guztiak kalkulatzera behartzen du une honetan blokea erortzen hasten bada.
Hainbat TNT bloke badaude, bloke baten detonazioak detonazioa eta grabitatearen aktibazioa eragiten du ondoko blokeetan, norabide guztietan barreiatzen. Zerbitzariaren aldean mekanika eder honek guztiak bloke bakoitzaren ibilbidea kalkulatzeko eragiketa asko dirudi, baita ondoko blokeekin elkarrekintza ere. Zereginak baliabide asko ditu, edonork erraz egiaztatu dezakeena. Sortu eta detonatu kubo bat gutxienez 30x30x30 tamaina duen TNT blokeetatik. Eta joko-ordenagailu on eta indartsu bat duzula uste bazenuen, oso oker zaude 😉
/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt
Intel® Xeon® Gold 6240-rekin zerbitzari batean antzeko "esperimentu" batek TPS jaitsiera larria ekarri zuen eta %80ko CPU karga ekarri zuen blokeen detonazio-denbora osoan zehar. Hori dela eta, edozein jokalari hau egiteko gai bada, errendimendu-arazoak zerbitzariko jokalari guztiei eragingo die.
Aukera are gogorragoa - Ertz kristalak. TNT, hala ere, sekuentzialki lehertzen bada, Edge Kristalak aldi berean lehertzen dira, eta horrek zerbitzariaren aplikazioaren funtzionamendua erabat geldi dezake teorian.
Eszenatoki hau jokoaren munduan bloke hauen erabilera erabat debekatuta soilik saihestu daiteke. Adibidez, plugina erabiliz
Ondorioa
Joko zerbitzari bat behar bezala kudeatzea ez da lan erraza. Zailtasunak eta errendimendu gutxitzea itxarongo zaituzte une bakoitzean, batez ere jokatzeko mekanika bera kontuan hartzen ez baduzu. Ezinezkoa da dena aurreikustea, jokalariak batzuetan oso sortzaileak izan daitezkeelako zerbitzaria behartu nahi izan ez zuen zerbait egitera. Arriskuen eta ezarritako murrizketen arteko oreka zentzuzko batek soilik ahalbidetuko du zerbitzariak etengabe funtzionatzea eta ez du bere errendimendua balio kritikoetara murriztea.
Berrogeialdian, gure langile batzuek euren bulego gogokoenak galdu zituzten eta Minecraft barruan birsortzea erabaki zuten. Zure osasuna arriskuan jarri gabe edo errepidean denbora galdu gabe bisitatzera etortzeko aukera ere baduzu.
Horretarako, denak gonbidatzen ditugu gure zerbitzarira minecraft.selectel.ru (1.15.2 bezeroaren bertsioa), non Tsvetochnaya-1 eta Tsvetochnaya-2 datu-zentroak birsortu ziren. Ez ahaztu baliabide gehigarriak deskargatzea onartzea, beharrezkoak dira kokapen batzuk zuzen bistaratzeko.
Bilaketak, promozio kodeak, Pazko arrautzak eta komunikazio atsegina zain dituzu.
Iturria: www.habr.com