Mar gheall ar an tsamhail líonra i cluichí do thosaitheoirí

Mar gheall ar an tsamhail líonra i cluichí do thosaitheoirí
Le dhá sheachtain anuas tá mé ag obair ar an inneall líonraithe do mo chluiche. Roimhe sin, ní raibh a fhios agam rud ar bith faoi líonrú i gcluichí, mar sin léigh mé go leor alt agus rinne mé a lán turgnaimh chun na coincheapa go léir a thuiscint agus a bheith in ann mo inneall líonraithe féin a scríobh.

Sa treoir seo, ba mhaith liom na coincheapa éagsúla a theastaíonn uait a fhoghlaim a roinnt leat sula scríobhfaidh tú d’inneall cluiche féin, chomh maith leis na hacmhainní agus na hailt is fearr chun iad a fhoghlaim.

Go ginearálta, tá dhá phríomhchineál ailtireachta líonra ann: piar le piaraí agus freastalaí cliant. In ailtireacht piaraí go piaraí (p2p), aistrítear sonraí idir aon phéire imreoirí nasctha, agus in ailtireacht cliant-freastalaí, ní aistrítear sonraí ach idir na himreoirí agus an freastalaí.

Cé go n-úsáidtear an ailtireacht piaraí le piaraí fós i roinnt cluichí, is é cliant-freastalaí an caighdeán: tá sé níos éasca a chur i bhfeidhm, éilíonn leithead cainéal níos lú, agus déanann sé níos éasca é a chosaint i gcoinne caimiléireachta. Mar sin, sa treoir seo, díreoimid ar an ailtireacht cliant-freastalaí.

Go háirithe, is mó suim againn i bhfreastalaithe údarásacha: i gcórais den sórt sin, bíonn an freastalaí ceart i gcónaí. Mar shampla, má cheapann an t-imreoir go bhfuil sé ag (10, 5) agus go n-insíonn an freastalaí dó go bhfuil sé ag (5, 3), ansin ba cheart don chliant a shuíomh a athsholáthar leis an gceann a bhfuil an freastalaí ag tuairisciú, ní an bealach eile timpeall. De bharr freastalaithe údarásacha a úsáid, bíonn sé níos fusa cheaters a aithint.

Tá trí phríomhchuid i gcórais líonra cearrbhachais:

  • Prótacal iompair: conas a aistrítear sonraí idir cliaint agus an freastalaí.
  • Prótacal iarratais: cad a tharchuirtear ó chliaint chuig an bhfreastalaí agus ón bhfreastalaí chuig cliaint, agus cén fhormáid.
  • Loighic an fheidhmchláir: conas a úsáidtear na sonraí tarchurtha chun staid na gcliant agus an fhreastalaí a nuashonrú.

Tá sé an-tábhachtach ról gach cuid agus na deacrachtaí a bhaineann leo a thuiscint.

Prótacal Iompair

Is é an chéad chéim ná prótacal a roghnú chun sonraí a iompar idir an freastalaí agus na cliaint. Tá dhá phrótacal Idirlín ann chuige seo: TCP и UDP. Ach is féidir leat do phrótacal iompair féin a chruthú bunaithe ar cheann amháin acu nó leabharlann a úsáideann iad a úsáid.

Comparáid idir TCP agus UDP

Tá an dá TCP agus UDP bunaithe ar IP. Ceadaíonn IP paicéad a tharchur ó fhoinse go glacadóir, ach ní ráthaíonn sé go sroichfidh an paicéad seolta an glacadóir luath nó mall, go dtiocfaidh sé chuige uair amháin ar a laghad, agus go dtiocfaidh seicheamh na bpacáistí san ord ceart. Ina theannta sin, ní féidir ach méid sonraí teoranta a bheith i bpaicéad, arna thabhairt ag an luach MTU.

Níl sa UDP ach sraith tanaí ar bharr IP. Mar sin, tá na teorainneacha céanna aige. I gcodarsnacht leis sin, tá go leor gnéithe ag TCP. Soláthraíonn sé nasc ordaithe iontaofa idir dhá nód le seiceáil earráide. Dá bhrí sin, tá TCP an-áisiúil agus úsáidtear é i go leor prótacail eile, mar shampla, i HTTP, FTP и SMTP. Ach tagann na gnéithe seo go léir ar phraghas: moill.

