Pag-optimize sa Minecraft server

Pag-optimize sa Minecraft server
Sa among blog naa na giingnan, unsaon paghimo sa imong kaugalingong Minecraft server, apan 5 ka tuig na ang milabay sukad niadto ug daghan ang nausab. Nagpaambit kami kanimo karon nga mga paagi sa paghimo ug pag-optimize sa bahin sa server sa usa ka sikat nga dula.

Sulod sa 9 ka tuig nga kasaysayan niini (nag-ihap gikan sa petsa sa pagpagawas), ang Minecraft nakakuha og talagsaon nga gidaghanon sa mga fans ug mga nagdumot sa mga ordinaryo nga mga magdudula ug mga geeks. Ang yano nga konsepto sa usa ka kalibutan nga hinimo sa mga bloke milambo gikan sa usa ka yano nga porma sa kalingawan ngadto sa usa ka unibersal nga medium alang sa pagpakigsulti ug paghimo sa lainlaing mga butang gikan sa tinuud nga kalibutan.

Dugang sa pagtukod, ang dula adunay abilidad sa paghimo lohika, nga nagtugot kanimo sa pagpatuman sa hingpit nga mga algorithm sulod sa Minecraft. Ang YouTube puno sa mga impresibo kaayo nga mga video diin ang mga tawo, nga nagbutang sa usa ka dako nga kantidad sa paningkamot ug paggahin og daghang panahon, nakahimo og usa ka kopya niini o nianang elektronik nga device o naghimo og usa ka detalyado nga kopya. anaa и fictional mga istruktura sa arkitektura. Ang tanan limitado lamang sa imahinasyon sa gamer ug sa mga posibilidad sa gaming universe.


Apan dili na kita maghisgot og dugang mahitungod sa unsa gayud ang gibuhat sa mga magdudula, apan atong tan-awon ang bahin sa server sa aplikasyon ug ipasiugda ang mga problema (usahay komplikado kaayo) nga mahimong motumaw sa panahon sa operasyon ubos sa pagkarga. Maghimo dayon kita og reserbasyon nga maghisgot lang kita bahin sa Java Edition.

Mga tipo sa mga server

Ang pinakasimple nga kapilian mao ang usa ka server nga gitukod sa kliyente sa dula. Naghimo kami og usa ka kalibutan, gipindot ang usa ka buton, ug ang server nahimong accessible sa lokal nga network. Kini nga kapilian dili makasugakod sa bisan unsang seryoso nga karga, ug busa dili gani nato kini tagdon.

vanilla

Ang Mojang Studios nag-apod-apod sa server nga bahin sa dula isip usa ka aplikasyon sa Java nga libre sa opisyal nga website. Kini nagtugot kanimo sa paghimo sa imong kaugalingon dedikado nga server ug personal nga kalibutan, nga naghimo niini nga accessible alang sa koneksyon gikan sa bisan asa sa planeta. Alang sa mga nagbuhat niini sa unang higayon, adunay usa ka maayo tutorial, anaa sa katugbang nga gaming nga Wiki.

Kini nga pamaagi adunay usa ka seryoso nga disbentaha, nga mao ang kakulang sa out-of-the-box nga kapabilidad sa pagkonektar sa mga plugins nga nagpalapad sa functionality sa server ug nagtugot dili lamang sa pag-automate sa daghang mga proseso, apan usab sa pag-optimize sa performance. Dugang pa, ang opisyal nga server adunay medyo dako nga konsumo sa RAM alang sa matag konektado nga magdudula.

bukkit

Usa ka aplikasyon sa server nga gihimo sa mga mahiligon base sa bersyon sa Vanilla bukkit kamahinungdanon nga gipalapdan ang mga kapabilidad sa dula pinaagi sa pagsuporta sa mga plugins ug mods (mga pagbag-o). Gitugotan kini dili lamang sa pagdugang sa bag-ong mga bloke sa dula, apan usab sa paghimo sa lainlaing mga manipulasyon nga dili ma-access sa vanilla software. Makapainteres, kini nga aplikasyon nanginahanglan labi ka gamay nga memorya.

Ang pag-instalar sa Bukkit dili lisud; ang katugbang nga mga panudlo naa sa kapanguhaan GamePedia. Apan kini wala'y kahulogan, sukad sa 2014 ang Bukkit team nabungkag, ang mga developers sa proyekto nahimong mga empleyado sa Mojang Studios, ug tipiganan gibiyaan. Busa, epektibong patay ang Bukkit, ug makatarunganon nga hatagan ug pagtagad ang sunod nga duha ka proyekto.

SpigotMC

