Megapack: Ki jan Factorio Rezoud Pwoblèm Multijoueurs 200-Jwè

Megapack: Ki jan Factorio Rezoud Pwoblèm Multijoueurs 200-Jwè
Nan mwa me ane sa a mwen te patisipe kòm yon jwè nan MMO evènman KatherineOfSky. Mwen remake ke lè kantite jwè yo rive nan yon sèten kantite, chak kèk minit kèk nan yo "tonbe". Chans pou ou (men pa pou mwen), mwen te youn nan jwè sa yo ki te dekonekte chak fwa, menm ak yon bon koneksyon. Mwen te pran sa a kòm yon defi pèsonèl epi mwen te kòmanse chèche kòz pwoblèm nan. Apre twa semèn nan debogaj, tès, ak ranje, ensèk la te finalman ranje, men vwayaj la pa t 'tou sa ki fasil.

Pwoblèm ak jwèt multijoueurs yo trè difisil pou swiv. Yo anjeneral rive anba paramèt rezo trè espesifik ak kondisyon jwèt trè espesifik (nan ka sa a, gen plis pase 200 jwè). E menm lè pwoblèm nan ka repwodui, li pa ka byen debogaj paske mete breakpoints sispann jwèt la, konfonn timers, epi anjeneral lakòz koneksyon an tan soti. Men, gras a pèsistans ak yon zouti bèl bagay ki rele maladwa Mwen te jere chèche konnen sa ki te pase.

Nan ti bout tan, akòz yon ensèk ak aplikasyon enkonplè nan simulation eta latansi a, kliyan an ta pafwa jwenn tèt li nan yon sitiyasyon kote li te oblije voye yon pake rezo ki fòme ak aksyon seleksyon opinyon jwè a nan apeprè 400 antite jwèt nan yon sik revèy ( nou rele sa yon "mega-pake"). Lè sa a, sèvè a dwe non sèlman resevwa tout aksyon sa yo opinyon kòrèkteman, men tou, voye yo bay tout lòt kliyan. Si ou gen 200 kliyan, sa a byen vit vin yon pwoblèm. Lyen ki mennen nan sèvè a byen vit vin bouche, ki mennen ale nan pèt pake ak yon kaskad nan re-mande pake. Reta nan aksyon an opinyon Lè sa a, lakòz menm plis kliyan yo voye megapake, sa ki lakòz lavalas la vin menm pi gwo. Kliyan chans yo jere refè; tout lòt yo tonbe.

Megapack: Ki jan Factorio Rezoud Pwoblèm Multijoueurs 200-Jwè
Pwoblèm nan te byen fondamantal e li te pran m '2 semèn pou rezoud li. Li trè teknik, kidonk mwen pral eksplike detay yo juicy teknik anba a. Men, anvan, ou bezwen konnen ke depi vèsyon 0.17.54, lage sou 4 jen, nan fè fas a pwoblèm koneksyon tanporè, multijoueurs te vin pi estab, ak reta kache te vin pi mwens buggy (mwens ralentissement ak teleporting). Mwen te tou chanje fason konba lag se kache epi mwen espere ke sa a pral fè li yon ti kras douser.

Multijoueurs Mega pake - Detay teknik

Pou mete li tou senpleman, multijoueurs nan yon jwèt travay tankou sa a: tout kliyan simulation eta a nan jwèt la, resevwa epi voye sèlman opinyon jwè (yo rele "aksyon antre", Aksyon Antre). Travay prensipal la nan sèvè a se transmèt Aksyon Antre ak kontwole ke tout kliyan fè menm aksyon yo nan menm sik revèy la. Ou ka li plis sou sa a nan pòs la FFF-149.

Piske sèvè a dwe pran desizyon sou ki aksyon pou fè, aksyon jwè a deplase apeprè sou chemen sa a: aksyon jwè -> kliyan jwèt -> rezo -> sèvè -> rezo -> kliyan jwèt. Sa vle di ke aksyon chak jwè fèt sèlman apre yo fin fè yon vwayaj wonn atravè rezo a. Poutèt sa, jwèt la ta sanble fò anpil dousman, kidonk prèske imedyatman apre entwodiksyon de multijoueurs nan jwèt la, yo te prezante yon mekanis pou kache reta. Kache reta simule opinyon jwè san yo pa pran an kont aksyon lòt jwè yo ak desizyon sèvè a.

Megapack: Ki jan Factorio Rezoud Pwoblèm Multijoueurs 200-Jwè
Factorio gen yon eta jwèt Jwèt Eta se eta konplè kat la, jwè, antite ak tout lòt bagay. Li se deterministic simulation nan tout kliyan ki baze sou aksyon yo resevwa nan men sèvè a. Eta jwèt se sakre, epi si li janm kòmanse diferan de sèvè a oswa nenpòt lòt kliyan, Lè sa a, dezenkronizasyon rive.

Men, Jwèt Eta nou gen yon eta de reta Eta Latansi. Li gen yon ti sous-ensemble nan eta tè a. Eta Latansi pa sakre epi tou senpleman reprezante yon foto nan sa ki eta jwèt la pral sanble nan tan kap vini an ki baze sou opinyon jwè yo Aksyon Antre.

Pou rezon sa a, nou estoke yon kopi kreye a Aksyon Antre nan keu an reta.

Megapack: Ki jan Factorio Rezoud Pwoblèm Multijoueurs 200-Jwè
Sa vle di, nan fen pwosesis la sou bò kliyan foto a sanble yon bagay tankou sa a:

  1. Nou aplike Aksyon Antre tout jwè yo Jwèt Eta fason yo te resevwa aksyon sa yo nan sèvè a.
  2. Nou retire tout bagay nan keu la reta Aksyon Antre, ki, dapre sèvè a, yo te deja aplike nan Jwèt Eta.
  3. Efase Eta Latansi epi reset li pou li sanble egzakteman menm jan ak Jwèt Eta.
  4. Nou aplike tout aksyon soti nan keu la reta nan Eta Latansi.
  5. Baze sou done Jwèt Eta и Eta Latansi Nou rann jwèt la bay jwè a.

Tout bagay sa yo repete nan chak mezi.

Twò difisil? Pa detann, sa a se pa tout. Pou konpanse koneksyon Entènèt ki pa fyab, nou te kreye de mekanis:

  • Tik rate: lè sèvè a deside sa Aksyon Antre pral egzekite nan bat la nan jwèt la, Lè sa a, si li pa t 'resevwa Aksyon Antre kèk jwè (pa egzanp, akòz ogmantasyon reta), li pa pral tann, men li pral enfòme kliyan sa a "Mwen pa t 'pran an kont ou Aksyon Antre, Mwen pral eseye ajoute yo nan pwochen ba a." Sa a se fè pou ke akòz pwoblèm ak koneksyon an (oswa òdinatè) nan yon jwè, aktyalizasyon kat jeyografik la pa ralanti pou tout lòt moun. Li se vo sonje sa Aksyon Antre yo pa inyore, men tou senpleman mete sou kote.
  • Latansi total ale/retou: Sèvè a eseye devine kisa latansi ale/retou ant kliyan an ak sèvè a se pou chak kliyan. Chak 5 segonn, li negosye yon nouvo latansi ak kliyan an si sa nesesè (ki baze sou ki jan koneksyon an te konpòte nan tan lontan an), epi ogmante oswa diminye latansi an ale/retour kòmsadwa.

Pou kont yo, mekanis sa yo se byen senp, men lè yo itilize ansanm (ki souvan rive ak pwoblèm koneksyon), lojik la nan kòd la vin difisil pou jere ak ak anpil ka kwen. Anplis de sa, lè mekanis sa yo antre nan jwèt, sèvè a ak keu reta dwe byen aplike espesyal la Aksyon Antre rele StopMovementInTheNextTick. Mèsi a sa a, si gen pwoblèm ak koneksyon an, karaktè a pa pral kouri poukont li (pa egzanp, devan yon tren).

Koulye a, nou bezwen eksplike w kouman seleksyon antite travay. Youn nan kalite transmèt yo Aksyon Antre se yon chanjman nan eta seleksyon antite. Li di tout moun ki antite jwè a ap plane sou. Kòm ou ka imajine, sa a se youn nan aksyon yo opinyon ki pi komen kliyan yo voye, kidonk pou konsève pou Pleasant, nou te optimize li pou pran ti espas posib. Fason li fonksyone se ke kòm chak antite chwazi, olye pou yo estoke absoli, kowòdone kat jeyografik segondè-presizyon, jwèt la magazen yon konpanse relatif ki ba-presizyon nan seleksyon anvan an. Sa a travay byen paske seleksyon sourit yo gen tandans trè pre seleksyon anvan an. Sa a ogmante de kondisyon enpòtan: Aksyon Antre Yo pa ta dwe janm sote epi yo dwe ranpli nan lòd ki kòrèk la. Kondisyon sa yo satisfè pou Jwèt Eta. Men, depi travay la Eta latansi nan "kap bon ase" pou jwè a, yo pa satisfè nan eta a reta. Eta Latansi pa pran an kont anpil ka kwen, ki asosye ak sote sik revèy ak chanje reta transmisyon ale/retou.

Ou ka deja devine ki kote sa a prale. Nou ap finalman kòmanse wè rezon ki fè pwoblèm nan megapack. Rasin nan pwoblèm nan se ke lojik seleksyon antite depann sou Eta Latansi, epi eta sa a pa toujou genyen enfòmasyon ki kòrèk la. Se poutèt sa, yon megapacket pwodwi yon bagay tankou sa a:

  1. Jwè a gen pwoblèm koneksyon.
  2. Mekanis pou sote sik revèy ak reglemante reta nan transmisyon ale-a-tou antre an jwèt.
  3. Queu eta reta a pa pran mekanis sa yo an kont. Sa lakòz kèk aksyon yo dwe retire prematireman oswa fè nan move lòd, sa ki lakòz kòrèk Eta Latansi.
  4. Jwè a gen yon pwoblèm ak koneksyon an epi, yo nan lòd yo ratrape ak sèvè a, li simulation jiska 400 sik.
  5. Nan chak tik, yon nouvo aksyon, chanje seleksyon an antite, yo pwodwi ak prepare pou voye nan sèvè a.
  6. Kliyan an voye yon mega-pakèt 400+ chanjman seleksyon antite nan sèvè a (ak ak lòt aksyon: eta tire, eta mache, elatriye tou soufri nan pwoblèm sa a).
  7. Sèvè a resevwa 400 aksyon opinyon. Piske li pa gen dwa sote nenpòt aksyon opinyon, li bay lòd pou tout kliyan yo fè aksyon sa yo epi voye yo atravè rezo a.

Iwoni a se ke yon mekanis ki fèt pou konsève pou Pleasant te fini kreye gwo pake rezo.

Nou abòde pwoblèm sa a lè nou repare tout ka ki gen rapò ak sipò aktyalizasyon ak keu anreta. Malgre ke li te pran byen yon ti tan, nan fen a li te vo jwenn li dwat olye ke konte sou antay rapid.

Sous: www.habr.com

Add nouvo kòmantè