Game da samfurin hanyar sadarwa a cikin wasanni don masu farawa

Game da samfurin hanyar sadarwa a cikin wasanni don masu farawa
A cikin makonni biyu da suka gabata ina aiki akan injin sadarwar yanar gizo don wasana. Kafin wannan, ban san kome ba game da sadarwar yanar gizo a cikin wasanni kwata-kwata, don haka na karanta labarai da yawa kuma na yi gwaje-gwaje masu yawa don fahimtar duk ra'ayoyin kuma in iya rubuta injin sadarwar kaina.

A cikin wannan jagorar, Ina so in raba tare da ku dabaru daban-daban da kuke buƙatar koya kafin rubuta injin wasan ku, da kuma mafi kyawun albarkatu da labarai don koyan su.

Gabaɗaya, akwai manyan nau'ikan gine-ginen cibiyar sadarwa guda biyu: peer-to-peer da uwar garken abokin ciniki. A cikin tsarin gine-gine na peer-to-peer (p2p), ana canja wurin bayanai tsakanin kowane nau'i na 'yan wasan da aka haɗa, yayin da a cikin ginin uwar garken abokin ciniki, ana canja wurin bayanai tsakanin 'yan wasa da uwar garke kawai.

Kodayake ana amfani da gine-ginen tsara-da-tsara a wasu wasanni, uwar garken abokin ciniki shine ma'auni: yana da sauƙin aiwatarwa, yana buƙatar ƙaramin tashar tashoshi, kuma yana sauƙaƙa don karewa daga magudi. Saboda haka, a cikin wannan jagorar, za mu mai da hankali kan gine-ginen abokin ciniki-uwar garken.

Musamman, mun fi sha'awar sabobin masu mulki: a cikin irin waɗannan tsarin, uwar garken koyaushe daidai ne. Misali, idan mai kunnawa yana tsammanin yana a (10, 5) kuma uwar garken ta gaya masa yana a (5, 3), to ya kamata abokin ciniki ya maye gurbinsa da wanda uwar garken ke ba da rahoto, ba akasin haka ba. Amfani da sabar masu iko yana sa sauƙin gane masu yaudara.

Akwai manyan abubuwa guda uku a tsarin sadarwar caca:

  • Ka'idar sufuri: yadda ake canja wurin bayanai tsakanin abokan ciniki da uwar garken.
  • Ka'idar aikace-aikacen: abin da ake watsawa daga abokan ciniki zuwa uwar garken kuma daga uwar garken zuwa abokan ciniki, kuma a cikin wane tsari.
  • Dabarun aikace-aikacen: yadda ake amfani da bayanan da aka watsa don sabunta yanayin abokan ciniki da uwar garken.

Yana da matukar muhimmanci a fahimci matsayin kowane bangare da kuma matsalolin da ke tattare da su.

Ka'idar sufuri

Mataki na farko shine zaɓar yarjejeniya don jigilar bayanai tsakanin uwar garken da abokan ciniki. Akwai ka'idojin Intanet guda biyu don wannan: TCP и UDP. Amma kuna iya ƙirƙirar ƙa'idodin sufuri na kanku bisa ɗayansu ko amfani da ɗakin karatu da ke amfani da su.

Kwatanta TCP da UDP

Dukansu TCP da UDP sun dogara ne akan IP. IP yana ba da damar aika fakiti daga tushe zuwa mai karɓa, amma baya bada garantin cewa fakitin da aka aika zai isa ga mai karɓa ko ba dade ko ba dade ba, zai isa gare shi aƙalla sau ɗaya, kuma jerin fakitin zasu zo daidai da tsari. Bugu da ƙari, fakiti na iya ƙunsar ƙayyadaddun girman bayanai kawai, wanda ƙimar ke bayarwa MUTUM.

UDP shine kawai bakin ciki Layer a saman IP. Don haka, tana da iyakoki iri ɗaya. Sabanin haka, TCP yana da fasali da yawa. Yana ba da amintaccen haɗin gwiwa da aka ba da oda tsakanin nodes biyu tare da duba kuskure. Saboda haka, TCP ya dace sosai kuma ana amfani dashi a cikin wasu ka'idoji, misali, a cikin HTTP, FTP и SMTP. Amma duk waɗannan fasalulluka suna zuwa da farashi: jinkiri.

