Megapack: Çawa Factorio Pirsgirêka Pirrjimara 200-Player Çareser kir

Megapack: Çawa Factorio Pirsgirêka Pirrjimara 200-Player Çareser kir
Di Gulana îsal de, ez wek lîstikvan beşdar bûm Bûyerên KatherineOfSky MMO. Min bala xwe dayê ku gava hejmara lîstikvanan digihîje hejmareke diyarkirî, her çend deqeyan carekê hin ji wan "dikevin". Xwezî ji bo we (lê ne ji bo min), ez yek ji wan lîstikvanan bûm hercartevî pêwendiyek baş. Min ew wekî dijwariyek kesane girt û dest pê kir ku li sedemên pirsgirêkê bigerim. Piştî sê hefteyên verastkirin, ceribandin û rastkirin, xeletî di dawiyê de tê rast kirin, lê rêwîtî ew qas hêsan nebû.

Pirsgirêkên di lîstikên pirzimanî de peydakirina pir dijwar e. Ew bi gelemperî di binê pîvanên torê yên pir taybetî û di bin dewletên lîstikê yên pir taybetî de pêk tên (di vê rewşê de, zêdetirî 200 lîstikvan). Û tewra gava ku pirsgirêkek dikare were nûve kirin, ew bi rêkûpêk nikare were jêbirin ji ber ku danasîna xalên veqetandinê lîstikê disekinîne, demjimêran tevlihev dike, û bi gelemperî dibe sedema ku pêwendiya ji ber demdirêjiyê biqede. Lê spas ji bo bîhnfirehiyê û amûrek ecêb tê gotin nezane Min karî bizanim ka çi diqewime.

Bi kurtasî, ji ber xeletiyek û pêkanîna netemamî ya simulasyona dewleta derengmayînê, xerîdar carinan xwe di rewşek de dît ku pêdivî bû ku pakêtek torê di yek çerxa demjimêrê de bişîne, ku ji çalakiyên têketina lîstikvan pêk tê ji bo hilbijartina nêzîkê 400 hebûnên lîstikê ( em jê re dibêjin "megapacket"). Piştî wê, server ne tenê hewce dike ku van hemî kiryarên têketinê rast werbigire, lê di heman demê de wan ji hemî xerîdarên din re jî bişîne. Ger 200 xerîdarên we hebin, ev zû dibe pirsgirêk. Kanala berbi serverê zû tê xitimandin, di encamê de pakêtên winda dibin û kaskek pakêtên ji nû ve hatine xwestin. Dûv re paşxistina kiryarên têketinê dibe sedem ku bêtir xerîdar dest bi şandina megapacketan bikin, û avaniya wan hîn xurtir dibe. Xerîdarên serketî bi rê ve dibin, hemî yên mayî dikevin.

Megapack: Çawa Factorio Pirsgirêka Pirrjimara 200-Player Çareser kir
Pirsgirêk pir bingehîn bû, û ji min re 2 hefte girt ku wê çareser bikim. Ew pir teknîkî ye, ji ber vê yekê ez ê hûrguliyên teknîkî yên juicy li jêr rave bikim. Lê pêşî, hûn hewce ne ku zanibin ku ji ber guhertoya 0.17.54, ku di 4ê Hezîranê de hate berdan, li hember pirsgirêkên pêwendiya demkî, pirlîstik aramtir bûye, û veşartina derengmayîn pir kêmtir xelet e (kêm şikestin û teleportkirin). Di heman demê de, min awayê veşartina derengiyên şer guhertiye, û hêvîdarim ku ev ê wan hinekî nermtir bike.

Multiplayer Mega Pack - Agahiyên Teknîkî

Ji bo ku bi hêsanî were gotin, di lîstikek piralî de bi vî rengî dixebite: hemî xerîdar bi wergirtin û şandina tenê têketina lîstikvan (bi navê "çalakiyên têketinê" rewşa lîstikê simule dikin. Çalakiyên Input). Karê sereke ya serverê veguherîn e Çalakiyên Input û piştrast dike ku hemî xerîdar di heman çerxê de heman çalakiyan pêk tînin. Hûn dikarin li ser vê postê bêtir bixwînin. FFF-149.