Aron mapadali ang kinabuhi alang sa mga nag-develop sa plugin, kinahanglan ang usa ka API aron makig-uban sa kalibutan sa dula. Mao gyud kini ang problema nga nasulbad sa mga magbubuhat. spigot, pagkuha sa Bukkit core ug pagtrabaho pag-usab niini aron makab-ot ang mas maayo nga kasaligan ug performance. Bisan pa niana, Git repository ang proyekto gibabagan tungod sa Digital Millennium Copyright Act (DMCA), ug imposible nga ma-download ang source code gikan didto.

Sa pagkakaron, ang SpigotMC aktibo nga naugmad ug gigamit. Gisuportahan niini ang tanan nga mga plugin nga gihimo para sa Bukkit, apan dili paatras nga katugma niini. Aron makalibot sa DMCA Takedown, usa ka elegante nga pamaagi nga gitawag og BuildTools ang naimbento. Kini nga himan nagwagtang sa panginahanglan sa pag-apod-apod sa usa ka hinipos nga aplikasyon ug nagtugot sa mga tiggamit sa pag-compile sa Spigot, CraftBukkit ug Bukkit gikan sa source code. Kining tanan naghimo sa pagdili sa DMCA nga walay kapuslanan.

PapelMC

Ang tanan ingon og cool, ug ang Spigot nahimong usa ka maayong kapilian. Apan kini dili igo alang sa pipila ka mga mahiligon, ug sila naghimo sa ilang kaugalingong tinidor sa Spigot "sa mga steroid." Sa panid sa proyekto ang yawe nga bentaha mao nga "Kini hungog paspas". Naugmad komunidad nagtugot kanimo nga dali nga masulbad ang mga nag-uswag nga mga isyu, ug ang gipalawig nga API nagtugot kanimo sa paghimo og makapaikag nga mga plugin. Mahimo nimong ilunsad ang PaperMC sa usa ka yano nga mando, gihatag sa dokumentasyon.

Ang PaperMC adunay maayo kaayo nga pagkaangay, mao nga ang mga plugin nga gisulat alang sa SpigotMC dali nga magamit sa PaperMC, apan wala’y opisyal nga suporta. Anaa usab ang backward compatibility sa SpigotMC. Karon nga nalista na namo ang lain-laing mga opsyon sa paghimo og server, mopadayon ta sa mga isyu sa performance nga mahimong motumaw.

Mga Problema ug Solusyon

Ang nag-unang butang nga kinahanglan nimong masabtan mao nga ang tanan nga may kalabutan sa pagproseso sa kalibutan sa dula maproseso lamang sa usa ka computing core sa pisikal nga server. Mao nga kung sa kalit ikaw adunay usa ka maayo kaayo nga server nga adunay usa ka dosena nga mga core sa computing, nan usa ra ang ma-load. Ang tanan nga uban mahimong halos walay pulos. Kini ang arkitektura sa aplikasyon, ug wala ka’y mahimo bahin niini. Mao nga kung nagpili usa ka server, kinahanglan nimo nga hatagan pagtagad dili ang gidaghanon sa mga cores, apan ang frequency sa orasan. Kon mas taas kini, mas maayo ang performance.

Mahitungod sa isyu sa kapasidad sa RAM, kita kinahanglan nga mopadayon gikan sa mosunod nga mga indicators:

  • giplano nga gidaghanon sa mga magdudula;
  • giplano nga gidaghanon sa mga kalibutan sa server;
  • ang gidak-on sa matag kalibutan.

Kinahanglan nga hinumdoman nga ang usa ka aplikasyon sa Java kanunay nanginahanglan usa ka reserba sa RAM. Kung nagpaabut ka sa usa ka konsumo sa panumduman nga 8 gigabytes, nan kinahanglan nimo nga adunay 12. Ang mga numero relatibo, apan ang esensya dili mausab.

Aron masugdan ang bahin sa server, among girekomendar ang paggamit sa mga bandera nga gipiho sa artikulo Pag-tune sa JVM - G1GC Garbage Collector Flags para sa Minecraft. Kini nga "itom nga salamangka" nagtugot sa server sa husto nga pag-configure sa "tigkolekta sa basura" ug pag-optimize sa paggamit sa RAM. Kinahanglan nga dili ka maggahin ug dugang nga memorya kay sa aktuwal nga gigamit sa server sa panahon sa peak nga pagdagsa sa mga magdudula.

Paghimo og block map

"Nagtuo ka ba nga ang bulan naglungtad lamang kung imong tan-awon kini?" (Albert Einstein)