Don fahimtar dalilin da yasa waɗannan ayyuka zasu iya haifar da jinkiri, muna buƙatar fahimtar yadda TCP ke aiki. Lokacin da mai aikawa ya aika da fakiti zuwa ga mai karɓa, yana tsammanin samun amincewa (ACK). Idan bayan wani lokaci bai karɓa ba (saboda fakitin ko tabbatarwa ya ɓace, ko kuma saboda wani dalili), sannan ya sake aika fakitin. Bugu da ƙari, TCP yana ba da garantin cewa an karɓi fakiti a daidaitaccen tsari, don haka har sai an karɓi fakitin da aka ɓace, duk sauran fakiti ba za a iya sarrafa su ba, koda kuwa an riga an karɓi su ta kumburin karɓa.

Amma kamar yadda wataƙila kun fahimta, latency a cikin wasanni masu yawa yana da matukar mahimmanci, musamman a irin waɗannan nau'ikan aiki kamar FPS. Shi ya sa wasanni da yawa ke amfani da UDP tare da nata yarjejeniya.

Yarjejeniya ta asali bisa UDP na iya zama mafi inganci fiye da TCP saboda dalilai daban-daban. Misali, yana iya yiwa wasu fakitin alama a matsayin amintattu wasu kuma marasa amana. Don haka, bai damu ba idan fakitin da ba a dogara ba ya isa ga mai karɓa. Ko kuma yana iya sarrafa magudanan bayanai da yawa ta yadda fakitin da ya ɓace a cikin rafi ɗaya ba zai rage gudu ba. Misali, ana iya samun zaren shigar mai kunnawa da wani zaren don saƙonnin taɗi. Idan sakon taɗi wanda ba bayanan gaggawa ba ya ɓace, to ba zai rage saurin shigar da ke cikin gaggawa ba. Ko yarjejeniya ta mallaka na iya aiwatar da dogaro daban da TCP don zama mafi inganci a cikin yanayin wasan bidiyo.

Don haka, idan TCP ya tsotse, to, za mu gina ka'idodin sufuri na kanmu bisa UDP?

Komai ya ɗan fi rikitarwa. Kodayake TCP ya kusan zama mafi kyau ga tsarin cibiyar sadarwar caca, yana iya aiki sosai don takamaiman wasan ku kuma ya cece ku lokaci mai mahimmanci. Misali, jinkirin ƙila ba zai zama batun batun wasan da aka bijiro da shi ba ko kuma wasan da za a iya buga shi akan cibiyoyin sadarwar LAN kawai, inda latency da fakiti suka yi ƙasa da kan Intanet.

Yawancin wasanni masu nasara, gami da World of Warcraft, Minecraft, da Terraria, suna amfani da TCP. Koyaya, yawancin FPS suna amfani da nasu ka'idojin tushen UDP, don haka za mu ƙara yin magana game da su a ƙasa.

Idan ka zaɓi amfani da TCP to ka tabbata ba a kashe shi Nagle's algorithm, saboda yana buffer fakiti kafin aikawa, don haka yana ƙara jinkiri.

Don ƙarin koyo game da bambance-bambance tsakanin UDP da TCP a cikin mahallin wasanni masu yawa, duba labarin Glenn Fiedler UDP vs. TCP.

Ka'idar mallakar mallaka

Don haka kuna son ƙirƙirar ƙa'idar sufuri na ku amma ba ku san ta ina za ku fara ba? Kuna cikin sa'a, saboda Glenn Fiedler ya rubuta labarai biyu masu ban mamaki game da shi. Za ku sami ra'ayoyi masu wayo da yawa a cikinsu.

Labari na farko Sadarwar Sadarwa don Masu Shirye-shiryen Wasanni 2008, mai sauƙi fiye da na biyu Gina A Game Network Protocol 2016. Ina ba da shawarar ku fara da tsohuwar.

