Optimization server Minecraft

Optimization server Minecraft
Ing blog kita wis ngandika, carane nggawe server Minecraft dhewe, nanging 5 taun wis liwati wiwit banjur akeh wis diganti. Kita nuduhake karo sampeyan cara saiki kanggo nggawe lan ngoptimalake bagean server saka game populer kasebut.

Sajrone sejarah 9 taun (diwilang saka tanggal rilis), Minecraft wis entuk akeh penggemar lan sengit ing antarane pemain biasa lan geeks. Konsep prasaja saka donya sing digawe saka blok wis berkembang saka wangun hiburan sing prasaja dadi media universal kanggo komunikasi lan nggawe macem-macem obyek saka donya nyata.

Saliyane construction, game nduweni kemampuan kanggo nggawe logika, sing ngidini sampeyan ngleksanakake algoritma lengkap ing Minecraft. YouTube kebak video sing nyengsemake banget ing ngendi wong-wong, wis ngupayakake akeh gaweyan lan mbuwang wektu akeh, nggawe salinan piranti elektronik iki utawa kasebut utawa nggawe salinan sing rinci. ana и fiksi struktur arsitektur. Kabeh diwatesi mung dening imajinasi tukang game lan kemungkinan jagad game.


Nanging ayo ora ngomong luwih lanjut babagan apa sing ditindakake para pemain, nanging ayo goleki bagean server aplikasi kasebut lan nyorot masalah (kadhangkala rumit banget) sing bisa kedadeyan sajrone mbukak. Ayo nggawe reservasi langsung yen kita mung bakal ngomong babagan Edisi Jawa.

Jinis server

Pilihan sing paling gampang yaiku server sing dibangun ing klien game. Kita nggawe jagad, menet tombol siji, lan server bisa diakses liwat jaringan lokal. Opsi iki ora bisa nahan beban serius, mula kita ora bakal nganggep.

vanilla

Mojang Studios nyebarake bagean server game kasebut minangka aplikasi Java kanthi gratis ing situs web resmi. Iki ngidini sampeyan nggawe dhewe darmabakti server lan donya pribadi, supaya bisa diakses kanggo sambungan saka ngendi wae ing planet. Kanggo sing pisanan nindakake iki, ana sing apik tutorial, kasedhiya ing Wiki game sing cocog.

Pendekatan iki nduweni kekurangan sing serius, yaiku kekurangan kemampuan sing ora ana ing kothak kanggo nyambungake plugin sing nggedhekake fungsi server lan ngidini ora mung ngotomatisasi akeh proses, nanging uga ngoptimalake kinerja. Kajaba iku, server resmi nduweni konsumsi RAM sing cukup gedhe kanggo saben pemain sing disambungake.

bukkit

Aplikasi server sing digawe dening para penggemar adhedhasar versi Vanilla bukkit Ngartekno ditambahi Kapabilitas game dening ndhukung Plugins lan mods (modifikasi). Diijini ora mung kanggo nambah pamblokiran anyar kanggo urutane critane game, nanging uga kanggo nindakake macem-macem manipulasi sing ora bisa diakses kanggo piranti lunak vanilla. Apike, aplikasi iki mbutuhake memori sing luwih sithik.

Nginstal Bukkit ora angel, instruksi sing cocog ana ing sumber GamePedia. Nanging iki ora ana gunane, wiwit 2014 tim Bukkit bubar, pangembang proyek wis dadi karyawan Mojang Studios, lan gudang nilar. Mangkono, Bukkit èfèktif mati, lan iku ndadekake pangertèn kanggo mbayar manungsa waé kanggo loro proyèk sabanjuré.

SpigotMC

Kanggo nggawe urip luwih gampang kanggo pangembang plugin, ana perlu kanggo API kanggo sesambungan karo donya game. Iki persis masalah sing ditanggulangi para pangripta. Spigot, njupuk inti Bukkit lan nggarap maneh kanggo entuk linuwih lan kinerja sing luwih apik. Nanging, Repositori Git proyek iki diblokir amarga Digital Millennium Copyright Act (DMCA), lan ora bisa ngundhuh kode sumber saka kono.

Saiki, SpigotMC aktif dikembangake lan digunakake. Ndhukung kabeh plugin sing digawe kanggo Bukkit, nanging ora kompatibel karo. Kanggo ngubengi DMCA Takedown, metode elegan sing diarani BuildTools diciptakake. Alat iki ngilangake perlu kanggo disebaraké aplikasi nyawiji lan ngidini kedhaftar kanggo ngumpulake Spigot, CraftBukkit lan Bukkit saka kode sumber. Kabeh iki ndadekake larangan DMCA ora ana gunane.

KertasMC