Chun a thuiscint cén fáth ar féidir leis na feidhmeanna seo a bheith ina chúis le latency, ní mór dúinn a thuiscint conas a oibríonn TCP. Nuair a tharchuireann an t-óstach seolta paicéad chuig an ósta glactha, tá sé ag súil le admháil (ACK) a fháil. Más rud é tar éis am áirithe nach bhfaigheann sé é (toisc gur cailleadh an paicéad nó an deimhniú, nó ar chúis éigin eile), ansin seolann sé an paicéad arís. Thairis sin, ráthaíonn TCP go bhfaightear paicéid san ord ceart, mar sin go dtí go bhfaightear paicéad caillte, ní féidir gach paicéad eile a phróiseáil, fiú má tá siad faighte cheana féin ag an nód fála.

Ach mar is dócha go dtuigeann tú, tá latency i gcluichí il-imreora an-tábhachtach, go háirithe i seánraí gníomhacha mar CCT. Sin é an fáth go n-úsáideann go leor cluichí UDP lena phrótacal féin.

Is féidir le prótacal dúchais atá bunaithe ar UDP a bheith níos éifeachtaí ná TCP ar chúiseanna éagsúla. Mar shampla, féadann sé roinnt pacáistí a mharcáil mar phacáistí iontaofa agus cinn eile mar neamhiontaofa. Dá bhrí sin, níl cúram air má tá an paicéad neamhiontaofa tar éis an faighteoir a bhaint amach. Nó is féidir leis sruthanna sonraí iolracha a phróiseáil ionas nach gcuirfidh paicéad a chailltear i sruth amháin moill ar shruthanna eile. Mar shampla, d'fhéadfadh snáithe a bheith ann le haghaidh ionchur imreora agus snáithe eile le haghaidh teachtaireachtaí comhrá. Má chailltear teachtaireacht comhrá nach sonraí práinneacha í, ansin ní mhoilleoidh sé an t-ionchur atá práinneach. Nó d’fhéadfadh prótacal dílseánaigh iontaofacht a chur i bhfeidhm ar bhealach difriúil ná TCP le bheith níos éifeachtaí i dtimpeallacht físchluiche.

Mar sin, má tá TCP sucks, ansin táimid ag dul a thógáil ar ár prótacal iompair féin bunaithe ar UDP?

Tá gach rud beagán níos casta. Cé go bhfuil TCP beagnach fo-optamach do chórais líonra cearrbhachais, féadann sé oibriú go maith do do chluiche ar leith agus sábhálfaidh sé am luachmhar duit. Mar shampla, b’fhéidir nach fadhb í an fhoighne le haghaidh cluiche atá bunaithe ar sheal nó cluiche nach féidir a imirt ach ar líonraí LAN, áit a bhfuil latency agus caillteanas paicéad i bhfad níos lú ná ar an Idirlíon.

Úsáideann go leor cluichí rathúla, lena n-áirítear World of Warcraft, Minecraft, agus Terraria, TCP. Mar sin féin, úsáideann an chuid is mó de na CCTanna a bprótacail UDP-bhunaithe féin, mar sin labhróimid níos mó fúthu thíos.

Má roghnaíonn tú TCP a úsáid, déan cinnte go bhfuil sé díchumasaithe Algartam Nagle, toisc go maolaíonn sé paicéid roimh é a sheoladh, agus mar sin méadaíonn sé an mhoill.

Chun níos mó a fhoghlaim faoi na difríochtaí idir UDP agus TCP i gcomhthéacs cluichí il-imreora, féach alt Glenn Fiedler UDP vs. TCP.

Prótacal Dílseánaigh

Mar sin ba mhaith leat do phrótacal iompair féin a chruthú ach níl a fhios agat cá háit le tosú? Tá an t-ádh ort, mar scríobh Glenn Fiedler dhá alt iontach faoi. Gheobhaidh tú a lán smaointe cliste iontu.

An chéad alt Líonrú le haghaidh ríomhchláraitheoirí cluichí 2008, níos éasca ná an dara ceann Prótacal Líonra Cluiche a Thógáil 2016. Molaim duit tosú leis an gceann is sine.

