Megapack: Bawo ni Factorio ṣe yanju Isoro 200-Player Multiplayer

Megapack: Bawo ni Factorio ṣe yanju Isoro 200-Player Multiplayer
Ni May ti odun yi ni mo kopa bi a player ni Awọn iṣẹlẹ MMO KatherineOfSky. Mo ṣe akiyesi pe nigbati nọmba awọn oṣere ba de nọmba kan, ni gbogbo iṣẹju diẹ diẹ ninu wọn “ṣubu”. Oriire fun ọ (ṣugbọn kii ṣe fun mi), Mo jẹ ọkan ninu awọn oṣere ti o ge asopọ ni gbogbo igba, ani pẹlu kan ti o dara asopọ. Mo gba eyi bi ipenija ti ara ẹni ati bẹrẹ wiwa awọn idi ti iṣoro naa. Lẹhin ọsẹ mẹta ti n ṣatunṣe aṣiṣe, idanwo, ati awọn atunṣe, kokoro ti wa ni atunṣe nikẹhin, ṣugbọn irin-ajo naa ko rọrun rara.

Awọn iṣoro pẹlu awọn ere elere pupọ jẹ gidigidi soro lati tọpinpin. Nigbagbogbo wọn waye labẹ awọn aye nẹtiwọọki kan pato ati awọn ipo ere kan pato (ninu ọran yii, nini diẹ sii ju awọn oṣere 200). Ati paapaa nigba ti iṣoro naa ba le ṣe atunṣe, ko le ṣe atunṣe daradara nitori fifi awọn aaye fifọ duro ni ere, daamu awọn akoko, ati nigbagbogbo nfa asopọ si akoko. Ṣugbọn ọpẹ si itẹramọṣẹ ati ohun elo iyanu ti a pe clumsy Mo ti ṣakoso lati wa ohun ti n ṣẹlẹ.

Ni kukuru, nitori kokoro kan ati imuse pipe ti kikopa ipo lairi, alabara nigbakan yoo rii ararẹ ni ipo kan nibiti o ni lati firanṣẹ apo-iwe nẹtiwọọki kan ti o ni awọn iṣe yiyan igbewọle ẹrọ orin ti isunmọ awọn nkan ere 400 ni akoko aago kan ( a pe eyi ni "mega-packet"). Olupin ko gbọdọ gba gbogbo awọn iṣe igbewọle wọnyi ni deede, ṣugbọn tun fi wọn ranṣẹ si gbogbo awọn alabara miiran. Ti o ba ni awọn alabara 200, eyi yarayara di iṣoro. Ọna asopọ si olupin naa yarayara di didi, ti o yori si pipadanu soso ati kasikedi ti awọn apo-iwe ti o tun beere. Idaduro iṣẹ titẹ sii lẹhinna fa paapaa awọn alabara diẹ sii lati firanṣẹ awọn apo-iwe megapakẹti, nfa ki owusuwusu di paapaa tobi. Awọn alabara orire ṣakoso lati bọsipọ; gbogbo awọn miiran ṣubu ni pipa.

Megapack: Bawo ni Factorio ṣe yanju Isoro 200-Player Multiplayer
Iṣoro naa jẹ ipilẹ pupọ ati pe o gba mi ni ọsẹ meji lati ṣatunṣe. O jẹ imọ-ẹrọ lẹwa, nitorinaa Emi yoo ṣe alaye awọn alaye imọ-ẹrọ sisanra ni isalẹ. Ṣugbọn ni akọkọ, o nilo lati mọ pe lati ẹya 2, ti a tu silẹ ni Oṣu Karun ọjọ 0.17.54, ni oju awọn iṣoro asopọ igba diẹ, pupọ pupọ ti di iduroṣinṣin diẹ sii, ati awọn idaduro nọmbafoonu ti di buggy pupọ (kere si idinku ati teleporting). Mo tun ti yipada ọna ti ija ogun ti farapamọ ati pe Mo nireti pe eyi yoo jẹ ki o rọra diẹ.

Pupọ Mega Pack - Awọn alaye imọ-ẹrọ

Lati fi sii nirọrun, pupọ ninu ere n ṣiṣẹ bii eyi: gbogbo awọn alabara ṣe afarawe ipo ere naa, gbigba ati fifiranṣẹ igbewọle ẹrọ orin nikan (ti a pe ni “awọn iṣe igbewọle”), Awọn iṣe titẹ sii). Iṣẹ akọkọ ti olupin ni lati tan kaakiri Awọn iṣe titẹ sii ati iṣakoso pe gbogbo awọn alabara ṣe awọn iṣe kanna ni akoko aago kanna. O le ka diẹ sii nipa eyi ninu ifiweranṣẹ FFF-149.

Niwọn igba ti olupin naa gbọdọ ṣe awọn ipinnu nipa kini awọn iṣe lati ṣe, awọn iṣe oṣere n gbe ni isunmọ ni ọna yii: iṣe oṣere -> alabara ere -> nẹtiwọọki -> olupin -> nẹtiwọọki -> alabara ere. Eleyi tumo si wipe kọọkan player ká igbese ti wa ni ṣe nikan lẹhin ṣiṣe a yika irin ajo kọja awọn nẹtiwọki. Nitori eyi, ere naa yoo dabi ẹni pe o lọra pupọ, nitorinaa o fẹrẹ to lẹsẹkẹsẹ lẹhin ifihan pupọ ninu ere, a ṣe agbekalẹ ẹrọ kan lati tọju awọn idaduro. Pipaduro idaduro ṣe afiwe titẹ sii ẹrọ orin laisi akiyesi awọn iṣe ti awọn oṣere miiran ati awọn ipinnu olupin.

Megapack: Bawo ni Factorio ṣe yanju Isoro 200-Player Multiplayer
Factorio ni o ni a game ipinle Ipinle ere ni pipe ipinle ti kaadi, player, oro ibi ati ohun gbogbo miran. O jẹ kikopa ipinnu ni gbogbo awọn alabara ti o da lori awọn iṣe ti a gba lati ọdọ olupin naa. Ere ipinle jẹ mimọ, ati pe ti o ba bẹrẹ lati yato si olupin tabi alabara miiran, lẹhinna desync waye.

ayafi Ipinle ere a ni ipo idaduro Ipinle Lairi. O ni ipin kekere ti ipo ilẹ. Ipinle Lairi ko mimọ ati ki o nìkan duro aworan kan ti ohun ti awọn ere ipinle yoo wo ni ojo iwaju da lori player igbewọle Awọn iṣe titẹ sii.

Fun idi eyi, a tọju ẹda ẹda ti o ṣẹda Awọn iṣe titẹ sii ni isinyi idaduro.

Megapack: Bawo ni Factorio ṣe yanju Isoro 200-Player Multiplayer
Iyẹn ni, ni ipari ilana naa ni ẹgbẹ alabara, aworan naa dabi iru eyi:

  1. A lo Awọn iṣe titẹ sii gbogbo awọn ẹrọ orin lati Ipinle ere ọna ti a gba awọn iṣe igbewọle wọnyi lati ọdọ olupin naa.
  2. A yọ ohun gbogbo kuro ni isinyi idaduro Awọn iṣe titẹ sii, eyi ti, ni ibamu si olupin, ti a ti lo tẹlẹ si Ipinle ere.
  3. Paarẹ Ipinle Lairi ki o si tun o ki o wulẹ gangan kanna bi Ipinle ere.
  4. A lo gbogbo awọn iṣe lati isinyi idaduro si Ipinle Lairi.
  5. Da lori data Ipinle ere и Ipinle Lairi A mu ere si ẹrọ orin.

Gbogbo eyi ni a tun ṣe ni gbogbo iwọn.

O nira pupọ? Maṣe sinmi, eyi kii ṣe gbogbo rẹ. Lati sanpada fun awọn isopọ Ayelujara ti ko ni igbẹkẹle, a ti ṣẹda awọn ọna ṣiṣe meji:

  • Awọn ami ti o padanu: nigbati olupin pinnu iyẹn Awọn iṣe titẹ sii yoo pa ni lilu ti ere, lẹhinna ti ko ba gba Awọn iṣe titẹ sii diẹ ninu ẹrọ orin (fun apẹẹrẹ, nitori idaduro ti o pọ si), kii yoo duro, ṣugbọn yoo sọ fun alabara yii “Emi ko ṣe akiyesi rẹ Awọn iṣe titẹ sii, Emi yoo gbiyanju lati fi wọn kun ni ọpa ti nbọ." Eyi ni a ṣe nitori awọn iṣoro pẹlu asopọ (tabi kọnputa) ti ẹrọ orin kan, imudojuiwọn maapu naa ko fa fifalẹ fun gbogbo eniyan miiran. O tọ lati ṣe akiyesi pe Awọn iṣe titẹ sii ti wa ni ko bikita, sugbon nìkan fi akosile.
  • Airi irin ajo-ajo ni kikun: Olupin naa n gbiyanju lati gboju le won kini airi irin ajo-ajo laarin alabara ati olupin jẹ fun alabara kọọkan. Ni gbogbo awọn iṣẹju-aaya 5, o ṣe adehun lairi tuntun pẹlu alabara ti o ba jẹ dandan (da lori bii asopọ ti ṣe ni iṣaaju), ati pọ si tabi dinku lairi irin-ajo yika ni ibamu.

