Minecraft серверин оптималдаштыруу

Minecraft серверин оптималдаштыруу
Биздин блогдо биз буга чейин бар айтып, өзүңүздүн Minecraft сервериңизди кантип түзүү керек, бирок андан бери 5 жыл өттү жана көп нерсе өзгөрдү. Биз сиздер менен ушундай популярдуу оюндун сервер бөлүгүн түзүү жана оптималдаштыруунун учурдагы жолдорун бөлүшөбүз.

9 жылдык тарыхында (чыгарылган күндөн баштап эсептегенде) Minecraft катардагы оюнчулар менен геэктердин арасында укмуштуудай сандагы күйөрмандарды жана жек көрүүчүлөрдү тапты. Блоктордон жасалган дүйнөнүн жөнөкөй концепциясы көңүл ачуунун жөнөкөй формасынан баарлашуу жана реалдуу дүйнөдөн ар кандай объекттерди түзүү үчүн универсалдуу каражатка айланган.

Курулуштан тышкары, оюн түзүү жөндөмүнө ээ логика, бул сизге Minecraft ичинде толук кандуу алгоритмдерди ишке ашырууга мүмкүндүк берет. YouTube абдан таасирдүү видеолорго толгон, анда адамдар көп күч-аракет жумшап, көп убакыт коротуп, тигил же бул электрондук түзүлүштүн көчүрмөсүн жараткан же деталдуу көчүрмөсүн жасаган бар и ойдон чыгарылган архитектуралык курулуштар. Баардыгы оюнчунун фантазиясы жана оюн ааламынын мүмкүнчүлүктөрү менен гана чектелет.

Play Video

Бирок, келгиле, оюнчулар эмнени түзөрү жөнүндө мындан ары сүйлөшпөйлү, бирок келгиле, тиркеменин сервердик бөлүгүн карап көрөлү жана жүктөм астында иштөөдө пайда болушу мүмкүн болгон көйгөйлөрдү (кээде өтө татаал) бөлүп көрөлү. Биз Java Edition жөнүндө гана сүйлөшөбүз деп дароо ээлеп алалы.

Серверлердин түрлөрү

Эң жөнөкөй вариант - бул оюн кардарына орнотулган сервер. Биз дүйнө түздүк, бир баскычты басып, сервер локалдык тармак аркылуу жеткиликтүү болуп калды. Бул параметр эч кандай олуттуу жүк туруштук бере албайт, ошондуктан биз аны карап да койбойбуз.

Vanilla

Mojang Studios оюндун сервер бөлүгүн Java тиркемеси катары бекер таратып жатат расмий сайтында. Бул өзүңдү түзүүгө мүмкүндүк берет арналган сервер жана жеке дүйнө, бул планетанын каалаган жеринен байланыш үчүн жеткиликтүү кылуу. Муну биринчи жолу жасап жаткандар үчүн сонун нерсе бар окуу куралы, тиешелүү оюн Wikiде жеткиликтүү.

Бул ыкманын бир олуттуу кемчилиги бар, атап айтканда, сервердин функционалдуулугун кеңейтүүчү жана көптөгөн процесстерди автоматташтырууга гана эмес, ошондой эле өндүрүмдүүлүктү оптималдаштырууга мүмкүндүк берүүчү плагиндерди туташтыруу үчүн кутудан тышкаркы мүмкүнчүлүктөрдүн жоктугу. Мындан тышкары, расмий сервер ар бир туташкан оюнчу үчүн RAM керектөөсүнө ээ.

Буккит

Vanilla версиясынын негизинде энтузиасттар тарабынан түзүлгөн сервердик тиркеме Буккит плагиндерди жана модификацияларды (модификацияларды) колдоо менен оюндун мүмкүнчүлүктөрүн кыйла кеңейтти. Бул оюнга жаңы блокторду кошууга гана эмес, ошондой эле ванильдик программалык камсыздоо үчүн жеткиликсиз болгон ар кандай манипуляцияларды жасоого мүмкүндүк берди. Кызыктуусу, бул колдонмо кыйла азыраак эстутумду талап кылат.