Bug-os nga bag-ong server. Sa diha nga ang magdudula malampuson nga nagkonektar sa unang higayon, ang karakter sa dula makita sa kinatibuk-ang punto sa pagpundok (spawn). Kini ra ang lugar diin ang kalibutan sa dula gi-pre-generate sa server. Sa parehas nga higayon, ang bahin sa kliyente nagtan-aw sa mga setting, ug ang panguna nga parameter mao ang distansya sa pagguhit. Gisukod kini sa mga tipak (ang lugar sa mapa kay 16×16 ug 256 ka bloke ang kataas). Pila ka mga tipak ang gipakita kon pila gyud ang pangayoon gikan sa server.

Gitipigan sa server ang usa ka global nga mapa sa kalibutan, ug kung wala’y nahimo nga mga bloke niini sa punto sa pagpakita sa karakter sa dula, nan ang server dinamikong nagmugna niini ug gitipigan kini. Dili lamang kini nanginahanglan daghang mga kapanguhaan sa pag-compute, apan kanunay usab nga nagdugang ang gidak-on sa mapa sa kalibutan. Sa usa sa labing karaan nga anarkista nga mga server 2b2t (2builders2tools) Ang gidak-on sa mapa milapas na sa 8 Tb, ug ang utlanan sa kalibutan anaa sa mga 30 ka milyon nga bloke. Adunay libu-libo nga mga istorya nga nakig-uban sa kini nga server ug kini angayan sa kaugalingon nga artikulo sa serye.

Ang paghimo sa usa ka kalibutan sa palibot sa usa ka magdudula dili usa ka problema. Ang paghimo sa usa ka kalibutan sa palibot sa gatusan ka mga magdudula magpahinabog menor de edad nga paghinay sa server sa mubo nga panahon, pagkahuman ang karga mokunhod. Ang paghimo sa usa ka kalibutan sa gilay-on nga paghubad sa kliyente nga hapit usa ka libo nga mga magdudula makahimo na sa "paghulog" sa server ug paglabay sa tanan nga mga kliyente gikan niini tungod sa usa ka oras.

Sa server software adunay usa ka bili sama sa TPS (Ticks matag Server - ticks matag segundo). Kasagaran, ang 1 nga siklo sa orasan katumbas sa 50 ms. (1 segundo sa tinuod nga kalibutan katumbas sa 20 ticks sa kalibutan sa dula). Kung ang pagproseso sa usa ka marka mosaka sa 60 segundos, ang aplikasyon sa server pagasirhan, nga ilabay ang tanan nga mga magdudula.

Ang solusyon mao ang paglimite sa kalibutan sa pipila ka mga koordinasyon ug paghimo sa preliminary block generation. Sa ingon, gikuha namon ang panginahanglan alang sa dinamikong henerasyon sa panahon sa dula, ug kinahanglan ra nga basahon sa server ang usa ka naa na nga mapa. Ang duha nga mga isyu mahimong masulbad sa usa ka plugin Border sa Kalibutan.

Ang pinakasayon ​​​​nga paagi mao ang pagbutang sa utlanan sa kalibutan sa porma sa usa ka lingin nga may kalabotan sa spawn point (bisan pa nga mahimo nimo kini sa bisan unsang porma) sa usa ka sugo:

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

Kung ang karakter sa magdudula mosulay sa pagtabok sa utlanan, iduso siya pabalik sa daghang mga bloke. Kung buhaton kini sa makadaghang higayon sulod sa limitadong panahon, ang nakasala pugson nga i-teleport ngadto sa spawn point. Ang pre-generation sa kalibutan gihimo nga mas simple, uban sa sugo:

/wb fill

Tungod kay kini nga aksyon mahimo’g makaapekto sa mga magdudula sa server, siguruha nga kumpirmahon:

/wb confirm

Sa kinatibuk-an, gibana-bana nga 5000 ka oras ang gikinahanglan aron makamugna og kalibutan nga adunay radius nga 40 blocks (~2 billion blocks) sa Intel® Xeon® Gold 6240 processor. Busa, kung gusto nimo nga mag-pre-generate og mas dako nga mapa, hinumdomi nga kini nga proseso magkinahanglan usa ka disente nga oras, ug ang server TPS seryoso nga makunhuran. Usab, hinumdomi nga bisan ang usa ka radius sa 5000 nga mga bloke magkinahanglan og gibana-bana nga 2 GB nga espasyo sa disk.

Bisan pa sa kamatuoran nga ang pinakabag-o nga bersyon sa plugin naugmad alang sa Minecraft nga bersyon 1.14, kini sa eksperimento nakit-an nga kini nagtrabaho nga maayo sa sunod nga mga bersyon. Adunay usa ka kompleto nga lista sa mga mando nga adunay mga pagpatin-aw sa plugin forum.