Bí ar an eolas go bhfuil Glenn Fiedler go mór chun do phrótacal féin a úsáid bunaithe ar UDP. Agus tar éis duit a chuid alt a léamh, is dócha go nglacfaidh tú lena thuairim go bhfuil míbhuntáistí tromchúiseacha ag TCP i gcluichí físeáin, agus beidh tú ag iarraidh do phrótacal féin a chur i bhfeidhm.

Ach más rud é go bhfuil tú nua i líonrú, déan bhfabhar duit féin agus úsáid TCP nó leabharlann. Chun do phrótacal iompair féin a chur i bhfeidhm go rathúil, ní mór duit go leor a fhoghlaim roimh ré.

Leabharlanna Líonra

Más gá duit rud éigin níos éifeachtaí ná TCP, ach nach bhfuil tú ag iarraidh do phrótacal féin a chur i bhfeidhm agus go leor sonraí a chur isteach, is féidir leat an leabharlann ghlan a úsáid. Tá go leor acu:

Níor bhain mé triail as iad go léir, ach is fearr liom Enet mar tá sé éasca le húsáid agus iontaofa. Ina theannta sin, tá doiciméadú soiléir agus teagaisc do thosaitheoirí ann.

Críochnú an Phrótacail Iompair

Mar achoimre, tá dhá phríomhphrótacal iompair ann: TCP agus UDP. Tá go leor gnéithe úsáideacha ag TCP: iontaofacht, ordú paicéid a chaomhnú, earráid a bhrath. Níl an méid sin ar fad ag an UDP, ach tá ard-fhollasacht ag TCP, mar gheall ar a nádúr, nach bhfuil inghlactha do roinnt cluichí. Is é sin, chun latency íseal a chinntiú, is féidir leat do phrótacal féin a chruthú bunaithe ar UDP nó úsáid a bhaint as leabharlann a chuireann an prótacal iompair ar UDP i bhfeidhm agus atá oiriúnaithe le haghaidh cluichí físeáin il-imreora.

Braitheann an rogha idir TCP, UDP, agus an leabharlann ar roinnt fachtóirí. Gcéad dul síos, ó riachtanais an chluiche: an bhfuil gá le latency íseal? Ar an dara dul síos, ó cheanglais an phrótacail iarratais: an bhfuil prótacal iontaofa ag teastáil uaidh? Mar a fheicfimid sa chéad chuid eile, is féidir prótacal iarratais a chruthú a bhfuil prótacal neamhiontaofa oiriúnach go leor dó. Ar deireadh, ní mór duit taithí an fhorbróra inneall líonra a mheas freisin.

Tá dhá leid agam:

  • Abstract an prótacal iompair oiread agus is féidir ón gcuid eile den fheidhmchlár ionas gur féidir é a athsholáthar go héasca gan an cód go léir a athscríobh.
  • Ná ró-uasmhéadú. Mura saineolaí líonra tú agus nach bhfuil tú cinnte an bhfuil do phrótacal iompair UDP-bhunaithe féin ag teastáil uait, is féidir leat tosú le TCP nó leabharlann a sholáthraíonn iontaofacht, agus ansin feidhmíocht a thástáil agus a thomhas. Má tá fadhbanna agat agus go bhfuil tú cinnte gur prótacal iompair é, b'fhéidir go mbeadh sé in am do phrótacal iompair féin a chruthú.

Ag deireadh na coda seo, molaim duit léamh Réamhrá don Chlárú Cluiche Il-imreora Brian Hook, a chlúdaíonn go leor de na hábhair a phléitear anseo.

Prótacal Feidhmchláir

Anois gur féidir linn sonraí a mhalartú idir cliaint agus an freastalaí, ní mór dúinn a chinneadh cad iad na sonraí a aistriú agus cén fhormáid.

Is é an scéim clasaiceach ná go seolann cliaint ionchur nó gníomhartha chuig an bhfreastalaí, agus cuireann an freastalaí an staid reatha cluiche chuig na cliaint.