Bukkit орнотуу кыйын эмес, бул жерде тиешелүү көрсөтмөлөр бар GamePedia. Бирок бул эч кандай мааниси жок, 2014-жылдан бери Bukkit командасы таркап, долбоордун иштеп чыгуучулары Mojang Studiosтун кызматкерлери болуп калышты жана репозиторий ташталган. Ошентип, Bukkit натыйжалуу өлдү, ал кийинки эки долбоорго маани берүү үчүн мааниси бар.

SpigotMC

Плагиндерди иштеп чыгуучулардын жашоосун жеңилдетүү үчүн, оюн дүйнөсү менен өз ара аракеттенүү үчүн API керек болчу. Дал ушул маселени жаратуучулар чечкен. Spigot, Bukkit өзөгүн алып, аны кайра иштетүү, ишенимдүүлүктү жана аткарууну жакшыртуу. Ошого карабастан, Git репозиторий Долбоор Санариптик Миң жылдыктын Автордук Актынына байланыштуу бөгөттөлгөн (DMCA), жана ал жерден баштапкы кодду жүктөп алуу мүмкүн эмес.

Азыркы учурда, SpigotMC жигердүү иштелип чыккан жана колдонулат. Бул Bukkit үчүн түзүлгөн бардык плагиндерди колдойт, бирок аны менен артка шайкеш келбейт. DMCA Takedown менен айланып өтүү үчүн, BuildTools деп аталган жарашыктуу ыкма ойлоп табылган. Бул курал компиляцияланган тиркемени жайылтуу зарылдыгын жокко чыгарат жана колдонуучуларга Spigot, CraftBukkit жана Bukkitти баштапкы коддон компиляциялоого мүмкүндүк берет. Мунун баары DMCA тыюуну пайдасыз кылат.

PaperMC

Баары сонун көрүндү жана Спигот эң сонун вариант болуп калды. Бирок бул кээ бир энтузиасттар үчүн жетишсиз болгон жана алар "стероиддерде" Spigot айрысын жасашкан. Күйүк долбоор барагы негизги артыкчылыгы "Бул акылсыз тез" болуп саналат. Иштеп чыккан коомчулук пайда болгон маселелерди тез чечүүгө мүмкүндүк берет, ал эми кеңейтилген API кызыктуу плагиндерди түзүүгө мүмкүндүк берет. Сиз PaperMC-де берилген бир жөнөкөй буйрук менен ишке киргизсеңиз болот документтер.

PaperMC мыкты шайкештикке ээ, ошондуктан SpigotMC үчүн жазылган плагиндер PaperMCде оңой иштей алат, бирок расмий колдоосуз. SpigotMC менен артка шайкештик да бар. Эми серверди түзүүнүн ар кандай варианттарын тизмектеп чыккандан кийин, келгиле, пайда болушу мүмкүн болгон аткаруу маселелерине өтөбүз.

Проблемалар жана чечимдер

Сиз түшүнүшүңүз керек болгон негизги нерсе, оюн дүйнөсүн иштетүүгө байланышкан бардык нерселер физикалык сервердин бир эсептөө өзөгүндө гана иштетилет. Ошентип, күтүлбөгөн жерден сизде ондогон эсептөөчү өзөктүү мыкты сервериңиз болсо, анда бирөө гана жүктөлөт. Калгандарынын баары дээрлик бош болот. Бул колдонмонун архитектурасы жана бул тууралуу эч нерсе кыла албайсыз. Андыктан серверди тандоодо өзөктөрдүн санына эмес, тактык жыштыгына көңүл буруш керек. Канчалык жогору болсо, көрсөткүч ошончолук жакшы болот.

RAM сыйымдуулугу маселесине келсек, биз төмөнкү көрсөткүчтөрдөн чыгышыбыз керек:

  • оюнчулардын пландаштырылган саны;
  • сервердеги дүйнөнүн пландалган саны;
  • ар бир дүйнөнүн көлөмү.

Java тиркемеси ар дайым RAM резервине муктаж экенин эстен чыгарбоо керек. Эгерде сиз эстутум керектөөсүн 8 гигабайт күтсөңүз, анда сизде 12 болушу керек. Сандар салыштырмалуу, бирок маңызы өзгөрбөйт.

Сервер бөлүгүн баштоо үчүн макалада көрсөтүлгөн желектерди колдонууну сунуштайбыз Minecraft үчүн JVM - G1GC таштанды жыйноочу желектерди тууралоо. Бул "кара магия" серверге "таштанды жыйноочуну" туура конфигурациялоого жана оперативдүү эстутумду колдонууну оптималдаштырууга мүмкүндүк берет. Оюнчулардын эң жогорку агымы учурунда сервер керектегенден көбүрөөк эстутумду бөлбөшүңүз керек.