Kabeh katon kelangan, lan Spigot dadi pilihan sing apik. Nanging iki ora cukup kanggo sawetara penggemar, lan padha nggawe garpu Spigot dhewe "ing steroid." On kaca proyek kauntungan tombol iku "Iku bodho cepet". Dikembangke masyarakat ngijini sampeyan kanggo cepet mutusake masalah berkembang, lan API lengkap ngijini sampeyan kanggo nggawe plugin menarik. Sampeyan bisa miwiti PaperMC kanthi printah prasaja, diwenehake ing dokumentasi.

PaperMC nduweni kompatibilitas sing apik, mula plugin sing ditulis kanggo SpigotMC bisa gampang digunakake ing PaperMC, nanging tanpa dhukungan resmi. Kompatibilitas mundur karo SpigotMC uga ana. Saiki kita wis nyathet macem-macem opsi kanggo nggawe server, ayo pindhah menyang masalah kinerja sing bisa kedadeyan.

Masalah lan Solusi

Wangsulan: Bab ingkang utama sampeyan kudu ngerti iku kabeh related kanggo Processing donya game bakal diproses mung ing siji inti komputer server fisik. Dadi yen dumadakan sampeyan duwe server banget karo rolas intine komputasi, banjur mung siji bakal dimuat. Kabeh liyane bakal nganggur. Iki arsitektur aplikasi, lan sampeyan ora bisa nindakake apa-apa. Dadi nalika milih server, sampeyan kudu mbayar manungsa waé ora kanggo jumlah intine, nanging frekuensi jam. Sing luwih dhuwur, kinerja bakal luwih apik.

Babagan masalah kapasitas RAM, kita kudu nerusake saka indikator ing ngisor iki:

  • nomer ngrancang pemain;
  • nomer ngrancang donya ing server;
  • ukuran saben donya.

Sampeyan kudu eling yen aplikasi Java tansah mbutuhake cadangan RAM. Yen sampeyan nyana pa konsumsi memori 8 gigabyte, sampeyan kudu bener duwe 12. Jumlah relatif, nanging inti ora ngganti.

Kanggo miwiti bagean server, disaranake nggunakake panji kasebut ing artikel kasebut Tuning ing JVM - G1GC Garbage Collector Flags kanggo Minecraft. Iki "sihir ireng" ngidini server bener ngatur "pengumpul sampah" lan ngoptimalake nggunakake RAM. Sampeyan ora kudu nyedhiakke memori luwih saka server bener nganggo sak influx puncak pemain.

Nggawe peta blok

"Apa sampeyan mikir yen rembulan mung ana nalika sampeyan ndeleng?" (Albert Einstein)

Server anyar rampung. Sanalika pamuter kasil nyambung pisanan, karakter game katon ing titik kumpul umum (spawn). Iki mung panggonan ing ngendi donya game wis digawe dening server. Ing wektu sing padha, bagean klien katon ing setelan, lan parameter kunci yaiku jarak teken. Iki diukur ing potongan (wilayah peta 16 × 16 lan dhuwur 256 blok). Pira potongan sing dituduhake ana persis pira sing bakal dijaluk saka server.

Server nyimpen peta global ing donya, lan yen ora ana blok sing digawe ing titik kasebut ing karakter game kasebut, server kasebut kanthi dinamis ngasilake lan nyimpen. Iki ora mung mbutuhake sumber daya komputasi gedhe, nanging uga nambah ukuran peta donya. Ing salah siji saka server anarkis paling tuwa 2b2t (2builders2tools) Ukuran peta wis ngluwihi 8 Tb, lan wates donya watara 30 yuta blok. Ana ewonan crita sing ana gandhengane karo server iki lan pantes artikel dhewe ing seri kasebut.

Nggawe donya watara siji pemain ora masalah. Ngasilake donya watara atusan pemain bakal nimbulaké slowdowns server cilik kanggo wektu cendhak, sawise kang mbukak bakal suda. Ngasilake jagad ing jarak rendering klien watara sewu pemain wis bisa "nyetop" server lan mbuwang kabeh klien amarga wektu entek.

Ing piranti lunak server ana nilai kayata TPS (Ticks saben Server - ticks per detik). Biasane, 1 siklus jam padha karo 50 ms. (1 detik saka donya nyata padha karo 20 ticks saka donya game). Yen pangolahan siji obah mundhak kanggo 60 detik, aplikasi server bakal ditutup, uncalan metu kabeh pemain.

Solusi kasebut yaiku mbatesi jagad menyang koordinat tartamtu lan nindakake produksi blok awal. Mangkono, kita mbusak perlu kanggo generasi dinamis sak game, lan server mung kudu maca peta ana. Loro-lorone masalah bisa ditanggulangi kanthi siji plugin WorldBorder.

Cara paling gampang yaiku nyetel wates donya ing wangun bunder sing relatif marang titik spawn (sanajan sampeyan bisa nggawe apa wae) kanthi siji printah:

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