Ku sani cewa Glenn Fiedler babban mai goyon bayan yin amfani da naku yarjejeniya dangane da UDP. Kuma bayan karanta labaransa, tabbas za ku ɗauki ra'ayinsa cewa TCP yana da babban lahani a cikin wasannin bidiyo, kuma kuna son aiwatar da ka'idar ku.

Amma idan kun kasance sababbi ga sadarwar sadarwar, yi wa kanku alheri kuma kuyi amfani da TCP ko ɗakin karatu. Don samun nasarar aiwatar da ka'idojin sufuri na ku, kuna buƙatar koyo da yawa tukuna.

Laburaren Yanar Gizo

Idan kuna buƙatar wani abu mafi inganci fiye da TCP, amma ba sa so ku damu da aiwatar da ka'idar ku da shiga cikin cikakkun bayanai, zaku iya amfani da ɗakin karatu na yanar gizo. Akwai da yawa daga cikinsu:

Ban gwada su duka ba, amma na fi son ENet saboda yana da sauƙin amfani kuma abin dogaro. Bugu da ƙari, yana da cikakkun bayanai da kuma koyawa don masu farawa.

Ƙarshen Ka'idar Sufuri

Don taƙaitawa, akwai manyan ka'idojin sufuri guda biyu: TCP da UDP. TCP yana da abubuwa masu amfani da yawa: amintacce, adana odar fakiti, gano kuskure. UDP ba shi da wannan duka, amma TCP, ta yanayinsa, yana da babban latency wanda ba a yarda da shi ga wasu wasannin. Wato, don tabbatar da ƙarancin jinkiri, zaku iya ƙirƙirar ƙa'idar kan ku bisa UDP ko amfani da ɗakin karatu wanda ke aiwatar da ka'idar sufuri akan UDP kuma an daidaita shi don wasannin bidiyo da yawa.

Zaɓin tsakanin TCP, UDP, da ɗakin karatu ya dogara da abubuwa da yawa. Na farko, daga bukatun wasan: yana buƙatar ƙananan latency? Abu na biyu, daga buƙatun ƙa'idar aikace-aikacen: shin yana buƙatar ingantaccen yarjejeniya? Kamar yadda za mu gani a kashi na gaba, yana yiwuwa a ƙirƙiri ƙa'idar aikace-aikacen wanda ƙa'idar da ba ta dogara da ita ta dace da ita. A ƙarshe, kuna buƙatar la'akari da ƙwarewar mai haɓaka injin hanyar sadarwa.

Ina da shawarwari guda biyu:

  • Ƙirƙiri ƙa'idar sufuri gwargwadon yiwuwa daga sauran aikace-aikacen don a iya musanya shi cikin sauƙi ba tare da sake rubuta duk lambar ba.
  • Kada ku wuce gona da iri. Idan ba ƙwararren cibiyar sadarwa ba ne kuma ba ku da tabbacin idan kuna buƙatar ka'idar sufuri ta tushen UDP, zaku iya farawa da TCP ko ɗakin karatu wanda ke ba da aminci, sannan gwadawa da auna aikin. Idan kuna fuskantar matsaloli kuma kun tabbata ƙa'idar sufuri ce, to yana iya zama lokacin da za ku ƙirƙiri ka'idar sufuri na ku.

A karshen wannan bangare, ina ba da shawarar ku karanta Gabatarwa zuwa Shirye-shiryen Wasan Wasan Da yawa Brian Hook, wanda ya ƙunshi yawancin batutuwan da aka tattauna a nan.

Yarjejeniyar Aikace-aikace

Yanzu da za mu iya musayar bayanai tsakanin abokan ciniki da uwar garken, muna buƙatar yanke shawarar abin da za mu canja wurin kuma a cikin wane tsari.

Makirci na yau da kullun shine abokan ciniki suna aika shigarwa ko ayyuka zuwa sabar, sabar kuma tana aika yanayin wasan na yanzu ga abokan ciniki.