Ji ber ku server neçar e ku biryarê li ser çi kiryaran bigire, kiryarên lîstikvan li ser riya jêrîn dimeşin: çalakiya lîstikvan -> xerîdar a lîstikê -> tor -> server -> tor -> xerîdar lîstikê. Ev tê wê wateyê ku her çalakiya lîstikvan tenê piştî ku ew di nav torê de rêwîtiyek dor-gerî çêkiriye tê kirin. Ji ber vê yekê, lîstik dê pir hêdî xuya bikira, ji ber vê yekê hema hema di cih de piştî xuyangkirina multiplayer di lîstikê de, mekanîzmayek ji bo veşartina derengiyan hate destpêkirin. Veşartina derengiyê bêyî berçavgirtina kiryarên lîstikvanên din û biryara serverê, têketina lîstikvan simul dike.

Megapack: Çawa Factorio Pirsgirêka Pirrjimara 200-Player Çareser kir
Factorio xwedî dewletek lîstikê ye dewleta lîstikê rewşa bêkêmasî ya nexşe, lîstikvan, hebûn û her tiştê din e. Ew li ser bingeha kiryarên ku ji serverê hatine wergirtin di hemî xerîdaran de bi determînîst tê simulasyona. Rewşa lîstikê pîroz e, û heke ew carî dest pê dike ku ji server an xerîdarek din cûda bibe, wê hingê desenkronîzekirin çêdibe.

ji bilî dewleta lîstikê rewşa me ya derengî heye Dewleta Latency. Ew beşek piçûk a dewleta sereke dihewîne. Dewleta Latency ne pîroz e û tenê wêneyek nîşan dide ka rewşa lîstikê dê di pêşerojê de çawa xuya bike li ser bingeha danûstendinên lîstikvan. Çalakiyên Input.

Ji bo vê yekê, em kopiyek hilberandî digirin Çalakiyên Input di dorê dereng de.

Megapack: Çawa Factorio Pirsgirêka Pirrjimara 200-Player Çareser kir
Ango, di dawiya pêvajoyê de li aliyê xerîdar, wêne tiştek weha xuya dike:

  1. Bikaranîn Çalakiyên Input hemû lîstikvanên ku dewleta lîstikê awayê ku ev kiryarên têketinê ji serverê hatine wergirtin.
  2. Her tiştî ji rêza derengiyê derxînin Çalakiyên Input, ku, li gorî serverê, berê li ser hatine sepandin dewleta lîstikê.
  3. Jêkirin Dewleta Latency û wê ji nû ve saz bikin da ku ew tam eynî mîna xuya bike dewleta lîstikê.
  4. Hemî kiryaran ji rêza derengbûnê bigire heya Dewleta Latency.
  5. Li ser bingeha daneyan dewleta lîstikê и Dewleta Latency lîstikê bidin lîstikvan.

Ev hemû di her lêdanê de dubare dibe.

Pir dijwar? Rehet nebin, ev ne hemû ye. Ji bo telafîkirina girêdanên Înternetê yên bêbawer, me du mekanîzmayên afirandin:

  • Bişkojkên avêtin: gava ku server biryar dide Çalakiyên Input dê di taktîka lîstikê de were darve kirin, wê hingê heke ew negirtibe Çalakiyên Input hin lîstikvan (mînak, ji ber derengiyek zêde), ew ê li bendê nemîne, lê dê vê xerîdar agahdar bike "Min hesabê we negirt. Çalakiyên Input, Ez ê hewl bidim ku wan di barika paşîn de lê zêde bikim. Ev tê kirin da ku ji ber pirsgirêkên bi girêdana (an bi komputerê) lîstikvanek, nûvekirina nexşeyê ji bo her kesê din hêdî nebe. Hêjayî gotinê ye ku Çalakiyên Input nayên paşguh kirin, lê bi tenê têne paşxistin.
  • Derengiya gera dor-gerê ya bêkêmasî: Pêşkêşker hewl dide ku texmîn bike ku derengiya gera dor-gerê ya di navbera xerîdar û serverê de ji bo her xerîdar çi ye. Her 5 saniyeyan, ew li gorî hewcedariyê bi xerîdar re derengiyek nû muzakere dike (li gorî ka pêwendiya berê çawa tevdigere), û li gorî wê derengiya gera dorhêlê zêde an kêm dike.