Блок картасын түзүү

"Сиз чын эле Айды караганыңызда гана бар деп ойлойсузбу?" (Альберт Эйнштейн)

Толугу менен жаңы сервер. Оюнчу биринчи жолу ийгиликтүү кошулаар замат, оюндун каарманы жалпы чогулган жерде (тукум) пайда болот. Бул оюн дүйнөсү сервер тарабынан алдын ала түзүлгөн жалгыз жер. Ошол эле учурда, кардар бөлүгү орнотууларды карап, негизги параметр чийме аралык болуп саналат. Ал бөлүктөр менен өлчөнөт (картанын аянты 16×16 жана бийиктиги 256 блок) серверден канча бөлүктөр талап кылынат.

Сервер дүйнөнүн глобалдык картасын сактайт жана эгер оюндун каарманы пайда болгон учурда андагы түзүлгөн блоктор жок болсо, сервер аларды динамикалык түрдө жаратат жана сактайт. Бул чоң эсептөө ресурстарын гана талап кылбастан, ошондой эле дүйнөлүк картанын көлөмүн тынымсыз көбөйтөт. Эң эски анархисттик серверлердин биринде 2b2t (2builders2tools) Картанын көлөмү буга чейин 8 Тб ашты, ал эми дүйнөнүн чек арасы 30 миллион блоктун тегерегинде. Бул сервер менен байланышкан миңдеген окуялар бар жана ал сериядагы өзүнүн макаласына татыктуу.

Бир оюнчунун айланасында дүйнө түзүү көйгөй эмес. Жүздөгөн оюнчулардын айланасында дүйнөнү түзүү сервердин кыска убакытка кичине басаңдашына алып келет, андан кийин жүктөм азаят. Миңге жакын оюнчуга чейинки аралыкта кардарлардын дүйнөсүн түзүү серверди "таштап" жана тайм-ауттун айынан бардык кардарларды андан ары ыргыта алат.

Сервердик программалык камсыздоодо сыяктуу маани бар TPS (Серверге кенелер - секундасына кенелер). Адатта, 1 саат цикли 50 мс барабар. (Чыныгы дүйнөнүн 1 секундасы оюн дүйнөсүнүн 20 кенесине барабар). Эгерде бир белгини иштетүү 60 секундага чейин көбөйсө, сервердик тиркеме жабылып, бардык оюнчуларды чыгарып салат.

Чечим дүйнөнү белгилүү бир координаттар менен чектеп, блокторду алдын ала түзүү. Ошентип, биз оюн учурунда динамикалык генерациянын зарылдыгын алып салабыз жана серверге учурдагы картаны гана окуу керек болот. Эки маселени бир плагин менен чечсе болот WorldBorder.

Эң оңой жолу - дүйнөнүн чек арасын бир буйрук менен уюлдук чекитке карата тегерек түрүндө коюу (бирок сиз аны каалаган формада жасай аласыз):

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

Эгерде оюнчунун каарманы чек араны кесип өтүүгө аракет кылса, ал бир нече блокторду артка түртөт. Бул чектелген убакыттын ичинде бир нече жолу жасалса, укук бузуучу күч менен уруктандыруу чекитине телепортацияланат. Дүйнөнүн алдын ала жаралышы дагы жөнөкөй, буйрук менен ишке ашырылат:

/wb fill

Бул аракет сервердеги оюнчуларга таасир этиши мүмкүн болгондуктан, ырастоону унутпаңыз:

/wb confirm

Жалпысынан Intel® Xeon® Gold 5000 процессорунда радиусу 40 блок (~2 миллиард блок) болгон дүйнөнү түзүү үчүн болжол менен 6240 саат талап кылынган бул процесс татыктуу убакытты талап кылат жана TPS сервери олуттуу түрдө кыскарат. Ошондой эле, 5000 блоктун радиусу да болжол менен 2 ГБ диск мейкиндигин талап кыларын унутпаңыз.