Lori ara wọn, awọn ilana wọnyi jẹ ohun rọrun, ṣugbọn nigbati wọn ba lo papọ (eyiti o ṣẹlẹ nigbagbogbo pẹlu awọn iṣoro asopọ), ọgbọn ti koodu naa nira lati ṣakoso ati pẹlu ọpọlọpọ awọn ọran eti. Ni afikun, nigbati awọn ẹrọ wọnyi ba wa sinu ere, olupin ati isinyi idaduro gbọdọ ṣe imuse pataki naa daradara Iṣe titẹ sii ẹtọ ni StopMovementInTheNextTick. Ṣeun si eyi, ti awọn iṣoro ba wa pẹlu asopọ, ohun kikọ naa kii yoo ṣiṣẹ lori ara rẹ (fun apẹẹrẹ, ni iwaju ọkọ oju irin).

Bayi a nilo lati ṣe alaye fun ọ bi yiyan nkan ṣe n ṣiṣẹ. Ọkan ninu awọn iru gbigbe Iṣe titẹ sii jẹ iyipada ninu ipo yiyan nkan. O sọ fun gbogbo eniyan iru nkan ti ẹrọ orin nràbaba lori. Bi o ṣe le foju inu wo, eyi jẹ ọkan ninu awọn iṣe titẹ sii ti o wọpọ julọ ti awọn alabara firanṣẹ, nitorinaa lati ṣafipamọ bandiwidi, a ti ni iṣapeye lati gba aaye kekere bi o ti ṣee. Ọna ti o n ṣiṣẹ ni pe bi a ti yan nkan kọọkan, dipo titoju pipe, awọn ipoidojuko maapu pipe-giga, ere naa tọju aiṣedeede ibatan deede-kekere lati yiyan iṣaaju. Eyi ṣiṣẹ daradara nitori awọn aṣayan Asin maa n sunmo si aṣayan iṣaaju. Eyi gbe awọn ibeere pataki meji soke: Awọn iṣe titẹ sii Wọn ko yẹ ki o fo ati pe o gbọdọ pari ni ọna ti o pe. Awọn wọnyi ni awọn ibeere ti wa ni pade fun Ipinle ere. Sugbon niwon awọn iṣẹ-ṣiṣe Ipo airi ni "nwa ti o dara to" fun ẹrọ orin, ti won wa ni ko inu didun ni ipinle idaduro. Ipinle Lairi ko gba sinu iroyin ọpọlọpọ awọn igba etini nkan ṣe pẹlu wiwa aago ati awọn ayipada ninu awọn idaduro gbigbe irin-ajo.

O le tẹlẹ gboju ibi ti eyi nlọ. A n bẹrẹ nikẹhin lati rii awọn idi fun iṣoro megapack. Gbongbo iṣoro naa ni pe ọgbọn yiyan nkan da lori Ipinle Lairi, ati ipinle yi ko ni nigbagbogbo ni awọn ti o tọ alaye. Nitorinaa, megapacket kan jẹ ipilẹṣẹ nkan bii eyi:

  1. Awọn ẹrọ orin ni o ni asopọ isoro.
  2. Awọn ọna ẹrọ fun yiyọ awọn iyipo aago ati ṣiṣakoso idaduro ti gbigbe irin-ajo yika wa sinu ere.
  3. Ti isinyi ipinle idaduro ko gba awọn ilana wọnyi sinu apamọ. Eyi fa diẹ ninu awọn iṣe lati yọkuro laipẹ tabi ṣe ni ilana ti ko tọ, ti o mu abajade ti ko tọ Ipinle Lairi.
  4. Awọn ẹrọ orin ni o ni a asopọ isoro ati, ni ibere lati yẹ soke pẹlu awọn olupin, simulates soke 400 waye.
  5. Ni ami kọọkan, iṣẹ tuntun kan, iyipada yiyan nkan, ti ipilẹṣẹ ati pese sile fun fifiranṣẹ si olupin naa.
  6. Onibara firanṣẹ mega-ipele ti awọn ayipada yiyan nkan 400+ si olupin naa (ati pẹlu awọn iṣe miiran: awọn ipinlẹ ibon, awọn ipinlẹ nrin, ati bẹbẹ lọ tun jiya lati iṣoro yii).
  7. Olupin gba awọn iṣe igbewọle 400. Niwọn igba ti ko gba ọ laaye lati foju eyikeyi awọn iṣe titẹ sii, o paṣẹ fun gbogbo awọn alabara lati ṣe awọn iṣe wọnyẹn ati firanṣẹ wọn kọja nẹtiwọọki naa.

Ibanujẹ ni pe ẹrọ ti a ṣe lati ṣafipamọ bandiwidi pari ni ṣiṣẹda awọn apopọ nẹtiwọọki nla.

A koju ọran yii nipa titunṣe gbogbo awọn ọran eti ti imudojuiwọn ati atilẹyin isinyi backlog. Botilẹjẹpe o gba akoko diẹ, ni ipari o tọ lati gba ni ẹtọ kuku ju gbigbekele awọn hakii iyara.

orisun: www.habr.com

Fi ọrọìwòye kun