{"id":87938,"date":"2020-07-12T01:41:59","date_gmt":"2020-07-11T23:41:59","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/optimizacziya-servera-minecraft"},"modified":"2020-07-12T01:41:59","modified_gmt":"2020-07-11T23:41:59","slug":"optimizacziya-servera-minecraft","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/optimizacziya-servera-minecraft","title":{"rendered":"Optymalizacja serwera Minecraft","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Optymalizacja serwera Minecraft\" src=\"\/wp-content\/uploads\/2020\/07\/bbbb6eac1fb8a216bad7723dc31caa60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNa naszym blogu ju\u017c <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/selectel\/blog\/231935\/\">opowiadali\u015bmy<\/a><\/noindex>, jak stworzy\u0107 w\u0142asny serwer Minecraft, jednak od tego czasu min\u0119\u0142o 5 lat i wiele si\u0119 zmieni\u0142o. Dzielimy si\u0119 z wami aktualnymi sposobami tworzenia i optymalizacji cz\u0119\u015bci serwerowej tej popularnej gry.<\/p>\n<p>W ci\u0105gu swojej 9-letniej historii (licz\u0105c od daty wydania) Minecraft zdoby\u0142 ogromn\u0105 liczb\u0119 fan\u00f3w i krytyk\u00f3w zar\u00f3wno w\u015br\u00f3d zwyk\u0142ych graczy, jak i geek\u00f3w. Prosta koncepcja \u015bwiata z klock\u00f3w przekszta\u0142ci\u0142a si\u0119 z zwyk\u0142ej rozrywki w uniwersalne \u015brodowisko do komunikacji i tworzenia r\u00f3\u017cnych obiekt\u00f3w z rzeczywistego \u015bwiata. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOpr\u00f3cz budowania, gra daje mo\u017cliwo\u015b\u0107 tworzenia <noindex><a rel=\"nofollow\" href=\"https:\/\/minecraft-ru.gamepedia.com\/%D0%A1%D1%85%D0%B5%D0%BC%D1%8B_%D0%B8%D0%B7_%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%B0%D0%BC%D0%BD%D1%8F\">schemat\u00f3w logicznych<\/a><\/noindex>, kt\u00f3re pozwalaj\u0105 na realizacj\u0119 pe\u0142noprawnych algorytm\u00f3w wewn\u0105trz Minecraft. Na YouTube jest wiele imponuj\u0105cych film\u00f3w, na kt\u00f3rych ludzie, wk\u0142adaj\u0105c ogromny wysi\u0142ek i czas, stworzyli kopi\u0119 jakiego\u015b urz\u0105dzenia elektronicznego lub zbudowali szczeg\u00f3\u0142ow\u0105 kopi\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.planetminecraft.com\/project\/paris---eiffel-tower\/\">istniej\u0105cych<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/overclockers.ru\/softnews\/show\/101225\/entuziasty-vossozdali-v-minecraft-hogvarts-i-drugie-lokacii-iz-garri-pottera\">fikcyjnych<\/a><\/noindex> obiekt\u00f3w architektonicznych. Wszystko ogranicza si\u0119 jedynie do wyobra\u017ani gracza i mo\u017cliwo\u015bci \u015bwiata gry.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"SxG3rydcrwA\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/SxG3rydcrwA\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nAle nie b\u0119dziemy dalej m\u00f3wi\u0107 o tym, co dok\u0142adnie gracze tworz\u0105, a przyjrzymy si\u0119 cz\u0119\u015bci serwerowej aplikacji i om\u00f3wimy problemy (czasami do\u015b\u0107 skomplikowane), kt\u00f3re mog\u0105 si\u0119 pojawi\u0107 podczas pracy pod obci\u0105\u017ceniem. Od razu zaznaczamy, \u017ce mowa b\u0119dzie tylko o edycji Java.<\/p>\n<h2>Rodzaje serwer\u00f3w<\/h2>\n<p>\nNajprostszym wariantem jest serwer wbudowany w klienta gry. Stworzyli\u015bmy \u015bwiat, klikn\u0119li\u015bmy jeden przycisk i oto serwer sta\u0142 si\u0119 dost\u0119pny w sieci lokalnej. Taki wariant nie wytrzyma \u017cadnego powa\u017cnego obci\u0105\u017cenia, dlatego nawet go nie rozwa\u017cymy.<\/p>\n<h3>Vanilla<\/h3>\n<p>\nFirma Mojang Studios udost\u0119pnia serwerow\u0105 cz\u0119\u015b\u0107 gry jako aplikacj\u0119 Java za darmo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.minecraft.net\/ru-ru\/download\/server\/\">na oficjalnej stronie<\/a><\/noindex>. Pozwala to stworzy\u0107 w\u0142asny <noindex><a rel=\"nofollow\" href=\"http:\/\/slc.tl\/JZiJs\">serwerze dedykowanym<\/a><\/noindex> i osobisty \u015bwiat, udost\u0119pniaj\u0105c go do pod\u0142\u0105czenia z ka\u017cdej cz\u0119\u015bci planety. Dla tych, kt\u00f3rzy robi\u0105 to po raz pierwszy, istnieje wspania\u0142y <noindex><a rel=\"nofollow\" href=\"https:\/\/minecraft.gamepedia.com\/Tutorials\/Setting_up_a_server\">tutorial<\/a><\/noindex>, dost\u0119pny w odpowiedniej Wiki gry.<\/p>\n<p>Ten spos\u00f3b ma jedn\u0105 powa\u017cn\u0105 wad\u0119, a mianowicie brak mo\u017cliwo\u015bci \u0142atwego pod\u0142\u0105czania wtyczek, kt\u00f3re rozszerzaj\u0105 funkcjonalno\u015b\u0107 serwera i pozwalaj\u0105 nie tylko automatyzowa\u0107 wiele proces\u00f3w, ale tak\u017ce optymalizowa\u0107 wydajno\u015b\u0107. Ponadto, oficjalny serwer ma do\u015b\u0107 du\u017c\u0105 pami\u0119\u0107 RAM zu\u017cywan\u0105 na ka\u017cdego pod\u0142\u0105czonego gracza.<\/p>\n<h3>Bukkit<\/h3>\n<p>\nSerwerowe oprogramowanie stworzone przez entuzjast\u00f3w na bazie wersji Vanilla <noindex><a rel=\"nofollow\" href=\"https:\/\/getbukkit.org\/\">Bukkit<\/a><\/noindex> znacznie rozszerza\u0142o mo\u017cliwo\u015bci gry dzi\u0119ki wsparciu dla wtyczek i modyfikacji. Pozwoli\u0142o to nie tylko na dodawanie nowych blok\u00f3w do rozgrywki, ale tak\u017ce na wykonywanie r\u00f3\u017cnych manipulacji, kt\u00f3re by\u0142y niedost\u0119pne dla oprogramowania Vanilla. Co ciekawe, to oprogramowanie wymaga\u0142o znacznie mniej pami\u0119ci.<\/p>\n<p>Instalacja Bukkit nie stanowi wi\u0119kszego problemu, odpowiednia instrukcja jest dost\u0119pna na stronie <noindex><a rel=\"nofollow\" href=\"https:\/\/bukkit.gamepedia.com\/Setting_up_a_server\">GamePedia<\/a><\/noindex>. Ale to nie ma sensu, poniewa\u017c od 2014 roku zesp\u00f3\u0142 Bukkit uleg\u0142 rozk\u0142adowi, a programi\u015bci projektu zostali pracownikami Mojang Studios, a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bukkit\">repozytorium<\/a><\/noindex> projekt zosta\u0142 porzucony. Tak wi\u0119c, Bukkit jest de facto martwy, a warto zwr\u00f3ci\u0107 uwag\u0119 na dwa nast\u0119pne projekty.<\/p>\n<h3>SpigotMC<\/h3>\n<p>\nAby u\u0142atwi\u0107 \u017cycie programistom wtyczek, istnia\u0142a potrzeba API, kt\u00f3re pozwoli na interakcj\u0119 ze \u015bwiatem gry. T\u0119 potrzeb\u0119 zaspokoili tw\u00f3rcy <noindex><a rel=\"nofollow\" href=\"https:\/\/getbukkit.org\/download\/spigot\">Spigot<\/a><\/noindex>, bazuj\u0105c na j\u0105drze Bukkit i przerabiaj\u0105c je, aby osi\u0105gn\u0105\u0107 lepsz\u0105 niezawodno\u015b\u0107 i wydajno\u015b\u0107. Niemniej jednak, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SpigotMC\/Spigot\">repozytorium Git<\/a><\/noindex> projekt zosta\u0142 zablokowany w zwi\u0105zku z Ustaw\u0105 o prawach autorskich w erze cyfrowej (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Digital_Millennium_Copyright_Act#:~:text=DMCA%20(%D0%B0%D0%BD%D0%B3%D0%BB.,%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B8%20%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%B8%20%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D0%B8.\">DMCA<\/a><\/noindex>), i nie mo\u017cna pobra\u0107 stamt\u0105d \u017ar\u00f3de\u0142.<\/p>\n<p>Obecnie SpigotMC jest aktywnie rozwijany i wykorzystywany. Wspiera wszystkie wtyczki stworzone dla Bukkit, jednak nie jest z nim wstecznie kompatybilny. Aby obej\u015b\u0107 zakaz DMCA Takedown, stworzono elegancki spos\u00f3b o nazwie BuildTools. To narz\u0119dzie eliminuje potrzeb\u0119 dystrybucji skompilowanej aplikacji i pozwala u\u017cytkownikom na kompilacj\u0119 Spigot, CraftBukkit i Bukkit z kodu \u017ar\u00f3d\u0142owego. Wszystko to czyni zakaz DMCA bezsensownym.<\/p>\n<h3>PaperMC<\/h3>\n<p>\nWydawa\u0142oby si\u0119, \u017ce wszystko jest w porz\u0105dku, a Spigot sta\u0142 si\u0119 \u015bwietnym wyborem. Ale niekt\u00f3rzy entuzja\u015bci uznali, \u017ce to za ma\u0142o i stworzyli sw\u00f3j w\u0142asny fork Spigota \"na sterydach\". Na <noindex><a rel=\"nofollow\" href=\"https:\/\/papermc.io\/\">Cz\u0119\u015b\u0107 2: laboratoria<\/a><\/noindex> kluczow\u0105 cech\u0105 jest, \u017ce \"It's stupid fast\". Rozwini\u0119te <noindex><a rel=\"nofollow\" href=\"https:\/\/papermc.io\/community\">spo\u0142eczno\u015b\u0107<\/a><\/noindex> pozwala na szybkie rozwi\u0105zywanie pojawiaj\u0105cych si\u0119 problem\u00f3w, a rozszerzone API umo\u017cliwia tworzenie interesuj\u0105cych wtyczek. Uruchomienie PaperMC mo\u017cna zrealizowa\u0107 jedn\u0105 prost\u0105 komend\u0105, przedstawion\u0105 w <noindex><a rel=\"nofollow\" href=\"https:\/\/paper.readthedocs.io\/en\/latest\/server\/getting-started.html\">dokumentacji<\/a><\/noindex>. <\/p>\n<p>Z kompatybilno\u015bci\u0105 w PaperMC jest wszystko w porz\u0105dku, wi\u0119c napisane wtyczki pod SpigotMC \u0142atwo zadziaj\u0105 tak\u017ce na PaperMC, ale bez oficjalnego wsparcia. Wsteczna kompatybilno\u015b\u0107 ze SpigotMC r\u00f3wnie\u017c jest obecna. Teraz, gdy wymienili\u015bmy r\u00f3\u017cne sposoby tworzenia serwer\u00f3w, przejd\u017amy do problem\u00f3w wydajno\u015bci, kt\u00f3re mog\u0105 si\u0119 pojawi\u0107.<\/p>\n<h2>Problemy i rozwi\u0105zania<\/h2>\n<p>\nNajwa\u017cniejsze, co nale\u017cy zrozumie\u0107, to to, \u017ce wszystko, co dotyczy przetwarzania \u015bwiata gry, b\u0119dzie obs\u0142ugiwane tylko na jednym rdzeniu fizycznego serwera. Tak wi\u0119c, je\u015bli masz \u015bwietny serwer z dziesi\u0119cioma rdzeniami obliczeniowymi, obci\u0105\u017cone b\u0119dzie tylko jedno. Pozosta\u0142e b\u0119d\u0105 w rzeczywisto\u015bci bezczynne. Taka jest architektura aplikacji, i nic z tym nie zrobisz. Przy wyborze serwera nale\u017cy zwr\u00f3ci\u0107 uwag\u0119 nie na liczb\u0119 rdzeni, lecz na cz\u0119stotliwo\u015b\u0107 taktowania. Im wy\u017csza, tym lepsza wydajno\u015b\u0107.<\/p>\n<p>Je\u015bli chodzi o pytanie o ilo\u015b\u0107 pami\u0119ci RAM, nale\u017cy uwzgl\u0119dni\u0107 nast\u0119puj\u0105ce wska\u017aniki:<\/p>\n<ul>\n<li>planowana liczba graczy;<\/li>\n<li>planowana liczba \u015bwiat\u00f3w na serwerze;<\/li>\n<li>rozmiar ka\u017cdego \u015bwiata.<\/li>\n<\/ul>\n<p>\nNale\u017cy pami\u0119ta\u0107, \u017ce aplikacji Java zawsze potrzebny jest zapas pami\u0119ci RAM. Je\u015bli przewidujesz zu\u017cycie pami\u0119ci na poziomie 8 gigabajt\u00f3w, to w rzeczywisto\u015bci powiniene\u015b mie\u0107 12. Liczby s\u0105 orientacyjne, ale zasada si\u0119 nie zmienia.<\/p>\n<p>Aby uruchomi\u0107 cz\u0119\u015b\u0107 serwerow\u0105, zaleca si\u0119 skorzystanie z flag wymienionych w artykule <noindex><a rel=\"nofollow\" href=\"https:\/\/aikar.co\/2018\/07\/02\/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft\/\">Tuning the JVM \u2013 G1GC Garbage Collector Flags for Minecraft<\/a><\/noindex>. Ta \"czarna magia\" pozwala serwerowi prawid\u0142owo skonfigurowa\u0107 \"zbieracza \u015bmieci\" i optymalizuje wykorzystanie pami\u0119ci RAM. Nie nale\u017cy przydziela\u0107 wi\u0119cej pami\u0119ci, ni\u017c serwer faktycznie zu\u017cywa przy szczytowym obci\u0105\u017ceniu graczy.<\/p>\n<h3>Generacja mapy blok\u00f3w<\/h3>\n<blockquote><p><i>\u201eCzy naprawd\u0119 uwa\u017casz, \u017ce Ksi\u0119\u017cyc istnieje tylko wtedy, gdy na niego patrzysz?\u201d (Albert Einstein)<\/i><\/p><\/blockquote>\n<p>Ca\u0142kowicie nowy serwer. Gdy gracz po raz pierwszy udanie si\u0119 po\u0142\u0105czy, posta\u0107 gry pojawia si\u0119 w wsp\u00f3lnej strefie zbioru (spawn). To jedyne miejsce, gdzie \u015bwiat gry jest wst\u0119pnie generowany przez serwer. W tym momencie klient sprawdza ustawienia, a kluczowym parametrem jest zasi\u0119g rysowania. Mierzy si\u0119 go w chunkach (obszar mapy 16\u00d716 i wysoko\u015bci 256 blok\u00f3w). Ilo\u015b\u0107 chunk\u00f3w, kt\u00f3ra tam jest podana, dok\u0142adnie tyle b\u0119dzie za\u017c\u0105dane od serwera.<\/p>\n<p>Na serwerze przechowywana jest globalna mapa \u015bwiata, a je\u015bli w punkcie spawnu postaci gracza nie ma jeszcze wygenerowanych blok\u00f3w, serwer dynamicznie je generuje i zapisuje. To nie tylko wymaga du\u017cych zasob\u00f3w obliczeniowych, ale tak\u017ce nieustannie zwi\u0119ksza rozmiar mapy \u015bwiata. Na jednym z najstarszych anarchicznych serwer\u00f3w <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/2b2t\/\">2b2t<\/a><\/noindex> (2builders2tools) rozmiar mapy przekroczy\u0142 ju\u017c 8 TB, a granica \u015bwiata przebiega na poziomie 30 milion\u00f3w blok\u00f3w. Z tym serwerem zwi\u0105zane s\u0105 tysi\u0105ce historii i zas\u0142uguje na osobny artyku\u0142 w serii artyku\u0142\u00f3w.<\/p>\n<p>Generowanie \u015bwiata wok\u00f3\u0142 jednego gracza nie stanowi problemu. Generowanie \u015bwiata wok\u00f3\u0142 setki graczy spowoduje niewielkie spowolnienia serwera przez kr\u00f3tki czas, po czym obci\u0105\u017cenie spadnie. Generowanie \u015bwiata na zasi\u0119g renderowania klienta wok\u00f3\u0142 tysi\u0105ca graczy mo\u017ce ju\u017c 'zrujnowa\u0107' serwer i wyrzuci\u0107 wszystkich klient\u00f3w z powodu przekroczenia limitu czasu. <\/p>\n<blockquote><p>W oprogramowaniu serwera istnieje taki parametr jak <b>TPS<\/b> (Ticks per Server \u2014 takty na sekund\u0119). Standardowo 1 takt trwa 50 ms. (1 sekunda rzeczywistego \u015bwiata odpowiada 20 taktom \u015bwiata gry). Je\u015bli czas przetwarzania jednego taktu wzro\u015bnie do 60 sekund \u2014 aplikacja serwera zostanie zamkni\u0119ta, wyrzucaj\u0105c wszystkich graczy.<\/p><\/blockquote>\n<p>Rozwi\u0105zaniem jest ograniczenie \u015bwiata do okre\u015blonych wsp\u00f3\u0142rz\u0119dnych i wykonanie wst\u0119pnej generacji blok\u00f3w. Dzi\u0119ki temu nie ma potrzeby dynamicznej generacji w trakcie gry, a serwer wystarczy, aby przeczyta\u0142 ju\u017c istniej\u0105c\u0105 map\u0119. Oba problemy rozwi\u0105zuje jeden plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.spigotmc.org\/resources\/worldborder.60905\/?__cf_chl_jschl_tk__=d0f9c4723baac27d22ed5a4d6a0adc08a784d221-1591168685-0-Aa76TEnYS274L154Kyt38UoKv_3eODSH8ppWyfcy8S4YlE2p-ambsAYbumtickms5Q0JoSK-cM7PL0SMlPuWOEx2ytqJKKyZXfLbSfiR4SWeF5ytN0k2vazFJUQtvtZe9EzMSgvGNiK5j9Q_sgL7vCLZKLWpByNJKds_hg25oUpdiYewb2rF7qA8n6E5Mr0yHXCaonPsz-tiE5wbIuVcSQBsjgCgBJ27zWqEZLs3_VUVL00yRGpSZKDd-f2eC_8x8e8x7ymOgmgGPjPMJAwmCDz1k1P5BFKAOZ25KEYVfm0EzYnAp-001ExJbj4KAYveVw\">WorldBorder<\/a><\/noindex>.<\/p>\n<p>Naj\u0142atwiej jest ustawi\u0107 granic\u0119 \u015bwiata w postaci okr\u0119gu wzgl\u0119dem punktu spawnu (chocia\u017c mo\u017cna ustawi\u0107 j\u0105 w dowolnym kszta\u0142cie) przy u\u017cyciu jednego polecenia:<\/p>\n<pre><code class=\"plaintext\">\/wb set &lt;\u0440\u0430\u0434\u0438\u0443\u0441 \u0432 \u0431\u043b\u043e\u043a\u0430\u0445&gt; spawn<\/code><\/pre>\n<p>\nJe\u015bli posta\u0107 gracza spr\u00f3buje przekroczy\u0107 granic\u0119, zostanie odes\u0142ana o kilka blok\u00f3w wstecz. Je\u015bli zrobi to kilka razy w ograniczonym czasie, naruszyciel zostanie przymusowo teleportowany do punktu respawnu. Wst\u0119pna generacja \u015bwiata wykonuje si\u0119 jeszcze pro\u015bciej, poleceniem:<\/p>\n<pre><code class=\"plaintext\">\/wb fill<\/code><\/pre>\n<p>\nPoniewa\u017c dzia\u0142anie to mo\u017ce potencjalnie wp\u0142yn\u0105\u0107 na graczy znajduj\u0105cych si\u0119 na serwerze, nie zapomnij potwierdzi\u0107 jego wykonania:<\/p>\n<pre><code class=\"plaintext\">\/wb confirm<\/code><\/pre>\n<p>\nW sumie, aby wygenerowa\u0107 \u015bwiat o promieniu 5000 blok\u00f3w (~40 miliard\u00f3w blok\u00f3w), zaj\u0119\u0142o to oko\u0142o 2 godziny na procesorze Intel\u00ae Xeon\u00ae Gold 6240. Dlatego, je\u015bli chcesz uruchomi\u0107 pre-generacj\u0119 wi\u0119kszej mapy, uwzgl\u0119dnij, \u017ce ten proces zajmie sporo czasu, a TPS serwera zostanie powa\u017cnie zmniejszone. Ponadto pami\u0119taj, \u017ce nawet promie\u0144 5000 blok\u00f3w b\u0119dzie wymaga\u0142 oko\u0142o 2 GB miejsca na dysku.<\/p>\n<p>Mimo \u017ce ostateczna wersja wtyczki zosta\u0142a opracowana dla Minecrafta wersji 1.14, do\u015bwiadczalnie stwierdzono, \u017ce dzia\u0142a \u015bwietnie tak\u017ce w p\u00f3\u017aniejszych wersjach. Pe\u0142na lista komend z wyja\u015bnieniami jest dost\u0119pna <noindex><a rel=\"nofollow\" href=\"https:\/\/www.spigotmc.org\/threads\/worldborder.339635\/#post-3162179\">na forum wtyczki<\/a><\/noindex>.<\/p>\n<h3>Bloki problematyczne<\/h3>\n<p>\nRodzaj\u00f3w blok\u00f3w w Minecraft jest wiele. Chcieliby\u015bmy jednak zwr\u00f3ci\u0107 uwag\u0119 czytelnik\u00f3w na taki blok jak <b>TNT<\/b>. Jak wskazuje nazwa, blok ten jest materia\u0142em wybuchowym. <i>(uwaga redakcji \u2014 to przedmiot wirtualnego \u015bwiata i nie ma nic wsp\u00f3lnego z prawdziwymi materia\u0142ami wybuchowymi)<\/i>. Jego cech\u0105 jest to, \u017ce w momencie aktywacji zaczyna na niego dzia\u0142a\u0107 si\u0142a grawitacji. Zmusza to serwer do obliczenia wszystkich wsp\u00f3\u0142rz\u0119dnych, je\u015bli w tym momencie blok zaczyna opada\u0107.<\/p>\n<p>Je\u015bli jest kilka blok\u00f3w TNT, detonacja jednego bloku wywo\u0142uje detonacj\u0119 i w\u0142\u0105czenie grawitacji s\u0105siednich blok\u00f3w, rozrzucaj\u0105c je na wszystkie strony. Ca\u0142a ta pi\u0119kna mechanika po stronie serwera wygl\u0105da jak wiele operacji obliczaj\u0105cych trajektori\u0119 ka\u017cdego z blok\u00f3w oraz interakcje z s\u0105siednimi blokami. Zadanie to jest niezwykle zasobo\u017cerne, co ka\u017cdy mo\u017ce \u0142atwo sprawdzi\u0107. Wygeneruj i zdetonuj sze\u015bcian z blok\u00f3w TNT o wymiarach co najmniej 30x30x30. A je\u015bli my\u015bla\u0142e\u015b, \u017ce masz dobry, mocny komputer gamingowy, to si\u0119 bardzo myli\u0142e\u015b \ud83d\ude09<\/p>\n<pre><code class=\"plaintext\">\/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"Optymalizacja serwera Minecraft\" src=\"\/wp-content\/uploads\/2020\/07\/9e907406e74f3e773dd49148c8a9f9d8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPodobny \"eksperyment\" na serwerze z Intel\u00ae Xeon\u00ae Gold 6240 spowodowa\u0142 powa\u017cny \"spadek\" TPS oraz 80% obci\u0105\u017cenie CPU przez ca\u0142y czas detonacji blok\u00f3w. A wi\u0119c, je\u015bli kt\u00f3rykolwiek z graczy b\u0119dzie w stanie to zrobi\u0107, problem z wydajno\u015bci\u0105 dotknie wszystkich graczy znajduj\u0105cych si\u0119 na serwerze.<\/p>\n<p>Jeszcze bardziej surowa wersja \u2014 <b>Kryszta\u0142y Kra\u0144ca<\/b>. Je\u015bli TNT rzeczywi\u015bcie wybucha sekwencyjnie, Kryszta\u0142y Kra\u0144ca detonuj\u0105 wszystkie jednocze\u015bnie, co w teorii mo\u017ce ca\u0142kowicie zatrzyma\u0107 dzia\u0142anie aplikacji serwerowej.<\/p>\n<p>Unikn\u0105\u0107 tego scenariusza mo\u017cna tylko ca\u0142kowicie zakazuj\u0105c u\u017cywania tych blok\u00f3w w \u015bwiecie gry. Na przyk\u0142ad, za pomoc\u0105 wtyczki <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.bukkit.org\/projects\/worldguard\">WorldGuard<\/a><\/noindex>. Zauwa\u017c, \u017ce sama wtyczka nie dzia\u0142a bez innej wtyczki <noindex><a rel=\"nofollow\" href=\"https:\/\/dev.bukkit.org\/projects\/worldedit\/files\/\">WorldEdit<\/a><\/noindex>. Wi\u0119c najpierw instalujesz WorldEdit, a potem WorldGuard.<\/p>\n<h2>Podsumowanie<\/h2>\n<p>\nZarz\u0105dzanie serwerem gry to nie\u0142atwe zadanie. Trudno\u015bci i spadki wydajno\u015bci b\u0119d\u0105 czeka\u0107 na ka\u017cdym kroku, szczeg\u00f3lnie gdy nie bierze si\u0119 pod uwag\u0119 samej mechaniki rozgrywki. Nie da si\u0119 przewidzie\u0107 wszystkiego, poniewa\u017c gracze czasami s\u0105 bardzo pomys\u0142owi w pr\u00f3bach zmuszenia serwera do wykonania czego\u015b, do czego nie by\u0142 przeznaczony. Tylko rozs\u0105dna r\u00f3wnowaga mi\u0119dzy ryzykiem a narzuconymi ograniczeniami pozwoli serwerowi pracowa\u0107 w trybie ci\u0105g\u0142ym i nie obni\u017ca\u0107 swojej wydajno\u015bci do krytycznych warto\u015bci.<\/p>\n<p>Na kwarantannie niekt\u00f3rzy z naszych pracownik\u00f3w st\u0119sknili si\u0119 za ulubionymi biurami i postanowili odtworzy\u0107 je w Minecraft. Ty r\u00f3wnie\u017c masz szans\u0119 do nas zajrze\u0107, nie ryzykuj\u0105c w\u0142asnym zdrowiem i nie trac\u0105c czasu na podr\u00f3\u017c. <\/p>\n<blockquote><p>W tym celu zapraszamy wszystkich ch\u0119tnych na nasz serwer <b>minecraft.selectel.ru<\/b> (wersja klienta 1.15.2), gdzie odtworzono centra danych Kwiatowa-1 i Kwiatowa-2. Nie zapomnij zgodzi\u0107 si\u0119 na pobranie dodatkowych zasob\u00f3w, s\u0105 one konieczne do poprawnego wy\u015bwietlenia niekt\u00f3rych lokalizacji.<\/p>\n<p>Czekaj\u0105 na Ciebie questy, kody promocyjne, \u201episanki\u201d i mi\u0142e rozmowy.<\/p><\/blockquote>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/selectel\/blog\/510232\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 Minecraft, \u043e\u0434\u043d\u0430\u043a\u043e \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u043f\u0440\u043e\u0448\u043b\u043e 5 \u043b\u0435\u0442 \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. \u0414\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u043e\u043b\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0438\u0433\u0440\u044b. \u0417\u0430 \u0441\u0432\u043e\u044e 9-\u043b\u0435\u0442\u043d\u044e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e (\u0435\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0442 \u0434\u0430\u0442\u044b \u0440\u0435\u043b\u0438\u0437\u0430) Minecraft \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u043b\u043e\u043d\u043d\u0438\u043a\u043e\u0432 \u0438 \u0445\u0435\u0439\u0442\u0435\u0440\u043e\u0432 \u043a\u0430\u043a \u0441\u0440\u0435\u0434\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u0442\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87939,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87938","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435 \u043c\u044b \u0443\u0436\u0435\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/optimizacziya-servera-minecraft\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Minecraft | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435 \u043c\u044b \u0443\u0436\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/optimizacziya-servera-minecraft\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-11T23:41:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-11T23:41:59+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Optymalizacja serwera Minecraft | ProHoster","description":"Na naszym blogu ju\u017c","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/optimizacziya-servera-minecraft","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 Minecraft | ProHoster","og:description":"\u0412 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435 \u043c\u044b \u0443\u0436\u0435","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/optimizacziya-servera-minecraft","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-11T23:41:59+00:00","article:modified_time":"2020-07-11T23:41:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87938","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:40:35","updated":"2022-09-30 12:41:29","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87938","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=87938"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/87938\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/87939"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=87938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=87938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=87938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}