Sabar ba ta aika da cikakke ba, amma yanayin da aka tace tare da abubuwan da ke kusa da mai kunnawa. Yana yin haka ne saboda dalilai uku. Na farko, jimillar jihar na iya yin girma da yawa don watsawa a mitoci mai yawa. Na biyu, abokan ciniki sun fi sha'awar bayanan gani da sauti, saboda yawancin dabaru na wasan ana kwaikwaya akan sabar wasan. Na uku, a wasu wasannin dan wasa ba ya bukatar sanin wasu bayanai, kamar matsayin abokan gaba a daya bangaren taswirar, domin in ba haka ba, yana iya shakar fakiti kuma ya san ainihin inda zai matsa don kashe shi.

Serialization

Mataki na farko shine musanya bayanan da muke son aikawa (shigarwa ko yanayin wasan) zuwa tsarin da ya dace da watsawa. Ana kiran wannan tsari serialization.

Tunanin nan da nan ya zo a hankali don amfani da tsarin da mutum zai iya karantawa, kamar JSON ko XML. Amma wannan zai zama mara inganci kuma zai ɗauki yawancin tashar ba tare da komai ba.

Maimakon haka, ana ba da shawarar yin amfani da tsarin binary, wanda ya fi dacewa. Wato fakitin za su ƙunshi ƴan bytes ne kawai. A nan dole ne mu yi la'akari da matsalar odar byte, wanda zai iya bambanta akan kwamfutoci daban-daban.

Don jera bayanai, zaku iya amfani da ɗakin karatu, misali:

Kawai tabbatar da ɗakin karatu ya ƙirƙira ma'ajin ajiya masu ɗaukar hoto kuma yana kula da jin daɗi.

Wata hanyar mafita ita ce aiwatar da shi da kanku, ba haka ba ne mai wahala, musamman idan kuna amfani da tsarin tushen bayanai a cikin lambar ku. Bugu da ƙari, zai ba ku damar yin haɓakawa waɗanda ba koyaushe suke yiwuwa ba yayin amfani da ɗakin karatu.

Glenn Fiedler ya rubuta labarai guda biyu akan serialization: Fakitin Karatu da Rubutu и Dabarun Serialization.

Matsawa

Adadin bayanan da aka canjawa wuri tsakanin abokan ciniki da uwar garken yana iyakance ta bandwidth na tashar. Matsawar bayanai zai ba ka damar canja wurin ƙarin bayanai a cikin kowane hoto, ƙara yawan wartsakewa, ko rage buƙatun bandwidth kawai.

Shirya Bit

Dabarar ta farko ita ce tattarawa kaɗan. Ya ƙunshi yin amfani da daidai adadin raƙuman da ake buƙata don bayyana ƙimar da ake so. Misali, idan kuna da enum wanda zai iya samun ƙima daban-daban 16, to a maimakon duka byte (bits 8), kuna iya amfani da bits 4 kawai.

Glenn Fiedler ya bayyana yadda ake aiwatar da wannan a kashi na biyu na labarin. Fakitin Karatu da Rubutu.

Shirye-shiryen Bit yana aiki da kyau musamman tare da hankali, wanda zai zama batun sashe na gaba.

Samfura

Samfura dabara ce ta matsawa mai asara wacce ke amfani da juzu'i na yuwuwar dabi'u don ɓoye ƙima. Hanya mafi sauƙi don aiwatar da ɓarna shine ta zagaye lambobi masu iyo.

Glenn Fiedler (sake!) Ya nuna yadda ake amfani da hankali a aikace a cikin labarinsa Matsin hoto.

Algorithms na matsawa

Dabarar ta gaba za ta zama algorithms matsawa marasa asara.