Ní sheolann an freastalaí an stát iomlán, ach an stát scagtha le haonáin atá in aice leis an imreoir. Déanann sé é seo ar thrí chúis. Gcéad dul síos, féadfaidh an stát iomlán a bheith ró-mhór le tarchur ag minicíocht ard. Ar an dara dul síos, tá suim ag cliaint go príomha i sonraí amhairc agus fuaime, toisc go bhfuil an chuid is mó den loighic cluiche insamhladh ar an bhfreastalaí cluiche. Ar an tríú dul síos, i roinnt cluichí ní gá go mbeadh a fhios ag an imreoir sonraí áirithe, mar shampla suíomh an namhaid ar an taobh eile den léarscáil, mar gheall ar shlí eile is féidir leis paicéid a sniff agus a fhios go díreach cá háit le bogadh chun é a mharú.

Srathú

Is é an chéad chéim ná na sonraí a theastaíonn uainn a sheoladh (ionchur nó staid cluiche) a thiontú go formáid atá oiriúnach le tarchur. Tugtar an próiseas seo sraithiú.

Tagann an smaoineamh chun cuimhne láithreach formáid atá inléite ag an duine a úsáid, mar JSON nó XML. Ach beidh sé seo go hiomlán neamhéifeachtach agus beidh sé i mbun an chuid is mó den chainéal do rud ar bith.

Ina áit sin, moltar an fhormáid dhénártha a úsáid, atá i bhfad níos dlúithe. Is é sin, ní bheidh ach cúpla beart sna paicéid. Anseo ní mór dúinn an fhadhb a chur san áireamh ordú beart, a d'fhéadfadh a bheith difriúil ar ríomhairí éagsúla.

Chun sonraí a shraithiú, is féidir leat leabharlann a úsáid, mar shampla:

Cinntigh go gcruthaíonn an leabharlann cartlanna iniompartha agus go dtugann sí aire don deireadh.

Réiteach eile a bheadh ​​ann é a chur i bhfeidhm tú féin, níl sé chomh deacair sin, go háirithe má tá tú ag baint úsáide as cur chuige sonraí-lárnach i do chód. Ina theannta sin, ligfidh sé duit optimizations a dhéanamh nach féidir i gcónaí agus an leabharlann á úsáid agat.

Tá dhá alt scríofa ag Glenn Fiedler faoin sraithiú: Paicéid Léitheoireachta agus Scríbhneoireachta и Straitéisí Srathaithe.

Comhbhrú

Tá méid na sonraí a aistrítear idir cliaint agus an freastalaí teoranta ag bandaleithead an chainéil. Tabharfaidh comhbhrú sonraí deis duit níos mó sonraí a aistriú i ngach pictiúr, an ráta athnuachana a mhéadú, nó go simplí laghdófar na riachtanais bandaleithead.

Pacáil giotán

Is é an chéad teicníc pacáil giotán. Is éard atá ann ná úsáid a bhaint as go beacht an líon giotán atá riachtanach chun cur síos a dhéanamh ar an luach inmhianaithe. Mar shampla, má tá enum agat ar féidir 16 luach éagsúil a bheith aige, ansin in ionad beart iomlán (8 giotán), ní féidir leat ach 4 ghiotán a úsáid.

Míníonn Glenn Fiedler conas é seo a chur i bhfeidhm sa dara cuid den alt. Paicéid Léitheoireachta agus Scríbhneoireachta.

Oibríonn pacáil giotán go háirithe go maith le discretization, a bheidh mar ábhar na coda eile.

Sampláil

Sampláil is teicníocht comhbhrú cailleach é nach n-úsáideann ach fo-thacar de luachanna féideartha chun luach a ionchódú. Is é an bealach is éasca le discréidiú a chur i bhfeidhm ná uimhreacha snámhphointí a shlánú.

Léiríonn Glenn Fiedler (arís!) conas discretization a chur i bhfeidhm go praiticiúil ina alt Comhbhrú Snapshot.

Algartaim comhbhrúite

Beidh an teicníocht seo chugainn algartam comhbhrú lossless.

Seo, i mo thuairim, na trí algartam is suimiúla nach mór duit a bheith ar eolas agat:

  • Huffman códaithe le cód réamhríofa, atá thar a bheith tapa agus is féidir torthaí maithe a tháirgeadh. Úsáideadh é chun paicéid a chomhbhrú in inneall líonra Quake3.
  • zlib is algartam comhbhrú ginearálta é nach n-ardóidh an méid sonraí riamh. Conas is féidir leat a fheiceáil anseo, tá sé in úsáid i réimse na n-iarratas. Maidir le stáit nuashonraithe, d'fhéadfadh sé a bheith iomarcach. Ach is féidir go mbeidh sé áisiúil más gá duit sócmhainní, téacsanna fada nó tír-raon a sheoladh chuig cliaint ón bhfreastalaí.
  • Fad rith a chóipeáil is dócha gurb é an algartam comhbhrú is simplí, ach tá sé an-éifeachtach le haghaidh cineálacha áirithe sonraí, agus is féidir é a úsáid mar chéim réamhphróiseála roimh zlib. Tá sé oiriúnach go háirithe le haghaidh comhbhrú tír-raon comhdhéanta de tíleanna nó voxels ina ndéantar go leor eilimintí comharsanacha arís agus arís eile.

comhbhrú delta

Is é an teicníc comhbhrú deiridh ná comhbhrú delta. Luíonn sé nach ndéantar ach na difríochtaí idir staid reatha an chluiche agus an stát deiridh a fhaigheann an cliant a tharchur.

Úsáideadh é den chéad uair in inneall líonra Quake3. Seo dhá alt a mhíníonn conas é a úsáid:

Bhain Glenn Fiedler úsáid as sa dara cuid dá alt freisin. Comhbhrú Snapshot.

Criptiú

Ina theannta sin, b'fhéidir go mbeadh ort an tarchur faisnéise idir cliaint agus an freastalaí a chriptiú. Tá roinnt cúiseanna leis seo:

  • Príobháideacht/Rúndacht: Ní féidir ach leis an bhfaighteoir teachtaireachtaí a léamh agus ní bheidh aon sniffer líonra eile in ann iad a léamh.
  • fíordheimhniú: ní mór go mbeadh a fhios ag duine atá ag iarraidh ról an imreora a eochair.
  • cosc cheat: beidh sé i bhfad níos deacra d'imreoirí mailíseacha a gcuid pacáistí cheat féin a chruthú, beidh orthu an scéim criptithe a mhacasamhlú agus an eochair a aimsiú (a athraíonn gach nasc).

Molaim go láidir leabharlann a úsáid le haghaidh seo. Molaim úsáid a bhaint as libsóidiam, toisc go bhfuil sé simplí go háirithe agus tá ranganna teagaisc iontacha ann. Díol spéise ar leith é an cúrsa teagaisc ar malartú eochair, a ligeann duit eochracha nua a ghiniúint ar gach nasc nua.

Prótacal Feidhmchláir: Conclúid

Críochnaíonn sé seo prótacal an iarratais. Creidim go bhfuil comhbhrú go hiomlán roghnach agus braitheann an cinneadh chun é a úsáid ach amháin ar an gcluiche agus ar an bandaleithead riachtanach. Tá criptiú, i mo thuairim, éigeantach, ach sa chéad fhréamhshamhail is féidir leat a dhéanamh gan é.

Loighic Feidhmchláir

Tá muid in ann an staid sa chliant a nuashonrú anois, ach d'fhéadfadh go n-éireoidh linn saincheisteanna latency. Caithfidh an t-imreoir, tar éis dó ionchur a dhéanamh, fanacht ar nuashonrú staid an chluiche ón bhfreastalaí chun a fheiceáil cén éifeacht a bhí aige ar an domhan.

Thairis sin, idir dhá nuashonrú stáit, tá an domhan go hiomlán statach. Má tá an ráta nuashonraithe stáit íseal, ansin beidh na gluaiseachtaí an-jerky.

Tá roinnt teicnící ann chun tionchar na faidhbe seo a mhaolú, agus clúdóidh mé iad sa chéad chuid eile.

Moill Teicnící Smoothing

Déantar na teicníochtaí go léir a thuairiscítear san alt seo a phlé go mion sa tsraith. Il-imreoir luas tapa Gabriel Gambetta. Molaim go mór an tsraith iontach alt seo a léamh. Áiríonn sé freisin taispeántas idirghníomhach chun a fheiceáil conas a oibríonn na teicníochtaí seo go praiticiúil.

Is é an chéad teicníc an toradh ionchuir a chur i bhfeidhm go díreach gan fanacht le freagra ón bhfreastalaí. Tugtar tuar taobh cliaint. Mar sin féin, nuair a fhaigheann an cliant nuashonrú ón bhfreastalaí, caithfidh sé a fhíorú go raibh a thuar ceart. Mura bhfuil sé seo amhlaidh, ní mór dó ach a staid a athrú de réir an méid a fuair sé ón bhfreastalaí, toisc go bhfuil an freastalaí údarásach. Baineadh úsáid as an teicníc seo den chéad uair i Quake. Is féidir leat tuilleadh a léamh faoi san alt. Athbhreithniú cód Quake Engine Fabien Sanglars [aistriúchán ar Habré].

Úsáidtear an dara sraith teicnící chun gluaiseacht aonán eile idir dhá nuashonrú stáit a rianúil. Tá dhá bhealach ann chun an fhadhb seo a réiteach: idirshuíomh agus eachtarshuíomh. I gcás idirshuíomh, tógtar an dá stát dheireanacha agus taispeántar an t-aistriú ó cheann amháin go ceann eile. Is é a míbhuntáiste go n-eascraíonn sé codán beag den mhoill, toisc go bhfeiceann an cliant i gcónaí cad a tharla san am atá caite. Is éard atá i gceist le heachtarshuíomh ná a thuar cén áit ar cheart na heintitis a bheith bunaithe anois ar an stát deireanach a fuair an cliant. Is é a mhíbhuntáiste ná má athraíonn an t-eintiteas treo na gluaiseachta go hiomlán, ansin beidh earráid mhór idir an réamhaisnéis agus an suíomh fíor.

Is é an teicníocht dheireanach, is airde, úsáideach ach amháin i CCT cúiteamh lag. Agus cúiteamh moillithe á úsáid, cuireann an freastalaí moilleanna an chliaint san áireamh nuair a bhuaileann sé an sprioc. Mar shampla, dá ndéanfadh imreoir ceannbheart ar a scáileán, ach i ndáiríre go raibh a sprioc in áit eile mar gheall ar an moill, bheadh ​​sé éagórach ceart marú a dhiúltú don imreoir mar gheall ar an moill. Mar sin déanann an freastalaí am ar ais go dtí an uair a scaoil an t-imreoir leis an méid a chonaic an t-imreoir ar a scáileán a insamhail agus seiceáil le haghaidh imbhualadh idir a lámhaigh agus an sprioc.

Scríobh Glenn Fiedler (mar i gcónaí!) alt i 2004 Fisic Líonra (2004), inar leag sé an bunús le haghaidh insamhaltaí fisice a shioncronú idir an freastalaí agus an cliant. In 2014 scríobh sé sraith nua alt fisic líonraithe, inar chuir sé síos ar theicnící eile chun insamhaltaí fisice a shioncronú.

Tá dhá alt ar vicí Valve freisin, Líonrú Il-imreora Foinse и Modhanna Cúitimh Folaigh i nDearadh agus i bPrótacal I-chluiche an Chliaint/Freastalaí déileáil le cúiteamh moille.

Cosc Cheat

Tá dhá phríomh-theicníc coiscthe caimiléireachta ann.

Gcéad dul síos, é a dhéanamh níos deacra do cheaters a sheoladh paicéid mailíseach. Mar a luadh thuas, is bealach maith é a chur i bhfeidhm criptiú.

Ar an dara dul síos, níor cheart go bhfaigheadh ​​an freastalaí údarásach ach orduithe/ionchur/gníomhartha. Níor cheart go mbeadh an cliant in ann an staid ar an bhfreastalaí a athrú seachas trí ionchur a sheoladh. Ansin ní mór don fhreastalaí, gach uair a fhaigheann sé ionchur, é a sheiceáil le haghaidh bailíochta sula gcuirtear i bhfeidhm é.

Loighic Feidhmchláir: Conclúid

Molaim duit bealach a chur i bhfeidhm chun rátaí arda latency agus athnuachana íseal a insamhlú ionas gur féidir leat iompar do chluiche a thástáil faoi dhrochchoinníollacha, fiú nuair a bhíonn an cliant agus an freastalaí ag rith ar an meaisín céanna. Simplíonn sé seo go mór cur i bhfeidhm na dteicnící réidh le haghaidh moille.

Acmhainní Cabhracha Eile

Más mian leat acmhainní eile ar shamhlacha líonra a iniúchadh, is féidir iad a fháil anseo:

Foinse: will.com

Add a comment