{"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\/it\/blog\/administrirovanie\/megapaket-kak-razrabotchikam-factorio-udalos-reshit-problemu-s-multipleerom-na-200-igrokov","title":{"rendered":"Mega Pacchetto: come gli sviluppatori di Factorio sono riusciti a risolvere il problema con il multiplayer a 200 giocatori.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Mega Pacchetto: come gli sviluppatori di Factorio sono riusciti a risolvere il problema con il multiplayer a 200 giocatori.\" src=\"\/wp-content\/uploads\/2019\/09\/135544365299791de479555734645ef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA maggio di quest'anno ho partecipato come giocatore a <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d_DlvkTK9hU\">un evento MMO di KatherineOfSky<\/a><\/noindex>. Ho notato che quando il numero di giocatori raggiunge una certa soglia, ogni pochi minuti una parte di loro \"abbandona\". Sfortunatamente per voi (ma non per me), ero uno di quei giocatori che si disconnettevano <b>ogni volta<\/b>, anche con una buona connessione. L'ho visto come una sfida personale e ho iniziato a cercare le cause del problema. Dopo tre settimane di debug, test e correzioni, l'errore \u00e8 finalmente stato risolto, ma questo viaggio non \u00e8 stato affatto semplice.<\/p>\n<p>Le problematiche nei giochi multiplayer sono molto difficili da rintracciare. Di solito si verificano in condizioni di rete molto specifiche e in stati di gioco molto peculiari (in questo caso, con oltre 200 giocatori). E anche quando si riesce a riprodurre il problema, non \u00e8 possibile debuggare correttamente, perch\u00e9 l'inserimento di punti di controllo ferma il gioco, confonde i timer e di solito porta alla chiusura della connessione a causa della scadenza del timeout. Ma grazie alla tenacia e a un ottimo strumento chiamato <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jagt\/clumsy\">clumsy<\/a><\/noindex> , sono riuscito a capire cosa stava succedendo.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435: \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043a\u043b\u0438\u0435\u043d\u0442 \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0435\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043f\u0430\u043a\u0435\u0442, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437 \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 400 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 (\u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u00ab\u043c\u0435\u0433\u0430\u043f\u0430\u043a\u0435\u0442\u043e\u043c\u00bb). \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432\u0432\u043e\u0434\u0430, \u043d\u043e \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c. \u0415\u0441\u043b\u0438 \u0443 \u0442\u0435\u0431\u044f 200 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u044d\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u041a\u0430\u043d\u0430\u043b \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0443\u0442\u0435\u0440\u0435 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043a\u0430\u0441\u043a\u0430\u0434\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u041e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432\u0432\u043e\u0434\u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043c\u0435\u0433\u0430\u043f\u0430\u043a\u0435\u0442\u044b, \u0438 \u0438\u0445 \u043b\u0430\u0432\u0438\u043d\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0441\u0438\u043b\u044c\u043d\u0435\u0435. \u0423\u0434\u0430\u0447\u043b\u0438\u0432\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u00ab\u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f\u00bb.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<img decoding=\"async\" alt=\"Mega Pacchetto: come gli sviluppatori di Factorio sono riusciti a risolvere il problema con il multiplayer a 200 giocatori.\" src=\"\/wp-content\/uploads\/2019\/09\/ff1a60d55eb6f5a4dc7be4b826d747f0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIl problema era piuttosto fondamentale e ci ho messo due settimane per risolverlo. \u00c8 abbastanza tecnico, quindi di seguito spiegher\u00f2 i dettagli tecnici succosi. Ma prima di tutto, \u00e8 importante sapere che dalla versione 0.17.54, rilasciata il 4 giugno, in condizioni di problemi temporanei di connessione, il multiplayer \u00e8 diventato pi\u00f9 stabile, mentre l'occultamento dei ritardi \u00e8 molto meno difettoso (meno lag e teletrasporti). Inoltre, ho modificato il modo in cui si occultano i ritardi in combattimento e spero che questo li renda un po' pi\u00f9 fluidi.<\/p>\n<h3>Mega pacchetto multiplayer \u2014 dettagli tecnici<\/h3>\n<p>\nSe spieghiamo in modo semplificato, il multiplayer nel gioco funziona come segue: tutti i client simulano lo stato del gioco, ricevendo e inviando solo gli input dei giocatori (chiamati \"Input Actions\", <i>Input Actions<\/i>). Il compito principale del server \u00e8 quello di trasmettere <i>Input Actions<\/i> e controllare che tutti i client eseguano le stesse azioni in un turno. Maggiori dettagli possono essere letti nel post <noindex><a rel=\"nofollow\" href=\"https:\/\/www.factorio.com\/blog\/post\/fff-149\">FFF-149<\/a><\/noindex>.<\/p>\n<p>Poich\u00e9 il server deve prendere decisioni su quali azioni devono essere eseguite, le azioni del giocatore seguono approssimativamente questo percorso: azione del giocatore -&gt; client di gioco -&gt; rete -&gt; server -&gt; rete -&gt; client di gioco. Ci\u00f2 significa che ogni azione del giocatore viene eseguita solo dopo aver completato un viaggio di andata e ritorno attraverso la rete. Di conseguenza, il gioco sembrerebbe terribilmente lento, quindi quasi subito dopo l'introduzione del multiplayer, \u00e8 stato implementato un meccanismo per nascondere i ritardi. La mascheratura dei ritardi simula l'input del giocatore senza tenere conto delle azioni degli altri giocatori e delle decisioni del server.<\/p>\n<p><img decoding=\"async\" alt=\"Mega Pacchetto: come gli sviluppatori di Factorio sono riusciti a risolvere il problema con il multiplayer a 200 giocatori.\" src=\"\/wp-content\/uploads\/2019\/09\/0b66a3b07d6aa2ab1d2329d782c78615.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIn Factorio esiste uno stato di gioco <i>Stato di Gioco<\/i> \u2014 \u00e8 lo stato completo della mappa, del giocatore, delle entit\u00e0 e di tutto il resto. Viene simulato in modo deterministico in tutti i client in base alle azioni ricevute dal server. Lo stato di gioco \u00e8 sacro e se mai dovesse differire dal server o da qualsiasi altro client, si verifica una desincronizzazione.<\/p>\n<p>Inoltre <i>Stato di Gioco<\/i> abbiamo uno stato di latenza <i>Stato di Latenza<\/i>. Esso contiene un piccolo sottoinsieme dello stato principale. <i>Stato di Latenza<\/i> non \u00e8 sacro e rappresenta semplicemente un quadro di come apparir\u00e0 lo stato del gioco in futuro sulla base delle informazioni fornite dal giocatore <i>Input Actions<\/i>.<\/p>\n<p>Per questo motivo conserviamo una copia di ci\u00f2 che viene creato <i>Input Actions<\/i> nella coda dei ritardi.<\/p>\n<p><img decoding=\"async\" alt=\"Mega Pacchetto: come gli sviluppatori di Factorio sono riusciti a risolvere il problema con il multiplayer a 200 giocatori.\" src=\"\/wp-content\/uploads\/2019\/09\/31e43263d1d2bfc79700730978fcd02a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCio\u00e8, alla fine del processo sul lato client, la situazione apparir\u00e0 approssimativamente in questo modo:<\/p>\n<ol>\n<li>Applichiamo <i>Input Actions<\/i> a tutti i giocatori <i>Stato di Gioco<\/i> come queste azioni di input sono state ricevute dal server.<\/li>\n<li>Rimuoviamo dalla coda dei ritardi tutti <i>Input Actions<\/i>, che, secondo i dati del server, sono gi\u00e0 stati applicati a <i>Stato di Gioco<\/i>.<\/li>\n<li>Rimuoviamo <i>Stato di Latenza<\/i> e lo resettiamo, affinch\u00e9 appaia esattamente come <i>Stato di Gioco<\/i>.<\/li>\n<li>Applichiamo tutte le azioni dalla coda dei ritardi a <i>Stato di Latenza<\/i>.<\/li>\n<li>Sulla base dei dati <i>Stato di Gioco<\/i> e <i>Stato di Latenza<\/i> renderizziamo il gioco per il giocatore.<\/li>\n<\/ol>\n<p>\nTutto questo si ripete in ogni turno.<\/p>\n<p>Troppo difficile? Non rilassatevi, non \u00e8 ancora tutto. Per compensare l'affidabilit\u00e0 delle connessioni Internet, abbiamo creato due meccanismi:<\/p>\n<ul>\n<li>Turni saltati: quando il server decide che <i>Input Actions<\/i> saranno eseguiti nel turno del gioco, se non ha ricevuto <i>Input Actions<\/i> alcun giocatore (ad esempio, a causa di un ritardo aumentato), non aspetter\u00e0, ma avviser\u00e0 quel cliente \u00abnon ho considerato i tuoi <i>Input Actions<\/i>, cercher\u00f2 di aggiungerli nel prossimo passo\u00bb. Questo \u00e8 stato fatto per evitare che l'aggiornamento della mappa venga ritardato per tutti gli altri a causa di problemi di connessione (o di computer) di un singolo giocatore. \u00c8 importante notare che <i>Input Actions<\/i> non vengono ignorati, ma semplicemente rimandati.<\/li>\n<li>Ritardo del percorso di andata e ritorno: il server cerca di stimare quale sia il ritardo nella trasmissione dei dati di andata e ritorno tra il client e il server per ciascun cliente. Ogni 5 secondi discute con il cliente un nuovo ritardo se necessario (a seconda di come si \u00e8 comportata la connessione in passato) e aumenta o diminuisce di conseguenza il ritardo della trasmissione dei dati di andata e ritorno.<\/li>\n<\/ul>\n<p>\nQuesti meccanismi sono piuttosto semplici di per s\u00e9, ma quando vengono utilizzati insieme (cosa che accade spesso in caso di problemi di connessione), la logica del codice diventa difficile da gestire e presenta molti casi limite. Inoltre, quando entrano in gioco questi meccanismi, il server e la coda dei ritardi devono implementare correttamente un particolare <i>Input Action<\/i> chiamata <i>StopMovementInTheNextTick<\/i>. Questo garantisce che, in caso di problemi di connessione, il personaggio non corra da solo (ad esempio, sotto un treno).<\/p>\n<p>Ora dobbiamo spiegarti come funziona la selezione degli oggetti. Uno dei tipi trasmessi <i>Input Action<\/i> \u00e8 il cambiamento dello stato di selezione dell'oggetto. Questo comunica a tutti su quale oggetto il giocatore ha posato il cursore. Come puoi capire, questo \u00e8 uno degli input pi\u00f9 frequenti inviati dai clienti, quindi per risparmiare larghezza di banda abbiamo ottimizzato il processo in modo che occupi il meno spazio possibile. Questo \u00e8 realizzato in questo modo: per ogni selezione dell'oggetto, invece di memorizzare coordinate assolute e ad alta precisione della mappa, il gioco memorizza uno spostamento relativo a bassa precisione rispetto alla selezione precedente. Questo funziona bene, poich\u00e9 la selezione tramite mouse avviene di solito molto vicino alla selezione precedente. Da questo derivano due requisiti importanti: <i>Input Actions<\/i> non si devono mai ignorare e devono essere eseguiti nell'ordine corretto. Questi requisiti sono soddisfatti per <i>Stato di Gioco<\/i>. Ma poich\u00e9 il compito <i>Stato di latenza<\/i> \u00e8 quello di \"sembrare abbastanza buono\" per il giocatore, nelle condizioni di latenza non vengono rispettati. <i>Stato di Latenza<\/i> non considera <noindex><a rel=\"nofollow\" href=\"https:\/\/cdn.factorio.com\/assets\/img\/blog\/fff-302-megapacket-commit.jpg\">molti casi limite<\/a><\/noindex>, relativi al mancato rispetto dei cicli e alle variazioni della latenza di andata e ritorno.<\/p>\n<p>Puoi gi\u00e0 indovinare dove sta andando a finire. Finalmente iniziamo a vedere le cause del problema del megapas package. La radice del problema risiede nel fatto che, nella decisione se trasmettere l'azione di modifica della selezione, la logica di selezione delle entit\u00e0 si basa su <i>Stato di Latenza<\/i>, e questo stato non contiene sempre informazioni corrette. Di conseguenza, il megapas package viene generato all'incirca in questo modo:<\/p>\n<ol>\n<li>Il giocatore ha problemi di connessione.<\/li>\n<li>Intervengono meccanismi di salto dei cicli e regolazione del ritardo di trasmissione andata e ritorno.<\/li>\n<li>La coda di stato dei ritardi non tiene conto di questi meccanismi. Questo porta a situazioni in cui alcune azioni vengono rimosse prematuramente o vengono eseguite nell'ordine sbagliato, il che porta a un comportamento errato. <i>Stato di Latenza<\/i>.<\/li>\n<li>Il giocatore perde il problema di connessione e si simula fino a 400 cicli per raggiungere il server.<\/li>\n<li>In ogni ciclo viene generata e preparata per l'invio al server una nuova azione di modifica della selezione dell'entit\u00e0.<\/li>\n<li>Il client invia al server un megapas package con oltre 400 modifiche nella selezione delle entit\u00e0 (anche altre azioni: stato di tiro, movimento, ecc., sono state influenzate da questo problema).<\/li>\n<li>Il server riceve 400 azioni di input. Non potendo saltare nemmeno un'azione di input, ordina a tutti i clienti di eseguire queste azioni e le invia attraverso la rete.<\/li>\n<\/ol>\n<p>\nIronia della sorte, il meccanismo progettato per risparmiare banda, finiva per generare enormi pacchetti di rete.<\/p>\n<p>Abbiamo risolto il problema correggendo tutti i casi limite di aggiornamento e supporto della coda di latenza. Anche se \u00e8 stato piuttosto lungo, alla fine \u00e8 valsa la pena implementare tutto correttamente, invece di affidarci a rapidi hack.<br \/>\n<br \/>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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 pacchetto: come gli sviluppatori di Factorio hanno risolto il problema del multiplayer per 200 giocatori | ProHoster","description":"A maggio di quest'anno ho partecipato come giocatore all'evento MMO KatherineOfSky. Ho notato che quando il numero di giocatori raggiungeva una certa soglia, ogni pochi minuti parte di loro \"si disconnetteva\". Fortunatamente per voi (ma non per me), ero uno di quei giocatori che si disconnettevano ogni volta, anche con una buona connessione. L'ho percepito","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/37812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37812"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37812\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/28381"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}