Mga bloke sa problema

Adunay daghang lainlain nga mga bloke sa Minecraft. Bisan pa, gusto namon nga madani ang atensyon sa mga magbabasa sa usa ka bloke sama sa TNT. Sama sa gisugyot sa ngalan, kini nga bloke usa ka eksplosibo (sulat sa editor - kini usa ka dula nga butang sa virtual nga kalibutan ug kini nga butang walay bisan unsa nga adunay tinuod nga mga eksplosibo). Ang pagkalahi niini mao nga sa panahon sa pagpaaktibo ang puwersa sa grabidad nagsugod sa paglihok niini. Gipugos niini ang server sa pagkalkulo sa tanan nga mga koordinasyon kung niining higayona ang block nagsugod sa pagkahulog.

Kung adunay daghang mga bloke sa TNT, nan ang pagbuto sa usa ka bloke hinungdan sa pagpabuto ug pagpaaktibo sa grabidad sa silingang mga bloke, nga nagsabwag kanila sa tanan nga direksyon. Ang tanan niining matahum nga mga mekaniko sa kilid sa server ingon og daghang mga operasyon aron makalkulo ang agianan sa matag bloke, ingon man ang pakig-uban sa mga silingan nga mga bloke. Ang tahas hilabihan ka kusog sa kapanguhaan, nga dali masusi ni bisan kinsa. Paghimo ug pagpabuto og cube gikan sa TNT blocks nga labing menos 30x30x30 ang gidak-on. Ug kung imong gihunahuna nga ikaw adunay usa ka maayo, kusgan nga kompyuter sa pagdula, nasayup ka 😉

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

Pag-optimize sa Minecraft server
Ang susama nga "eksperimento" sa usa ka server nga adunay Intel® Xeon® Gold 6240 misangpot sa usa ka seryoso nga pag-ubos sa TPS ug 80% nga load sa CPU sa tibuok block detonation time. Busa, kung ang bisan kinsa nga magdudula makahimo niini, nan ang problema sa pasundayag makaapekto sa tanan nga mga magdudula sa server.

Usa ka mas lisud nga kapilian - Mga Kristal sa Edge. Kung ang TNT bisan pa niana mobuto nga sunud-sunod, nan ang Edge Crystals mobuto tanan sa samang higayon, nga sa teoriya hingpit nga makapahunong sa operasyon sa aplikasyon sa server.

Kini nga senaryo mahimo ra malikayan pinaagi sa hingpit nga pagdili sa paggamit niini nga mga bloke sa kalibutan sa dula. Pananglitan, gamit ang plugin WorldGuard. Palihug timan-i nga kini nga plugin sa iyang kaugalingon dili molihok nga walay laing plugin Kalibutan. Busa i-install una ang WorldEdit, ug dayon ang WorldGuard.

konklusyon

Ang hustong pagdumala sa usa ka game server dili sayon ​​nga buluhaton. Ang mga kalisud ug pagkunhod sa pasundayag maghulat kanimo sa matag higayon, labi na kung dili nimo tagdon ang mga mekaniko sa dula mismo. Imposible nga makit-an ang tanan, tungod kay ang mga magdudula usahay mahimong labi ka mamugnaon sa pagsulay sa pagpugos sa server sa pagbuhat sa usa ka butang nga wala kini gituyo. Usa lamang ka makatarunganon nga balanse tali sa mga risgo ug natukod nga mga pagdili ang magtugot sa server nga magpadayon sa pag-operate ug dili makunhuran ang pasundayag niini sa mga kritikal nga kantidad.

Atol sa quarantine, ang pipila sa among mga empleyado wala makagusto sa ilang mga paboritong opisina ug nakahukom nga i-recreate kini sulod sa Minecraft. Naa ka usab higayon nga mobisita kanamo nga wala’y peligro sa imong kahimsog o pag-usik sa oras sa dalan.

Aron mahimo kini, among gidapit ang tanan sa among server minecraft.selectel.ru (kliyente nga bersyon 1.15.2), diin ang mga data center Tsvetochnaya-1 ug Tsvetochnaya-2 gimugna pag-usab. Ayaw kalimti ang pag-uyon sa pag-download sa dugang nga mga kapanguhaan, kini kinahanglan alang sa husto nga pagpakita sa pipila nga mga lokasyon.

Ang mga pagpangita, mga code sa promosyon, mga itlog sa Pasko sa Pagkabanhaw ug makapalipay nga komunikasyon naghulat kanimo.

Source: www.habr.com

Idugang sa usa ka comment