Ing blog kita wis
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
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
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
Nginstal Bukkit ora angel, instruksi sing cocog ana ing sumber
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.
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
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
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
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
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
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
"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
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