Anan, a ganina, sune algorithms mafi ban sha'awa guda uku waɗanda kuke buƙatar sani:

  • Huffman coding tare da precomputed code, wanda yake da sauri sosai kuma yana iya haifar da sakamako mai kyau. An yi amfani da shi don damfara fakiti a cikin injin cibiyar sadarwar Quake3.
  • zlib Algorithm ne na matsawa gabaɗaya wanda baya ƙara adadin bayanai. Yaya za ku gani a nan, an yi amfani da shi a aikace-aikace iri-iri. Don sabunta jihohi, yana iya zama mai yawa. Amma yana iya zuwa da amfani idan kuna buƙatar aika kadarori, dogon rubutu ko ƙasa ga abokan ciniki daga sabar.
  • Ana kwafin tsayin gudu tabbas shine mafi sauƙin matsawa algorithm, amma yana da inganci sosai ga wasu nau'ikan bayanai, kuma ana iya amfani dashi azaman matakin aiwatarwa kafin zlib. Ya dace musamman don matsawa ƙasa wanda ya ƙunshi fale-falen fale-falen fale-falen buraka ko voxels wanda ake maimaita abubuwan makwabta da yawa.

delta matsawa

Dabarar matsawa ta ƙarshe ita ce matsawa delta. Ya ta'allaka ne kawai cewa kawai bambance-bambance tsakanin yanayin wasan na yanzu da na ƙarshe da abokin ciniki ya karɓa ana watsa shi.

An fara amfani da shi a cikin injin sadarwar Quake3. Anan akwai labarai guda biyu da ke bayanin yadda ake amfani da su:

Glenn Fiedler shima yayi amfani dashi a kashi na biyu na labarinsa. Matsin hoto.

Enciko

Bugu da ƙari, ƙila za ku buƙaci ɓoye watsa bayanai tsakanin abokan ciniki da uwar garken. Akwai dalilai da yawa akan hakan:

  • Sirri/Sirri: Saƙonni ne kawai mai karɓa zai iya karantawa kuma babu wani maharbi na cibiyar sadarwa da zai iya karanta su.
  • authentication: wanda yake so ya taka rawar dan wasa dole ne ya san mabudinsa.
  • Rigakafin yaudara: zai zama da wahala ga ƙeta ƴan wasa ƙirƙirar nasu fakitin yaudara, dole ne su kwafi tsarin ɓoyewa kuma su nemo maɓalli (wanda ke canzawa akan kowane haɗin gwiwa).

Ina ba da shawarar yin amfani da ɗakin karatu don wannan. Ina ba da shawarar amfani libsodium, saboda yana da sauƙi musamman kuma yana da manyan koyawa. Musamman ban sha'awa shine koyawa a kunne musanya key, wanda ke ba ka damar samar da sababbin maɓalli akan kowane sabon haɗin gwiwa.

Yarjejeniyar Aikace-aikacen: Kammalawa

Wannan yana ƙare ƙa'idar aikace-aikacen. Na yi imani cewa matsawa gaba ɗaya zaɓi ne kuma yanke shawarar amfani da shi ya dogara ne kawai akan wasan da bandwidth da ake buƙata. Encryption, a ganina, ya zama dole, amma a cikin samfurin farko zaka iya yin ba tare da shi ba.

Dabarun Aikace-aikace

Yanzu muna iya sabunta jihar a cikin abokin ciniki, amma muna iya fuskantar matsalolin latency. Mai kunnawa, bayan yin shigarwa, yana buƙatar jira sabuntawar yanayin wasan daga uwar garken don ganin irin tasirin da ya yi a duniya.

Bugu da ƙari, tsakanin sabuntawar jihohi biyu, duniya gaba ɗaya a tsaye take. Idan ƙimar sabuntawar jihar ta yi ƙasa, to ƙungiyoyin za su yi muni sosai.

Akwai dabaru da yawa don rage tasirin wannan matsala, kuma zan kawo su a sashe na gaba.

Jinkirta Dabarun Smooting

Duk dabarun da aka bayyana a cikin wannan sashe an tattauna dalla-dalla a cikin jerin. Multiplayer mai sauri Gabriel Gambetta. Ina ba da shawarar karanta wannan kyakkyawan jerin labarai. Har ila yau, ya haɗa da demo na mu'amala don ganin yadda waɗannan fasahohin ke aiki a aikace.