Плагиндин эң акыркы версиясы Minecraft 1.14 версиясы үчүн иштелип чыкканына карабастан, ал кийинки версияларда мыкты иштегени эксперименталдык түрдө аныкталган. Түшүндүрүүлөрү бар буйруктардын толук тизмеси бар плагин форумунда.

Көйгөй блоктор

Майнкрафтта көптөгөн блоктор бар. Бирок биз окурмандардын көңүлүн мындай блокко бургубуз келет тротил. Аты айтып тургандай, бул блок жарылуучу зат (редактордун эскертүүсү - бул виртуалдык дүйнөнүн оюн нерсеси жана бул нерседе чыныгы жардыргыч заттар жок). Анын өзгөчөлүгү активдештирүү учурунда тартылуу күчү ага таасир эте баштаганында. Бул серверди бардык координаттарды эсептөөгө мажбурлайт, эгерде ушул учурда блок кулай баштаса.

Эгерде бир нече тротил блоктору бар болсо, анда бир блоктун жарылышы кошуна блоктордун детонациясын жана тартылуу күчүн активдештирип, аларды бардык тарапка чачыратат. Сервер тарабындагы бул кооз механиканын баары ар бир блоктун траекториясын эсептөө үчүн көптөгөн операцияларды, ошондой эле кошуна блоктор менен өз ара аракеттенүү сыяктуу көрүнөт. Тапшырма өтө көп ресурсту талап кылат, аны ар ким оңой текшере алат. Кеминде 30x30x30 өлчөмүндөгү тротил блокторунан кубду жаратыңыз жана жардырыңыз. Ал эми сизде жакшы, күчтүү оюн компьютери бар деп ойлосоңуз, анда абдан жаңылыпсыз😉

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

Minecraft серверин оптималдаштыруу
Intel® Xeon® Gold 6240 менен сервердеги ушундай эле "эксперимент" блоктун жарылуу учурундагы олуттуу TPS төмөндөшүнө жана CPU жүктөөнүн 80%га алып келди. Ошондуктан, эгерде кайсы бир оюнчу муну жасай алса, анда аткаруу көйгөйү сервердеги бардык оюнчуларга таасирин тийгизет.

Андан да катаал вариант - Edge Crystals. Эгерде TNT ошентсе да ырааттуу жарылса, анда Edge Crystals бардыгы бир убакта жарылат, бул теориялык жактан сервердик тиркеменин ишин толугу менен токтото алат.

Бул сценарийди оюн дүйнөсүндө бул блокторду колдонууга толугу менен тыюу салуу менен гана качууга болот. Мисалы, плагинди колдонуу WorldGuard. Бул плагин башка плагинсиз иштебей турганын эске алыңыз Worldedit. Ошентип, биринчи WorldEdit, анан WorldGuard орнотуңуз.

жыйынтыктоо

Оюн серверин туура башкаруу оңой иш эмес. Кыйынчылыктар жана төмөндөгөн көрсөткүчтөр сизди ар бир кадамда күтөт, айрыкча оюн механикасынын өздөрүн эске албасаңыз. Баарын алдын ала көрүү мүмкүн эмес, анткени оюнчулар кээде серверди ал үчүн каралбаган нерсени жасоого мажбурлоо аракетинде абдан чыгармачыл болушу мүмкүн. Тобокелдиктер менен белгиленген чектөөлөрдүн ортосундагы акылга сыярлык тең салмактуулук гана серверге үзгүлтүксүз иштөөгө мүмкүндүк берет жана анын натыйжалуулугун критикалык маанилерге чейин төмөндөтпөйт.

Карантин учурунда кээ бир кызматкерлерибиз сүйүктүү кеңселерин сагынышып, аларды Minecraft ичинде кайра жаратууну чечишти. Сизде да ден соолугуңузду тобокелге салбай, жолдо убакытты текке кетирбей бизге келүүгө мүмкүнчүлүк бар.

Бул үчүн бардыгын серверибизге чакырабыз minecraft.selectel.ru (кардар версиясы 1.15.2), мында Цветочная-1 жана Цветочная-2 маалымат борборлору кайра түзүлгөн. Кошумча ресурстарды жүктөөгө макул болууну унутпаңыз, алар кээ бир жерлерди туура көрсөтүү үчүн зарыл.

Сизди тапшырмалар, жарнамалык коддор, Пасха жумурткалары жана жагымдуу баарлашуу күтөт.

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster