{"id":37812,"date":"2019-10-31T22:19:55","date_gmt":"2019-10-31T19:19:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov\/"},"modified":"2019-10-31T22:19:55","modified_gmt":"2019-10-31T19:19:55","slug":"megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov","title":{"rendered":"Megapakett: kuidas suudavad Factorio arendajad lahendada 200 m\u00e4ngija m\u00e4ngimise probleemid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Megapakett: kuidas suudavad Factorio arendajad lahendada 200 m\u00e4ngija m\u00e4ngimise probleemid\" src=\"\/wp-content\/uploads\/2019\/09\/135544365299791de479555734645ef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSel aasta mais osalesin m\u00e4ngijana <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d_DlvkTK9hU\">KatherineOfSky MMO-s\u00fcndmusel<\/a><\/noindex>. M\u00e4rkasin, et kui m\u00e4ngijate arv j\u00f5uab teatud piirini, katkeb osa neist iga paari minuti tagant. \u00d5nneks teie jaoks (kuid mitte minu jaoks) olin ma \u00fcks nendest m\u00e4ngijatest, kes katkestas <b>igal korral<\/b>, isegi hea \u00fchenduse korral. V\u00f5tsin seda kui isiklikku v\u00e4ljakutset ja hakkasin otsima probleemi p\u00f5hjuseid. P\u00e4rast kolme n\u00e4dala pikkust t\u00f5rkeotsingut, testimist ja parandusi suudeti viga l\u00f5puks k\u00f5rvaldada, kuid see teekond polnud sugugi lihtne.<\/p>\n<p>Mitme m\u00e4ngija m\u00e4ngude probleemide j\u00e4lgimine on v\u00e4ga keeruline. Need tekivad tavaliselt v\u00e4ga spetsiifiliste v\u00f5rguparameetrite ja m\u00e4ngu konkreetsete tingimuste korral (antud juhul - \u00fcle 200 m\u00e4ngija olemasolu). Isegi kui probleemi \u00f5nnestub korrata, ei saa seda korralikult siluda, kuna kontrollpunktide sisestamine peatab m\u00e4ngu, segab ajastust ja viib tavaliselt \u00fchenduse katkestamiseni ajapiirangute t\u00f5ttu. Kuid t\u00e4nu visadusele ja suurep\u00e4rasele t\u00f6\u00f6riistale nimega <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jagt\/clumsy\">clumsy<\/a><\/noindex> \u00f5nnestus mul v\u00e4lja selgitada, mis toimub.<\/p>\n<p>Kokkuv\u00f5ttes: simuleerimise viivituste viga ja mittet\u00e4ielik rakendamine p\u00f5hjustas olukorra, kus klient pidi m\u00f5nikord \u00fches ts\u00fcklis saatma v\u00f5rku paketi, mis sisaldas umbes 400 m\u00e4nguobjekti tegevust (me nimetame seda \u201emegapakendiks\u201c). P\u00e4rast seda peab server mitte ainult k\u00f5iki neid sisendi tegevusi \u00f5igesti vastu v\u00f5tma, vaid ka need k\u00f5igile teistele klientidele edastama. Kui sul on 200 klienti, muutub see kiiresti probleemiks. Serverikanal t\u00e4itub kiiresti, mis viib pakettide kadumiseni ja n\u00f5utud pakettide kaskaadi. Sisendi viivitamine toob kaasa veelgi rohkem kliente, kes hakkavad megapakette saatma, ja nende laviin suureneb veelgi. \u00d5nnelikud kliendid suudavad taastuda, k\u00f5ik teised aga \u201elangevad v\u00e4lja\u201c.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"Megapakett: kuidas suudavad Factorio arendajad lahendada 200 m\u00e4ngija m\u00e4ngimise probleemid\" src=\"\/wp-content\/uploads\/2019\/09\/ff1a60d55eb6f5a4dc7be4b826d747f0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nProbleem oli piisavalt fundamentaalne ja selle lahendamine v\u00f5ttis mul kaks n\u00e4dalat. See on \u00fcsna tehniline, seet\u00f5ttu selgitan allpool m\u00f5ned olulisemad tehnilised \u00fcksikasjad. Kuid esmalt peate teadma, et alates versioonist 0.17.54, mis ilmus 4. juunil, on v\u00f5rgu\u00fchenduse probleemide korral mitmikm\u00e4ngu stabiilsus paranenud ning viivituste varjamine on palju v\u00e4hem h\u00e4iriv (v\u00e4hem t\u00f5rkeid ja teleportimist). Lisaks olen muutnud viivituste varjamise meetodit lahingus ning loodan, et need on seel\u00e4bi natuke sujuvamad.<\/p>\n<h3>Mitmikm\u00e4ngu megapakett \u2014 tehnilised \u00fcksikasjad<\/h3>\n<p>\nLihtsalt seletades t\u00f6\u00f6tab m\u00e4ngus mitmikm\u00e4ng j\u00e4rgmiselt: k\u00f5ik kliendid simuleerivad m\u00e4ngu seisundit, saates ja vastu v\u00f5ttes ainult m\u00e4ngija sisendeid (mida nimetatakse 'sisendtoiminguteks', <i>Input Actions<\/i>). Serveri peamine \u00fclesanne on tagada <i>Input Actions<\/i> ja kontrollida, et k\u00f5ik kliendid teevad \u00fches taktis samu toiminguid. Selle kohta saate rohkem lugeda postitusest <noindex><a rel=\"nofollow\" href=\"https:\/\/www.factorio.com\/blog\/post\/fff-149\">FFF-149<\/a><\/noindex>.<\/p>\n<p>Kuna server peab otsustama, milliseid toiminguid teha, liiguvad m\u00e4ngija tegevused ligikaudu j\u00e4rgmise tee kaudu: m\u00e4ngija tegevus -&gt; m\u00e4nguklient -&gt; v\u00f5rk -&gt; server -&gt; v\u00f5rk -&gt; m\u00e4nguklient. See t\u00e4hendab, et iga m\u00e4ngija tegevus t\u00e4idetakse alles p\u00e4rast seda, kui see on teinud edas-tagasi tee \u00fcle v\u00f5rgu. Seet\u00f5ttu n\u00e4eks m\u00e4ng v\u00e4lja \u00e4\u00e4rmiselt aeglane, mist\u00f5ttu peaaegu kohe p\u00e4rast mitmikm\u00e4ngu ilmumist m\u00e4ngus tutvustati latentsuse varjestamise mehhanismi. Latentsuse varjestamine simuleerib m\u00e4ngija sisendit, arvestamata teiste m\u00e4ngijate tegevusi ja serveri otsuseid.<\/p>\n<p><img decoding=\"async\" alt=\"Megapakett: kuidas suudavad Factorio arendajad lahendada 200 m\u00e4ngija m\u00e4ngimise probleemid\" src=\"\/wp-content\/uploads\/2019\/09\/0b66a3b07d6aa2ab1d2329d782c78615.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFactorios on m\u00e4ngu olek <i>M\u00e4ngu olek<\/i> \u2014 see on t\u00e4ielik kaardi, m\u00e4ngija, \u00fcksuste ja k\u00f5ige muu seisund. Seda simuleeritakse m\u00e4\u00e4ratult k\u00f5igis klientides serverilt saadud tegevuste p\u00f5hjal. M\u00e4ngu olek on p\u00fcha, ja kui see kunagi hakkab eristuma serverist v\u00f5i m\u00f5nest muust kliendist, tekib des\u00fcnkroonsus.<\/p>\n<p>Lisaks <i>M\u00e4ngu olek<\/i> meil on latentsuse olek <i>Latentsuse olek<\/i>. See sisaldab v\u00e4ikest alamhulka p\u00f5hiseisundist. <i>Latentsuse olek<\/i> ei ole p\u00fcha ja lihtsalt kujutab ette, milline on m\u00e4ngu seis tulevikus, p\u00f5hinedes m\u00e4ngija sisestatud andmetele <i>Input Actions<\/i>.<\/p>\n<p>Selleks salvestame koostatud koopiat <i>Input Actions<\/i> viivituste j\u00e4rjekorras.<\/p>\n<p><img decoding=\"async\" alt=\"Megapakett: kuidas suudavad Factorio arendajad lahendada 200 m\u00e4ngija m\u00e4ngimise probleemid\" src=\"\/wp-content\/uploads\/2019\/09\/31e43263d1d2bfc79700730978fcd02a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEhkki l\u00f5ppprotsess kliendi poole n\u00e4eb v\u00e4lja umbes nii:<\/p>\n<ol>\n<li>Kasutame <i>Input Actions<\/i> k\u00f5igi m\u00e4ngijate jaoks <i>M\u00e4ngu olek<\/i> niimoodi, nagu need sisestusteaded serverilt saadi.<\/li>\n<li>Kustutame k\u00f5ik j\u00e4rjekorrast viivitused <i>Input Actions<\/i>, mis serveri andmetel on juba rakendatud <i>M\u00e4ngu olek<\/i>.<\/li>\n<li>Kustutame <i>Latentsuse olek<\/i> ja l\u00e4htestame selle, et see n\u00e4eks v\u00e4lja just selline, nagu <i>M\u00e4ngu olek<\/i>.<\/li>\n<li>Rakendame k\u00f5ik tegevused viivituste j\u00e4rjekorrast <i>Latentsuse olek<\/i>.<\/li>\n<li>P\u00f5hinedes andmetele <i>M\u00e4ngu olek<\/i> ja <i>Latentsuse olek<\/i> renderdame m\u00e4ngu m\u00e4ngijale.<\/li>\n<\/ol>\n<p>\nK\u00f5ike seda korratakse igas taktis.<\/p>\n<p>Liialt keeruline? \u00c4rge muretsege, see ei ole veel k\u00f5ik. Interneti-\u00fchenduste ebaregulaarsete omaduste kompenseerimiseks oleme loonud kaks mehhanismi:<\/p>\n<ul>\n<li>Vahelej\u00e4tetud taktide puhul: kui server otsustab, et <i>Input Actions<\/i> teostatakse m\u00e4ngu takt, siis kui ta ei saanud <i>Input Actions<\/i> mingi m\u00e4ngija andmeid (n\u00e4iteks suurenenud viivituse t\u00f5ttu), siis ta ei oota, vaid teatab sellele kliendile: \"ma ei arvestanud sinu <i>Input Actions<\/i>, p\u00fc\u00fcan need j\u00e4rgmistesse takti lisada.\" See on tehtud selleks, et \u00fche m\u00e4ngija \u00fchenduse (v\u00f5i arvuti) probleemide t\u00f5ttu ei aeglustuks kaardi uuendamine k\u00f5igi teiste jaoks. Tasub m\u00e4rkida, et <i>Input Actions<\/i> ei ignoreerita, vaid lihtsalt l\u00fckatakse edasi.<\/li>\n<li>\u00dcksuse tagasip\u00f6\u00f6rdumise latentsus: server p\u00fc\u00fcab arvata, milline on andmete tagasisaatmise latentsus kliendi ja serveri vahel iga kliendi jaoks. Iga 5 sekundi j\u00e4rel arutab ta vajadusel kliendiga uut latentsust (s\u00f5ltuvalt sellest, kuidas \u00fchendus on minevikus k\u00e4itunud) ning vastavalt suurendab v\u00f5i v\u00e4hendab tagasisaatmise latentsust.<\/li>\n<\/ul>\n<p>\nNeed mehhanismid iseenesest on \u00fcsna lihtsad, kuid kui nad t\u00f6\u00f6tavad koos (mis sageli juhtub \u00fchenduse probleemide korral), muutub koodi loogika keeruliseks ja t\u00e4is piirjuhtumeid. Lisaks, kui need mehhanismid peavad sekkuma, peavad server ja viivituste j\u00e4rjekord \u00f5igesti rakendama erilist <i>Sisendi tegevus<\/i> nimetusega <i>StopMovementInTheNextTick<\/i>. T\u00e4nu sellele, kui esinevad \u00fchenduse probleemid, ei jookse tegelane iseenesest (n\u00e4iteks rongi alla).<\/p>\n<p>N\u00fc\u00fcd on vaja selgitada, kuidas olendite valimine t\u00f6\u00f6tab. \u00dcks edastatavatest t\u00fc\u00fcpidest <i>Sisendi tegevus<\/i> on olendi valimise oleku muutmine. See teatab k\u00f5igile, millisele olendile m\u00e4ngija hiirekursor osutab. Nagu v\u00f5ib aru saada, on see \u00fcks k\u00f5ige sagedasemaid sisendite tehinguid, mida kliendid saadavad, seega oleme selle kanali ribalaiuse kokkuhoiu huvides optimeerinud, et see tooks nii v\u00e4he ruumi kui v\u00f5imalik. See on rakendatud nii, et iga olendi valimisel ei salvestata mitte absoluutse, t\u00e4psete kaardikoordinaate, vaid salvestatakse madal t\u00e4psuseline suhteline nihke eelnevast valikust. See toimib h\u00e4sti, kuna hiirega valimine toimub tavaliselt v\u00e4ga l\u00e4hedal varasemale valikule. Selle t\u00f5ttu on kaks olulist n\u00f5uet: <i>Input Actions<\/i> kunagi ei tohi vahele j\u00e4tta ja neid tuleb t\u00e4ita \u00f5iges j\u00e4rjekorras. Need n\u00f5uded on t\u00e4idetud <i>M\u00e4ngu olek<\/i>. Kuid kuna \u00fclesanne <i>Latency state<\/i> on n\u00e4ha v\u00e4lja piisavalt hea m\u00e4ngijale, siis viivituste ajal ei ole need t\u00e4idetud. <i>Latentsuse olek<\/i> ei v\u00f5ta arvesse <noindex><a rel=\"nofollow\" href=\"https:\/\/cdn.factorio.com\/assets\/img\/blog\/fff-302-megapacket-commit.jpg\">paljusid piirjuhtumeid<\/a><\/noindex>, mis on seotud vahejuhtumite ja edasi-tagasi edastusviivitustega.<\/p>\n<p>Sa v\u00f5iksid juba aimata, kuhu see k\u00f5ik viib. L\u00f5finally me hakkame n\u00e4gema megapaketi probleemide p\u00f5hjuseid. Probleemi juured seisnevad selles, et otsustamisel, kas edastada valiku muutmise tegu, tugineb olendi valimise loogika <i>Latentsuse olek<\/i>, kuid see seisund ei sisalda alati \u00f5iget teavet. Seet\u00f5ttu genereeritakse megapakett umbes nii:<\/p>\n<ol>\n<li>M\u00e4ngijal on \u00fchenduse probleemid.<\/li>\n<li>Kasukste muutmise ja edastusviivituse regulatsiooni mehhanismid astuvad m\u00e4ngu.<\/li>\n<li>Viivituste j\u00e4rjekord ei arvesta neid mehhanisme. See toob kaasa asjaolu, et m\u00f5ned teod kustutatakse liiga varakult v\u00f5i esitlets toimivad vale j\u00e4rjekorras, mis p\u00f5hjustab vale <i>Latentsuse olek<\/i>.<\/li>\n<li>M\u00e4ngijal kaob \u00fchenduse probleem ja ta simuleerib, et j\u00e4rgneb serverile, kuni 400 takti.<\/li>\n<li>Igas taktis genereeritakse ja valmistatakse serverile edastamiseks uus tegevuse muutmise tegu.<\/li>\n<li>Kliendi megapakett koosneb \u00fcle 400 olendi valiku muutmisest (ja teiste tegevuste, nagu laskmise ja k\u00f5ndimise seisundid, samuti kannatasid selle probleemi all).<\/li>\n<li>Server saab 400 sisendi toimingut. Kuna tal ei lubata \u00fchtegi sisenditegevust vahele j\u00e4tta, k\u00e4sutab ta k\u00f5iki kliente neid samme tegema ja saadab need \u00fcle v\u00f5rgu.<\/li>\n<\/ol>\n<p>\nIronia seisneb selles, et mehhanism, mis pidi kanaliteed s\u00e4\u00e4stma, p\u00f5hjustas tegelikult tohutuid v\u00f5rgu pakette.<\/p>\n<p>Lahendasime selle probleemi, parendades k\u00f5ik piirjuhtumid uuendamise ja viivituste j\u00e4rjekorra toetamisel. Kuigi see v\u00f5ttis \u00fcsna palju aega, tasus l\u00f5puks k\u00f5ik \u00f5igesti ellu viia, mitte toetuda kiiretele hack'idele.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/466135\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043c\u0430\u0435 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u044f \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 MMO-\u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0438 KatherineOfSky. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u00ab\u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0432\u0430\u0441 (\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f), \u044f \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0435\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u042f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b \u044d\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28381,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37812","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043c\u0430\u0435 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u044f \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 MMO-\u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0438 KatherineOfSky. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u00ab\u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0432\u0430\u0441 (\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f), \u044f \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0435\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u042f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b \u044d\u0442\u043e\" \/>\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\/et\/blog\/administrirovanie\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\u041c\u0435\u0433\u0430\u043f\u0430\u043a\u0435\u0442: \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c Factorio \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u0435\u0440\u043e\u043c \u043d\u0430 200 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043c\u0430\u0435 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u044f \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 MMO-\u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0438 KatherineOfSky. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u00ab\u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0432\u0430\u0441 (\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f), \u044f \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0435\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u042f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b \u044d\u0442\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov\" \/>\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=\"2019-10-31T19:19:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:19:55+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\udd47Meganime: kuidas suudavad Factorio arendajad lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi | ProHoster","description":"Mai alguses osalesin MMO \u00fcritusel KatherineOfSky m\u00e4ngijana. T\u00e4helepanek oli see, et kui m\u00e4ngijate arv j\u00f5uab teatud tasemeni, siis iga paari minuti j\u00e4rel m\u00f5ned neist \"langevad\" v\u00e4lja. Teie \u00f5nneks (aga mitte minu) olin ma \u00fcks neist m\u00e4ngijatest, kes iga kord v\u00e4lja langes, isegi hea \u00fchenduse olemasolul. T\u00f5lgendasin seda","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\u041c\u0435\u0433\u0430\u043f\u0430\u043a\u0435\u0442: \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c Factorio \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0435\u0435\u0440\u043e\u043c \u043d\u0430 200 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 | ProHoster","og:description":"\u0412 \u043c\u0430\u0435 \u044d\u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u044f \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 MMO-\u043c\u0435\u0440\u043e\u043f\u0440\u0438\u044f\u0442\u0438\u0438 KatherineOfSky. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442 \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445 \u00ab\u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0434\u043b\u044f \u0432\u0430\u0441 (\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f), \u044f \u0431\u044b\u043b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0435\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u042f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u044f\u043b \u044d\u0442\u043e","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov","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":"2019-10-31T19:19:55+00:00","article:modified_time":"2019-10-31T19:19:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37812","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":"2026-01-23 19:22:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:20:22","updated":"2026-01-23 19:22:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=37812"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37812\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/28381"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=37812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=37812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=37812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}