Dabarar farko ita ce amfani da sakamakon shigarwa kai tsaye ba tare da jiran amsa daga uwar garken ba. Ana kiranta tsinkayar gefen abokin ciniki. Koyaya, lokacin da abokin ciniki ya karɓi sabuntawa daga uwar garken, dole ne ya tabbatar da cewa hasashensa yayi daidai. Idan ba haka ba, to kawai yana buƙatar canza yanayinsa bisa ga abin da ya karɓa daga uwar garken, saboda uwar garken yana da iko. An fara amfani da wannan fasaha a girgizar kasa. Kuna iya karanta ƙarin game da shi a cikin labarin. Review code Engine Fabien Sanglars [fassarar da Habre].

Ana amfani da saitin dabaru na biyu don sassauta motsin wasu ƙungiyoyi tsakanin sabuntawar jihohi biyu. Akwai hanyoyi guda biyu don magance wannan matsala: interpolation da extrapolation. A cikin yanayin tsaka-tsaki, ana ɗaukar jihohi biyu na ƙarshe kuma ana nuna canji daga ɗayan zuwa wancan. Rashin hasara shi ne cewa yana haifar da ɗan ƙaramin jinkiri, saboda abokin ciniki koyaushe yana ganin abin da ya faru a baya. Extrapolation shine game da tsinkayar inda ƙungiyoyin ya kamata su kasance a yanzu bisa yanayin ƙarshe da abokin ciniki ya karɓa. Rashin hasara shi ne cewa idan mahaɗin ya canza gaba ɗaya hanyar motsi, to za a sami babban kuskure tsakanin tsinkaya da matsayi na ainihi.

Ƙarshe, fasaha mafi ci gaba, mai amfani kawai a cikin FPS, ita ce lallausan diyya. Lokacin amfani da lag ramu, uwar garken yana la'akari da jinkirin abokin ciniki lokacin da ya harba a kan manufa. Misali, idan dan wasa ya yi harbin kai a kan allo, amma a hakikanin gaskiya burinsu ya kasance a wani wuri daban saboda jinkirin, to ba daidai ba ne a hana dan wasan hakkin kisa saboda jinkirin. Don haka uwar garken ta mayar da lokaci zuwa lokacin da mai kunnawa ya harba don kwatanta abin da mai kunnawa ya gani a kan allon su kuma duba don samun karo tsakanin harbin da aka yi.

Glenn Fiedler (kamar yadda koyaushe!) ya rubuta labarin a cikin 2004 Physics Network (2004), wanda a cikinsa ya kafa harsashin daidaitawa na simintin physics tsakanin uwar garken da abokin ciniki. A cikin 2014 ya rubuta sabon jerin labarai ilimin kimiyyar sadarwa, wanda a ciki ya bayyana wasu dabaru don daidaita simulations physics.

Hakanan akwai labarai guda biyu akan wiki na Valve, Source Multiplayer Networking и Hanyoyin Lantarki Latency a cikin Abokin ciniki/Server In-game Protocol Design da ingantawa magance jinkirin diyya.

Rigakafin yaudara

Akwai manyan dabarun rigakafin yaudara guda biyu.

Na farko, yana da wahala ga masu yaudara su aika fakitin mugunta. Kamar yadda aka ambata a sama, hanya mai kyau don aiwatar da shi shine ɓoyewa.

Na biyu, uwar garken mai iko yakamata ya karɓi umarni/shigarwa/aiyuka kawai. Kada abokin ciniki ya iya canza yanayi akan uwar garken banda ta hanyar aika shigarwa. Sannan uwar garken, duk lokacin da ta samu bayanai, dole ne ta duba ingancinta kafin a yi amfani da ita.

Dabarun Aikace-aikacen: Ƙarshe

Ina ba da shawarar ku aiwatar da hanyar da za ku kwaikwayi babban latency da ƙarancin wartsakewa don ku iya gwada halayen wasanku a cikin mummunan yanayi, ko da lokacin da abokin ciniki da uwar garken ke gudana akan na'ura ɗaya. Wannan yana sauƙaƙa sosai wajen aiwatar da dabarun santsi na jinkiri.

Sauran Abubuwan Taimako

Idan kuna son bincika wasu albarkatun ƙirar hanyar sadarwa, zaku iya samun su anan:

source: www.habr.com

Add a comment