{"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 Factorio arendajad suutsid lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Megapakett: kuidas Factorio arendajad suutsid lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi\" src=\"\/wp-content\/uploads\/2019\/09\/135544365299791de479555734645ef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nK\u00e4esoleva aasta mail osalesin m\u00e4ngijana <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d_DlvkTK9hU\">MMO-\u00fcritusel KatherineOfSky<\/a><\/noindex>. M\u00e4rkasin, et kui m\u00e4ngijate arv j\u00f5uab teatud numbrini, viskab osa neist igal paaril minutil m\u00e4ngust v\u00e4lja. Teie r\u00f5\u00f5muks (aga mitte minu jaoks) olin mina \u00fcks neist m\u00e4ngijatest, kes igakord \"kukkus v\u00e4lja\" <b>igal korral<\/b>, isegi hea \u00fchenduse olemasolul. V\u00f5tsin seda isikliku v\u00e4ljakutsena ja hakkasin probleemi p\u00f5hjuseid uurima. Kolme n\u00e4dala debugimise, testimise ja parandamise j\u00e4rel saime l\u00f5puks vea k\u00f5rvaldada, kuid see reis ei olnud sugugi lihtne.<\/p>\n<p>Mitmikm\u00e4ngu probleemide j\u00e4lgimine on v\u00e4ga keeruline. Need tekivad tavaliselt v\u00e4ga spetsiifilistes v\u00f5rguparametrites ja m\u00e4ngu spetsiifilistes olukordades (antud juhul \u2013 \u00fcle 200 m\u00e4ngija olemasolul). Ja isegi kui probleemi suudetakse replikeerida, on selle n\u00f5uetekohane debugeerimine peaaegu v\u00f5imatu, kuna kontrollpunktide lisamine peatab m\u00e4ngu, segab taimerid ja p\u00f5hjustab tavaliselt \u00fchenduse katkemise, kuna ooteaeg on \u00fcletatud. Kuid t\u00e4nu visadusele ja suurep\u00e4rasele t\u00f6\u00f6riistale nimega <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jagt\/clumsy\">clumsy<\/a><\/noindex> suutsin v\u00e4lja selgitada, mis juhtub.<\/p>\n<p>L\u00fchidalt: vea ja semi-funktsionaalse viivituse simulatsiooni rakendamise t\u00f5ttu sattus klient m\u00f5nikord olukorda, kus pidi \u00fche k\u00e4iguga saatma v\u00f5rku paketi, mis koosnes m\u00e4ngija valitud umbes 400 m\u00e4ngujuhtimisest (me nimetame seda \"megapakettideks\"). P\u00e4rast seda peab server \u00f5igesti vastu v\u00f5tma k\u00f5ik need sisenditegevused ja saatma need k\u00f5igile teistele klientidele. Kui sul on 200 klienti, muutub see kiiresti probleemiks. Serveri kanal kipub kiiresti ummistuma, mis toob kaasa pakettide kaotuse ja uuesti n\u00f5utud paketide kaskaadi. Sisenditegevuste viivitamine toob seej\u00e4rel kaasa rohkemate klientide saatmise megapakettidena, ja nende laviin muutub veelgi tugevamaks. \u00d5nnelikud kliendid suudavad taastuda, k\u00f5ik teised \"kukuvad v\u00e4lja\".<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"Megapakett: kuidas Factorio arendajad suutsid lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi\" src=\"\/wp-content\/uploads\/2019\/09\/ff1a60d55eb6f5a4dc7be4b826d747f0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nProbleem oli piisavalt p\u00f5hjalik ning selle lahendamine v\u00f5ttis mul kaks n\u00e4dalat. See on \u00fcsna tehniline, seega selgitan allpool \u00fcksikasjalikult. Kuid k\u00f5igepealt peate teadma, et alates versioonist 0.17.54, mis ilmus 4. juunil, on mitmikm\u00e4ngu \u00fchendus problemaatilisemates tingimustes palju stabiilsem ja viivituste varjamine on oluliselt sujuvam (v\u00e4hem viivitusi ja teleportimist). Lisaks muudab ma viivituste varjamise meetodit lahingus ja loodan, et see teeb need veidi sujuvamaks.<\/p>\n<h3>Mitmikm\u00e4ngu megapakett - tehnilised \u00fcksikasjad<\/h3>\n<p>\nLihtsalt \u00f6eldes t\u00f6\u00f6tab m\u00e4ngus mitmikm\u00e4ng j\u00e4rgmiselt: k\u00f5ik kliendid simuleerivad m\u00e4ngu seisundit, saades ja edastades ainult m\u00e4ngija sisendeid (nimetatakse \"sisendite tegevusteks\", <i>Input Actions<\/i>). Peamine \u00fclesanne serveri puhul on edastada <i>Input Actions<\/i> ja kontrollida, et k\u00f5ik kliendid teevad sama tegevust \u00fches voorus. Selle kohta saab 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 langetama otsuseid, milliseid tegevusi l\u00e4bi viia, liigub m\u00e4ngija tegevus umbes sellist teed: m\u00e4ngija tegevus -&gt; m\u00e4ngikliendi -&gt; v\u00f5rk -&gt; server -&gt; v\u00f5rk -&gt; m\u00e4ngikliendi. See t\u00e4hendab, et iga m\u00e4ngija tegevus toimub alles p\u00e4rast seda, kui see on v\u00f5rgus edasi-tagasi r\u00e4ndanud. Selle t\u00f5ttu n\u00e4iks m\u00e4ng hirmsasti viivitav, seega peaaegu kohe p\u00e4rast mitmikm\u00e4ngu ilmumist m\u00e4ngu, kasutusele viidud viivituste varjamise mehhanism. Viivituste varjamine imiteerib m\u00e4ngija sisendit, ignoreerides teiste m\u00e4ngijate tegevusi ja serveri otsuseid.<\/p>\n<p><img decoding=\"async\" alt=\"Megapakett: kuidas Factorio arendajad suutsid lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi\" src=\"\/wp-content\/uploads\/2019\/09\/0b66a3b07d6aa2ab1d2329d782c78615.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFactorios on m\u00e4ngu olek <i>Game State<\/i> \u2013 see on kaardi, m\u00e4ngija, olendite ja muu t\u00e4ielik olek. Seda simuleeritakse k\u00f5ikides klientides deterministlikult serverilt saadud tegevuste p\u00f5hjal. M\u00e4ngu olek on p\u00fcha ja kui see kunagi serverist v\u00f5i m\u00f5nest teisest kliendist erineb, tekib des\u00fcnkroniseerimine.<\/p>\n<p>Lisaks <i>Game State<\/i> on meil viivituste olek <i>Latency State<\/i>. See sisaldab v\u00e4ikest alamosade kogumit p\u00f5hiolukorrast. <i>Latency State<\/i> see ei ole p\u00fcha ja lihtsalt kujutab ette, milline m\u00e4ngu seisund tulevikus v\u00e4lja n\u00e4eb m\u00e4ngija sisendi p\u00f5hjal. <i>Input Actions<\/i>.<\/p>\n<p>Selleks hoiame me j\u00e4rjekorras toodetud <i>Input Actions<\/i> viivituste koopiat.<\/p>\n<p><img decoding=\"async\" alt=\"Megapakett: kuidas Factorio arendajad suutsid lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi\" src=\"\/wp-content\/uploads\/2019\/09\/31e43263d1d2bfc79700730978fcd02a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSeega, protsessi l\u00f5pus n\u00e4eb kliendi pool v\u00e4lja umbes nii:<\/p>\n<ol>\n<li>Rakendame <i>Input Actions<\/i> k\u00f5iki m\u00e4ngijaid <i>Game State<\/i> niimoodi, nagu need sisestamise toimingud on serverilt saadud.<\/li>\n<li>Kustutame viivituste j\u00e4rjekorrast k\u00f5ik <i>Input Actions<\/i>, mis, serveri andmete kohaselt, on juba rakendatud <i>Game State<\/i>.<\/li>\n<li>Kustutame <i>Latency State<\/i> ja l\u00e4htestame selle, et see n\u00e4eks v\u00e4lja t\u00e4pselt nagu <i>Game State<\/i>.<\/li>\n<li>Rakendame k\u00f5ik viivituste j\u00e4rjekorra toimingud <i>Latency State<\/i>.<\/li>\n<li>Serveri andmete p\u00f5hjal <i>Game State<\/i> ja <i>Latency State<\/i> kujundame m\u00e4ngu m\u00e4ngijale.<\/li>\n<\/ol>\n<p>\nKogu see protsess kordub igas taktis.<\/p>\n<p>Liiga keeruline? \u00c4rge muretsege, see ei ole veel k\u00f5ik. Interneti\u00fchenduse ebastabiilsuse kompenseerimiseks oleme loonud kaks mehhanismi:<\/p>\n<ul>\n<li>Puuduvad taktid: kui server otsustab, et <i>Input Actions<\/i> tuleb teostada m\u00e4ngu taktis, kuid ei ole saanud <i>Input Actions<\/i> m\u00f5nelt m\u00e4ngijalt (n\u00e4iteks suurenenud viivituse t\u00f5ttu), siis ei oota ta, vaid teatab sellele kliendile \"ma ei arvestanud sinu <i>Input Actions<\/i>, p\u00fc\u00fcan need j\u00e4rgmises taktis lisada\". See on tehtud selleks, et \u00fche m\u00e4ngija (v\u00f5i arvuti) \u00fchenduse probleemide t\u00f5ttu ei aeglustuks kaardi uuendamine k\u00f5igi teiste jaoks. Tuleb m\u00e4rkida, et <i>Input Actions<\/i> ei ignoreerita, vaid lihtsalt l\u00fckatakse edasi.<\/li>\n<li>T\u00e4ieliku edasi-tagasi viivituse m\u00f5\u00f5tmine: server p\u00fc\u00fcab oletada, milline on andmeedastuse viivitus edasi-tagasi kliendi ja serveri vahel iga kliendi jaoks. Iga 5 sekundi j\u00e4rel arutab ta vajadusel kliendiga uut viivitust (s\u00f5ltuvalt \u00fchenduse k\u00e4itumisest minevikus) ning vastavalt suurendab v\u00f5i v\u00e4hendab edasi-tagasi andmeedastuse viivitust.<\/li>\n<\/ul>\n<p>\nNeed mehhanismid on enesest \u00fcsna lihtsad, kuid kui neid kasutatakse koos (mis juhtub sageli \u00fchendusprobleemide korral), muutub koodi loogika keeruliseks ja sisaldab palju \u00e4\u00e4rmuslikke juhtumeid. Lisaks, kui need mehhanismid on m\u00e4ngus, peavad server ja viivituste j\u00e4rjekord \u00f5igesti rakendama erilist <i>Sisendi tegevus<\/i> nimega <i>Peata j\u00e4rgmises taktis liikumine<\/i>. T\u00e4nu sellele ei hakka \u00fchenduse probleemide korral karakter ise liikuma (n\u00e4iteks rongi alla).<\/p>\n<p>N\u00fc\u00fcd on vaja teile selgitada, kuidas toimub olendite valik. \u00dcks \u00fclekantud t\u00fc\u00fcpidest <i>Sisendi tegevus<\/i> \u2014 see olekse juriit t&uuml;henduse muutmine. See teavitab k\u00f5iki, millele m\u00e4ngija hiirega osutab. Nagu aru saada, on see \u00fcks k\u00f5ige sagedasemaid sisestuste toiminguid, mida kliendid saadavad, seega oleme selle kanaliv\u00f5imsuse s\u00e4\u00e4stmiseks optimeerinud, et see v\u00f5taks v\u00f5imalikult v\u00e4he ruumi. See on ellu viidud nii: iga olendi valimise korral, mitte absoluutsete, t\u00e4psete kaardikoordinaatide salvestamise asemel, salvestab m\u00e4ng suhteliselt madala t\u00e4psusega nihke eelmisest valikust. See t\u00f6\u00f6tab h\u00e4sti, kuna hiirega valimine toimub tavaliselt eelmisest valikust v\u00e4ga l\u00e4hedal. Sellega kaasnevad kaks olulist n\u00f5uet: <i>Input Actions<\/i> kunagi ei tohi vahele j\u00e4tta ja tuleb j\u00e4rgida \u00f5iget j\u00e4rjestust. Need n\u00f5uded t\u00e4idetakse <i>Game State<\/i>. Kuid kuna \u00fclesanne <i>Latency state<\/i> on \"n\u00e4ha piisavalt hea\" m\u00e4ngija jaoks, ei t\u00e4ideta neid viivitusolukordades. <i>Latency State<\/i> ei arvesta <noindex><a rel=\"nofollow\" href=\"https:\/\/cdn.factorio.com\/assets\/img\/blog\/fff-302-megapacket-commit.jpg\">paljusid piirjuhtumeid<\/a><\/noindex>, mis on seotud ts\u00fcklite vahelej\u00e4tmise ja edasi-tagasi edastusviivituste muutumisega.<\/p>\n<p>Sa v\u00f5id juba aimata, kuhu see k\u00f5ik viib. L\u00f5puks hakkame n\u00e4gema probleemide megapaketi p\u00f5hjusi. Probleemi juur peitub selles, et otsuse tegemisel, kas edastada valiku muutuse toiming, tugineb loogika olendite valikule <i>Latency State<\/i>, ja see olek ei sisalda alati \u00f5iget teavet. Seet\u00f5ttu genereeritakse megapakett ligikaudu nii:<\/p>\n<ol>\n<li>M\u00e4ngijal on \u00fchenduse probleem.<\/li>\n<li>Seonduvad mehhanismid t&uuml;kkide vahelej\u00e4tmise ja edasi-tagasi edastusviivituse reguleerimise osas sekkuvad.<\/li>\n<li>Viivituste olekute rida ei arvesta neid mehhanisme. See toob kaasa selle, et m\u00f5ned toimingud eemaldatakse liiga vara v\u00f5i teostatakse vale j\u00e4rjekorras, mis viib vale <i>Latency State<\/i>.<\/li>\n<li>M\u00e4ngijal on \u00fchenduse probleem ja ta simuleerib serveriga s&uuml;ndmuste j&auml;lgimiseks kuni 400 ts\u00fcklit.<\/li>\n<li>Igas ts\u00fcklis genereeritakse ja valmistatakse ette uus olendi valiku muutmise toiming serverile edastamiseks.<\/li>\n<li>Klient saadab serverile megapaketi, mis koosneb \u00fcle 400 olendi valiku muutmisest (ja teiste toimingutega: tulistamis, k\u00f5ndimine jne; see probleem m&otilde;jutas ka neid).<\/li>\n<li>Server saab 400 sisendtoimet. Kuna tal ei ole lubatud \u00fchtegi sisendtoimet vahele j\u00e4tta, k\u00e4sib ta k\u00f5igil klientidel need toimeted t\u00e4ita ja edastab need \u00fcle v\u00f5rgu.<\/li>\n<\/ol>\n<p>\nIronia seisneb selles, et mehhanism, mis oli m\u00f5eldud kanalite sademe kokkuhoidmiseks, tekitas l\u00f5puks tohutuid v\u00f5rgu pakette.<\/p>\n<p>Lahendasime selle probleemi, parendades k\u00f5ik \u00e4\u00e4retaparisugused uuendamise ja j\u00e4rjekorra toetamise juhtumid. Kuigi see v\u00f5ttis \u00fcsna kaua aega, tasus see end \u00e4ra, et k\u00f5ik \u00f5igesti ellu viia, mitte toetuda kiiretele lahendustele.<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 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\".\" \/>\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) 5.0.1.1\" \/>\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=\".\" \/>\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\udd47Mega pakett: kuidas Factorio arendajad suutsid lahendada 200 m\u00e4ngijaga mitmikm\u00e4ngu probleemi | ProHoster","description":".","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":".","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}