Bi xwe, van mekanîzmayan pir hêsan in, lê gava ku ew bi hev re têne bikar anîn (ku pir caran bi pirsgirêkên pêwendiyê re çêdibe), rêvebirina mantiqa kodê û bi gelek dozên devê dijwar dibe. Digel vê yekê, dema ku ev mekanîzma têne lîstin, server û rêza derengiyê divê bi rengek taybetî rast bicîh bikin Çalakiya Input bin navê StopMovementInTheNextTick. Ji ber vê yekê, di rewşên pirsgirêkên pêwendiyê de, karakter dê bi serê xwe nemeşe (mînakî, di binê trênê de).

Naha divê ez ji we re vebêjim ka hilbijartina saziyê çawa dixebite. Yek ji cureyên derbasbûyî Çalakiya Input guhertina rewşa hilbijartinê ya saziyekê ye. Ew ji her kesî re vedibêje ku lîstikvan bi mişkê li ser kîjan sazûmanê hejandiye. Wekî ku hûn dibînin, ev yek ji wan kiryarên têketinê yên herî gelemperî ye ku ji hêla xerîdaran ve têne şandin, ji ber vê yekê ji bo hilanîna berfê, me ew xweştir kiriye da ku ew bi qasî ku pêkan hindik cîh bigire. Ev bi vî rengî tête bicîh kirin: dema ku her sazî tê hilbijartin, li şûna ku koordînatên nexşeyê yên mutleq, bi rasthatinî werin hilanîn, lîstik ji hilbijarka berê dûrbînek xizmekî kêm-rast hildide. Ev baş dixebite ji ber ku bijartina mişk bi gelemperî pir nêzî hilbijartina berê dibe. Ev du daxwazên girîng peyda dike: Çalakiyên Input divê tu carî neyê paşguh kirin û divê di rêza rast de were kirin. Ji bo van daxwazan pêk tên dewleta lîstikê. Lê ji peywirê rewşa derengmayînê di "têra xwe baş xuya dikin" ji bo lîstikvan, ew di rewşa derengmayînê de ne razî ne. Dewleta Latency nahesibîne gelek dozên sînorbi derbasbûna demjimêran û guheztina derengiya veguheztina gerîdeyê ve girêdayî ye.

Hûn dikarin jixwe texmîn bikin ku ev diçe ku derê. Di dawiyê de, em dest pê dikin ku sedemên pirsgirêka megapackage bibînin. Koka pirsgirêkê ev e ku mantiqa hilbijartina saziyê xwe dispêre Dewleta Latency, û ev dewlet her gav agahdariya rast nagire. Ji ber vê yekê megapacket bi vî rengî tête çêkirin:

  1. Lîstik pirsgirêkên pêwendiyê diceribîne.
  2. Mekanîzmayên ji bo derbasbûna dewreyan û birêkûpêkkirina derengiya veguheztina gerîdeyê dikevin lîstikê.
  3. Doza dewletê ya derengmayî van mekanîzmayan hesab nake. Ev dibe sedem ku hin kiryar ji zû de werin rakirin an bi rêzek xelet werin meşandin, di encamê de xeletiyek çêbibe Dewleta Latency.
  4. Pirsgirêka pêwendiyê ya lîstikvan tune ye û heya 400 dewreyan simule dike da ku bi serverê re bigire.
  5. Di her çerxê de, çalakiyek nû tê hilberandin û amade kirin ku ji serverê re were şandin, bijartina saziyê diguhezîne.
  6. Xerîdar megapacketek ji 400+ guheztinên hilbijartî yên hebûnê dişîne serverê (û bi kirinên din re: rewşa agirpêketinê, rewşa rêveçûnê, hwd. jî ji vê pirsgirêkê êş kişand).
  7. Pêşkêşkar 400 çalakiyên têketinê distîne. Ji ber ku destûr nayê dayîn ku yek çalakiyek têketinê derbas bike, ew ferman dide hemî xerîdar ku van çalakiyan bikin û wan li ser torê dişîne.

Xemgîn ev e ku mekanîzmayek ku ji bo parastina berfê hatî çêkirin di pakêtên torê yên mezin de encam da.

Me ev pirsgirêk bi rastkirina hemî dozên qeraxên nûvekirinê û piştgirîya dorê dereng çareser kir. Her çend ew demek dirêj girt, lê hêja bû ku ew di dawiyê de rast were rast kirin ne ku xwe bispêre hakên bilez.

Source: www.habr.com

Add a comment