Yen karakter pamuter nyoba nglintasi tapel wates, bakal di-push bali sawetara pamblokiran. Yen iki rampung kaping pirang-pirang ing wektu winates, nerak bakal meksa teleported menyang titik spawn. Pra-generasi donya ditindakake luwih gampang, kanthi prentah:

/wb fill

Amarga tumindak iki duweni potensi mengaruhi pemain ing server, priksa manawa sampeyan konfirmasi:

/wb confirm

Secara total, butuh udakara 5000 jam kanggo ngasilake jagad kanthi radius 40 blok (~2 milyar blok) ing prosesor Intel® Xeon® Gold 6240. Mula, yen sampeyan pengin nggawe peta sing luwih gedhe, kudu ngerti yen proses iki bakal njupuk wektu prayoga , lan TPS server bakal suda akeh. Uga, elinga yen radius 5000 blok mbutuhake kira-kira 2 GB ruang disk.

Senadyan kasunyatan manawa versi paling anyar saka plugin kasebut dikembangake kanggo versi Minecraft 1.14, ditemokake kanthi eksperimen manawa bisa digunakake ing versi sabanjure. Dhaptar lengkap printah karo panjelasan kasedhiya ing forum plugin.

Pamblokiran masalah

Ana macem-macem pamblokiran ing Minecraft. Nanging, kita pengin narik kawigaten para pamaca menyang blok kaya TNT. Minangka jeneng kasebut, blok iki minangka bahan peledak (cathetan editor - iki minangka item game ing jagad maya lan barang iki ora duwe bahan peledak sing nyata). Keanehan kasebut yaiku nalika aktifitas, gaya gravitasi wiwit tumindak. Iki meksa server ngetung kabeh koordinat yen ing wektu iki blok wiwit tiba.

Yen ana sawetara blok TNT, detonasi siji blok nyebabake detonasi lan aktivasi gravitasi ing blok tetanggan, nyebarake ing kabeh arah. Kabeh mekanika sing apik ing sisih server katon kaya akeh operasi kanggo ngetung lintasan saben blok, uga interaksi karo blok tetangga. Tugas kasebut mbutuhake sumber daya banget, sing bisa dipriksa kanthi gampang dening sapa wae. Nggawe lan njeblug kubus saka blok TNT sing ukurane paling sethithik 30x30x30. Lan yen sampeyan ngira yen sampeyan duwe komputer game sing apik lan kuat, sampeyan salah banget 😉

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

Optimization server Minecraft
"Eksperimen" sing padha ing server karo Intel® Xeon® Gold 6240 nyebabake penurunan TPS sing serius lan beban CPU 80% sajrone wektu detonasi blok. Mulane, yen ana pemain sing bisa nindakake iki, masalah kinerja bakal mengaruhi kabeh pemain ing server.

Pilihan sing luwih angel - Kristal pinggiran. Yen TNT njeblug terus-terusan, banjur Kristal Edge njeblug kabeh ing wektu sing padha, sing ing teori bisa mungkasi operasi aplikasi server.

Skenario iki mung bisa nyingkiri kanthi nglarang panggunaan blok kasebut ing jagad game. Contone, nggunakake plugin WorldGuard. Elinga yen plugin iki dhewe ora bisa digunakake tanpa plugin liyane WorldSunting. Dadi, instal WorldEdit dhisik, banjur WorldGuard.

kesimpulan

Ngatur server game kanthi bener ora dadi tugas sing gampang. Kesulitan lan kinerja sing mudhun bakal nunggu sampeyan ing saben wektu, utamane yen sampeyan ora nggatekake mekanika game kasebut. Ora bisa diramalake kabeh, amarga para pemain bisa uga kreatif banget kanggo nyoba meksa server kanggo nindakake apa wae sing ora dikarepake. Mung imbangan cukup antarane risiko lan watesan ditetepake bakal ngidini server kanggo operate terus-terusan lan ora nyuda kinerja kanggo nilai kritis.

Sajrone karantina, sawetara karyawan ora kejawab kantor favorit lan mutusake nggawe maneh ing Minecraft. Sampeyan uga duwe kesempatan kanggo ngunjungi kita tanpa mbebayani kesehatan utawa mbuwang wektu ing dalan.

Kanggo nindakake iki, kita ngajak kabeh wong menyang server kita minecraft.selectel.ru (versi klien 1.15.2), ing ngendi pusat data Tsvetochnaya-1 lan Tsvetochnaya-2 digawe maneh. Aja lali kanggo setuju kanggo ngundhuh sumber daya tambahan, padha perlu kanggo tampilan bener sawetara lokasi.

Nggoleki, kode promosi, endhog Paskah lan komunikasi sing nyenengake nunggu sampeyan.

Source: www.habr.com

Add a comment