Emasontweni amabili edlule bengisebenza ngenjini ye-inthanethi yegeyimu yami. Ngaphambi kwalokhu, ngangingazi lutho mayelana nokuxhumana kwezemidlalo, ngakho-ke ngafunda izindatshana eziningi futhi ngenza izivivinyo eziningi ukuze ngiqonde yonke imiqondo futhi ngikwazi ukubhala injini yami yokuxhumana.
Kulo mhlahlandlela, ngingathanda ukwabelana nawe ngemiqondo ehlukahlukene okudingeka uyifunde ngaphambi kokubhala injini yakho yegeyimu, kanye nezinsiza ezihamba phambili nezindatshana zokuzifunda.
Ngokuvamile, kunezinhlobo ezimbili eziyinhloko zezakhiwo zenethiwekhi: i-peer-to-peer ne-client-server. Ngokwakhiwa kwe-peer-to-peer (p2p), idatha idluliswa phakathi kwanoma yimaphi amapheya wabadlali abaxhunyiwe, kuyilapho esakhiweni seseva yeklayenti, idatha idluliselwa kuphela phakathi kwabadlali neseva.
Nakuba ukwakheka kontanga kuya kontanga kusasetshenziswa kweminye imidlalo, iseva yeklayenti iyindinganiso: kulula ukuyisebenzisa, idinga ububanzi besiteshi esincane, futhi yenza kube lula ukuvikela ngokumelene nokukopela. Ngakho-ke, kulesi sifundo sizogxila ekwakhiweni kwe-client-server.
Ikakhulukazi, sinentshisekelo enkulu kumaseva anegunya: ezinhlelweni ezinjalo, iseva ihlala ilungile. Isibonelo, uma umdlali ecabanga ukuthi usendaweni yezixhumanisi (10, 5), futhi iseva imtshela ukuthi uku-(5, 3), iklayenti kufanele lishintshe indawo yalo ngalelo elibikwe yiseva, hhayi okuphambene nalokho. ngokuphambene. Ukusebenzisa amaseva agunyaziwe kwenza kube lula ukuhlonza abakhohlisi.
Amasistimu amageyimu enethiwekhi anezingxenye ezintathu eziyinhloko:
- Iphrothokholi yezokuthutha: ukuthi idatha idluliselwa kanjani phakathi kwamaklayenti neseva.
- I-protocol yohlelo lokusebenza: yini edluliselwa kusuka kumakhasimende kuya kuseva futhi isuka kuseva iye kumakhasimende futhi ikuyiphi ifomethi.
- I-logic yohlelo lokusebenza: ukuthi idatha edlulisiwe isetshenziswa kanjani ukubuyekeza isimo samaklayenti neseva.
Kubaluleke kakhulu ukuqonda indima yengxenye ngayinye kanye nezinselelo ezihambisana nazo.
Iphrothokholi yezokuthutha
Isinyathelo sokuqala ukukhetha iphrothokholi yokuthutha idatha phakathi kweseva namaklayenti. Kunemithethonqubo emibili ye-inthanethi yalokhu:
Ukuqhathaniswa kwe-TCP ne-UDP
Kokubili i-TCP ne-UDP kusekelwe
I-UDP iyingqimba encane nje phezulu kwe-IP. Ngakho-ke, inemikhawulo efanayo. Ngokuphambene, i-TCP inezici eziningi. Inikeza ukuxhumana okuthembekile, okuhlelekile phakathi kwama-node amabili nokuhlola iphutha. Ngakho-ke, i-TCP ilula kakhulu futhi isetshenziswa kwezinye izivumelwano eziningi, isb.
Ukuze siqonde ukuthi kungani le misebenzi ingabangela ukubambezeleka, sidinga ukuqonda ukuthi i-TCP isebenza kanjani. Lapho i-node yokuthumela idlulisela iphakethe endaweni yokwamukela, ilindele ukuthola ukuvuma (ACK). Uma ngemva kwesikhathi esithile ingakutholi (ngoba iphakethe noma ukuvuma kulahlekile, noma ngesinye isizathu), bese ithumela kabusha iphakethe. Ngaphezu kwalokho, i-TCP iqinisekisa ukuthi amaphakethe atholwa ngendlela efanele, ngakho-ke kuze kube yilapho iphakethe elilahlekile litholwa, wonke amanye amaphakethe awakwazi ukucutshungulwa, noma ngabe asetholwe ngumphathi owamukelayo.
Kodwa njengoba ungase ucabange, ukubambezeleka emidlalweni yabadlali abaningi kubaluleke kakhulu, ikakhulukazi ezinhlotsheni ezigcwele isenzo njenge-FPS. Yingakho imidlalo eminingi isebenzisa i-UDP ngephrothokholi yayo.
Iphrothokholi yomdabu esekwe ku-UDP ingasebenza kahle kune-TCP ngezizathu ezahlukahlukene. Isibonelo, ingamaka amanye amaphakethe njengathembekile kanti amanye angathembekile. Ngakho-ke, akunandaba noma iphakethe elingathenjwa lifinyelela kumamukeli. Noma ingacubungula ukusakazwa kwedatha okuningi ukuze iphakethe elilahlekile ekusakazweni okukodwa lingabambezeli ukusakaza okusele. Isibonelo, kungase kube khona uchungechunge lokufakwayo komdlali nolunye uchungechunge lwemilayezo yengxoxo. Uma umlayezo wengxoxo ongaphuthumi ulahleka, ngeke ubambezele okokufaka okuphuthumayo. Noma iphrothokholi yobunikazi ingase isebenzise ukwethembeka ngendlela ehlukile kune-TCP ukuze isebenze kahle endaweni yegeyimu yevidiyo.
Ngakho-ke, uma i-TCP idonsa kakhulu, sizobe sesizenzela eyethu imithetho yezokuthutha esekelwe ku-UDP?
Kuyinkimbinkimbi ngokwengeziwe. Noma i-TCP icishe ingabi namandla kakhulu kumasistimu enethiwekhi yokudlala, ingasebenza kahle kumdlalo wakho othile futhi ikugcinele isikhathi esibalulekile. Isibonelo, ukubambezeleka kungase kungabi yinkinga kugeyimu esekelwe ekuphenduleni noma igeyimu engadlalwa kuphela kumanethiwekhi e-LAN, lapho ukubambezeleka nokulahlekelwa kwephakethe kuphansi kakhulu kune-Inthanethi.
Imidlalo eminingi eyimpumelelo, ehlanganisa i-World of Warcraft, i-Minecraft ne-Terraria, isebenzisa i-TCP. Nokho, ama-FPS amaningi asebenzisa izivumelwano zawo ezisekelwe ku-UDP, ngakho-ke sizokhuluma kabanzi ngawo ngezansi.
Uma unquma ukusebenzisa i-TCP, qiniseka ukuthi ivaliwe
Ukuze ufunde kabanzi mayelana nomehluko phakathi kwe-UDP ne-TCP kumongo wemidlalo yabadlali abaningi, ungafunda isihloko sika-Glenn Fiedler.
Iphrothokholi eyakho
Ngakho-ke ufuna ukudala iphrothokholi yakho yezokuthutha, kodwa awazi ukuthi ungaqala kuphi? Unenhlanhla ngoba u-Glenn Fiedler ubhale izindatshana ezimbili ezimangalisayo ngalokhu. Uzothola imicabango eminingi ehlakaniphile kuzo.
Isihloko sokuqala
Qaphela ukuthi u-Glenn Fiedler ungumsekeli omkhulu wokusebenzisa umthetho olandelwayo ngokwezifiso osuselwe ku-UDP. Futhi ngemva kokufunda izindatshana zakhe, cishe uzokwamukela umbono wakhe wokuthi i-TCP inokushiyeka okukhulu emidlalweni yevidiyo, futhi uzofuna ukusebenzisa iphrothokholi yakho.
Kodwa uma umusha ekuxhumaneni nomphakathi, zenzele umusa futhi usebenzise i-TCP noma umtapo wolwazi. Ukuze usebenzise ngempumelelo iphrothokholi yakho yezokuthutha, udinga ukufunda okuningi kusengaphambili.
Imitapo yolwazi yenethiwekhi
Uma udinga okuthile okusebenza kahle kakhulu kune-TCP, kodwa ungafuni ukubhekana nobunzima bokusebenzisa iphrothokholi yakho nokungena emininingwaneni eminingi, ungasebenzisa umtapo wolwazi wokuxhumana. Ziningi zazo:
yojimbo Glenn FiedlerI-RakNet , engasasekelwa, kodwa imfoloko yayoSLikeNet Kubonakala sengathi isasebenza.I-ENet iwumtapo wezincwadi owenzelwe i-FPS yabadlali abaningiCube I-GameNetworkingSockets Ivalvu
Angikazizami zonke, kodwa ngincamela i-ENet ngoba kulula ukuyisebenzisa futhi ithembekile. Ngaphezu kwalokho, inamadokhumenti acacile kanye nesifundo sabaqalayo.
Iphrothokholi Yezokuthutha: Isiphetho
Ukufingqa: kunezinqubo ezimbili ezibalulekile zokuthutha: i-TCP ne-UDP. I-TCP inezici eziningi eziwusizo: ukwethembeka, ukulondolozwa kwe-oda lephakethe, ukutholwa kwamaphutha. I-UDP ayinakho konke lokhu, kodwa i-TCP ngokwemvelo yayo ikhuphule ukubambezeleka, okungamukeleki kweminye imidlalo. Okusho ukuthi, ukuze uqinisekise ukubambezeleka okuphansi, ungazakhela eyakho iphrothokholi esekelwe ku-UDP noma usebenzise umtapo wolwazi esebenzisa umthetho olandelwayo wezokuthutha ku-UDP futhi oguqulelwe kumageyimu wevidiyo wabadlali abaningi.
Ukukhetha phakathi kwe-TCP, i-UDP nomtapo wolwazi kuncike ezintweni ezimbalwa. Okokuqala, kusukela ezidingweni zomdlalo: ingabe idinga i-latency ephansi? Okwesibili, kusukela kuzidingo zephrothokholi yohlelo lokusebenza: ingabe idinga umthetho olandelwayo othembekile? Njengoba sizobona engxenyeni elandelayo, kungenzeka ukudala iphrothokholi yohlelo lokusebenza lapho iphrothokholi engathenjwa ifaneleka impela. Okokugcina, udinga futhi ukunaka ulwazi lomthuthukisi wenjini yenethiwekhi.
Nginezeluleko ezimbili:
- Sika iphrothokholi yezokuthutha kulo lonke uhlelo lokusebenza ngangokunokwenzeka ukuze ishintshwe kalula ngaphandle kokubhala kabusha yonke ikhodi.
- Ungalungiseleli ngokweqile. Uma ungeyena uchwepheshe wenethiwekhi futhi ungaqiniseki ukuthi udinga iphrothokholi yezokuthutha esekelwe ku-UDP yangokwezifiso, ungaqala nge-TCP noma umtapo wolwazi ohlinzeka ngokwethembeka, bese uhlola futhi ulinganise ukusebenza. Uma kuphakama izinkinga futhi uqiniseka ukuthi imbangela yi-protocol yezokuthutha, khona-ke kungase kube isikhathi sokwenza iphrothokholi yakho yezokuthutha.
Ekupheleni kwalesi sigaba, ngincoma ukuthi ufunde
Iphrothokholi yohlelo lokusebenza
Manje njengoba sesingakwazi ukushintshanisa idatha phakathi kwamaklayenti neseva, sidinga ukunquma ukuthi iyiphi idatha esizoyidlulisela nokuthi ngayiphi ifomethi.
Uhlelo lwakudala ukuthi amaklayenti athumela okokufaka noma izenzo kuseva, futhi iseva ithumela isimo samanje segeyimu kumakhasimende.
Iseva ayithumeli isimo esigcwele, kodwa isimo esihlungiwe esinamabhizinisi aseduze nomdlali. Lokhu ukwenza ngezizathu ezintathu. Okokuqala, isimo esiphelele singase sibe sikhulu kakhulu ukuthi singasakazwa ngemvamisa ephezulu. Okwesibili, amaklayenti ikakhulukazi anentshisekelo kudatha ebonwayo neyomsindo, ngoba ingqondo eminingi yomdlalo ilingisa kuseva yomdlalo. Okwesithathu, kweminye imidlalo umdlali akadingi ukwazi idatha ethile, isibonelo, indawo yesitha kolunye uhlangothi lwemephu, ngaphandle kwalokho angahogela amaphakethe futhi azi kahle ukuthi kufanele athuthe kuphi ukuze ambulale.
Ukwenziwa kwe-serialization
Isinyathelo sokuqala siwukuguqula idatha esifuna ukuyithumela (isimo sokokufaka noma igeyimu) ibe ifomethi elungele ukudluliselwa. Le nqubo ibizwa ngokuthi
Umcabango ofika ngokushesha engqondweni owokusebenzisa ifomethi efundeka umuntu, njenge-JSON noma i-XML. Kodwa lokhu ngeke kusebenze ngokuphelele futhi kuzomosha iningi lesiteshi.
Kunconywa ukusebenzisa ifomethi kanambambili esikhundleni salokho, ehlangene kakhulu. Okusho ukuthi, amaphakethe azoqukatha amabhayithi ambalwa kuphela. Kunenkinga okufanele icatshangelwe lapha
Ukuze uhlele idatha, ungasebenzisa ilabhulali, isibonelo:
I-FlatBuffers GoogleICap'n Proto Inkampani ye-Sandstormokusanhlamvu UShane Grant noRandolph Voorhees
Vele wenze isiqiniseko sokuthi ilabhulali idala izingobo zomlando eziphathwayo futhi inendaba nokungapheleli.
Esinye isixazululo ukusisebenzisa ngokwakho; akunzima ikakhulukazi, ikakhulukazi uma usebenzisa indlela yokugxilisa idatha kukhodi yakho. Ngaphezu kwalokho, izokuvumela ukuthi wenze ukulungiselelwa okungenzeki ngaso sonke isikhathi lapho usebenzisa umtapo wolwazi.
U-Glenn Fiedler ubhale izindatshana ezimbili mayelana ne-serialization:
Ukucindezela
Inani ledatha elidluliswayo phakathi kwamakhasimende neseva linqunyelwe umkhawulokudonsa wesiteshi. Ukucindezela idatha kuzokuvumela ukuthi udlulisele idatha eyengeziwe kusifinyezo ngasinye, ukhuphule imvamisa yokubuyekeza, noma umane wehlise izidingo zesiteshi.
Ukupakisha okuncane
Indlela yokuqala ukupakisha kancane. Kuqukethe ukusebenzisa inani eliqondile lamabhithi adingekayo ukuchaza inani elifunekayo. Isibonelo, uma une-enum engaba namanani ahlukene angu-16, esikhundleni se-byte ephelele (amabhithi angu-8), ungasebenzisa amabhithi angu-4 kuphela.
U-Glenn Fiedler uchaza ukuthi lokhu kwenziwa kanjani engxenyeni yesibili ye-athikili
Ukupakisha okuncane kusebenza kahle ikakhulukazi ngesampula, okuzoba isihloko sesigaba esilandelayo.
Ukusampula
U-Glenn Fiedler (futhi!) ubonisa ukuthi kwenziwa kanjani ukwenza amasampula esihlokweni sakhe
Ama-algorithms wokucindezela
Indlela elandelayo izoba ama-algorithms wokucindezela angalahleki.
Lapha, ngokubona kwami, kukhona ama-algorithms amathathu athakazelisa kakhulu okudingeka ukwazi:
Ukufaka ikhodi ye-Huffman ngekhodi eyenziwe ngekhompyutha, eshesha kakhulu futhi engaveza imiphumela emihle. Yayisetshenziselwa ukucindezela amaphakethe enjini yenethiwekhi ye-Quake3.i-zlib iyi-algorithm yenhloso evamile yokucindezela engakhulisi inani ledatha. Ungabona kanjanilapha , isetshenziswe ezinhlobonhlobo zezinhlelo zokusebenza. Ingase ingasebenzi ekubuyekezeni izifundazwe. Kodwa kungaba usizo uma udinga ukuthumela amafa, imibhalo emide noma indawo kumakhasimende kusuka kuseva.Ikopisha ubude bokugijima - Lena cishe i-algorithm elula yokucindezela, kodwa iphumelela kakhulu ezinhlotsheni ezithile zedatha, futhi ingasetshenziswa njengesinyathelo sokucubungula ngaphambilini ngaphambi kwe-zlib. Ifaneleka kakhulu ukucindezela indawo eyenziwe ngamathayili noma ama-voxel lapho izinto eziningi ezincikene ziphindaphindwa khona.
Ukucindezela kwe-Delta
Indlela yokugcina yokucindezela i-delta compression. Kubandakanya iqiniso lokuthi umehluko kuphela phakathi kwesimo segeyimu samanje nesimo sokugcina esitholwe yiklayenti odluliselwayo.
Yaqala ukusetshenziswa enjinini yenethiwekhi ye-Quake3. Nazi izindatshana ezimbili ezichaza ukuthi zisetshenziswa kanjani:
I-Quake3 Networking Model UBrian HookUkubuyekezwa Kwekhodi Yomthombo we-Quake 3: Imodeli Yenethiwekhi UFabien Sanglars [ukuhumusha izihloko ezikhuluma ngo-HabrΓ©, bheka isigaba βImodeli yenethiwekhiβ]
UGlenn Fiedler naye wayisebenzisa engxenyeni yesibili yesihloko sakhe
Ukubethela
Ngaphezu kwalokho, ungase udinge ukubethela ukudluliselwa kolwazi phakathi kwamaklayenti kanye neseva. Kunezizathu eziningana zalokhu:
- ubumfihlo/ukugcinwa kuyimfihlo: imilayezo ingafundwa kuphela umamukeli, futhi akekho omunye umuntu ohogela inethiwekhi ozokwazi ukuyifunda.
- authentication: umuntu ofuna ukudlala indawo yomdlali kumele azi ukhiye wakhe.
- Ukuvimbela ukukopela: Kuzoba nzima kakhulu kubadlali abanonya ukuthi bazenzele amaphakheji abo okukhohlisa, kuzodingeka bakhiqize kabusha uhlelo lokubethela futhi bathole ukhiye (oshintshayo ngoxhumano ngalunye).
Ngincoma kakhulu ukusebenzisa umtapo wolwazi kulokhu. Ngiphakamisa ukusebenzisa
Iphrothokholi Yesicelo: Isiphetho
Lokhu kuphetha inqubo yethu yohlelo lokusebenza. Ngikholelwa ukuthi ukucindezela kungokuzikhethela ngokuphelele futhi isinqumo sokuyisebenzisa sincike kuphela kumdlalo kanye nomkhawulokudonsa odingekayo. Ukubethela, ngombono wami, kuyimpoqo, kodwa ku-prototype yokuqala ungayenza ngaphandle kwayo.
I-logic yohlelo lokusebenza
Manje sesiyakwazi ukubuyekeza isimo kuklayenti, kodwa singase sibhekane nezinkinga zokubambezeleka. Umdlali, ngemva kokuqeda okokufaka, udinga ukulinda isimo segeyimu ukuthi sibuyekeze kusuka kuseva ukuze abone ukuthi kube nomthelela muni emhlabeni.
Ngaphezu kwalokho, phakathi kwezibuyekezo ezimbili zombuso, umhlaba umile ngokuphelele. Uma izinga lokubuyekezwa kombuso liphansi, khona-ke ukunyakaza kuzoba nzima kakhulu.
Kunamasu amaningana okunciphisa umthelela wale nkinga, futhi ngizowahlanganisa esigabeni esilandelayo.
I-Latency Smoothing Techniques
Wonke amasu achazwe kulesi sigaba axoxwa ngokuningiliziwe ochungechungeni
Indlela yokuqala ukusebenzisa umphumela wokufaka ngokuqondile ngaphandle kokulinda impendulo evela kuseva. Kubizwa ukubikezela kohlangothi lweklayenti. Kodwa-ke, lapho iklayenti lithola isibuyekezo esivela kuseva, kufanele liqinisekise ukuthi ukubikezela kwalo bekuyiqiniso. Uma kungenjalo, khona-ke udinga nje ukushintsha isimo sakhe ngokuvumelana nalokho akutholile kuseva, ngoba iseva inegunya. Le nqubo yaqala ukusetshenziswa ku-Quake. Ungafunda kabanzi ngakho esihlokweni
Isethi yesibili yamasu isetshenziswa ukwenza bushelelezi ukunyakaza kwamanye amabhizinisi phakathi kwezibuyekezo ezimbili zombuso. Kunezindlela ezimbili zokuxazulula le nkinga: i-interpolation kanye ne-extrapolation. Endabeni yokuhunyushwa, izifunda ezimbili zokugcina zithathwa futhi ukuguqulwa kusuka kwesinye kuya kwesinye kuyaboniswa. Ububi bayo ukuthi idala ukubambezeleka okuncane ngoba iklayenti lihlale libona okwenzeka esikhathini esedlule. I-Extrapolation imayelana nokubikezela ukuthi amabhizinisi kufanele abe kuphi manje ngokusekelwe esimweni sokugcina esitholwe iklayenti. Ububi bayo ukuthi uma ibhizinisi lishintsha ngokuphelele isiqondiso sokunyakaza, khona-ke kuzoba nephutha elikhulu phakathi kwesibikezelo nesimo sangempela.
Indlela yakamuva, ethuthuke kakhulu esebenziseka ku-FPS kuphela isinxephezelo sangemuva. Uma usebenzisa isinxephezelo se-lag, iseva icabangela ukubambezeleka kweklayenti lapho idubula ekuqondisweni. Isibonelo, uma umdlali enze i-headshot esikrinini sakhe, kodwa empeleni ithagethi yakhe ibisendaweni ehlukile ngenxa yokubambezeleka, kuzoba okungalungile ukunqabela umdlali ilungelo lokubulala ngenxa yokubambezeleka. Ngakho-ke, iseva ibuyisela emuva isikhathi emuva esikhathini lapho umdlali adubule khona ukuze alingise lokho umdlali akubone esikrinini sakhe futhi ahlole ukungqubuzana phakathi kokudubula kwakhe nokuhlosiwe.
U-Glenn Fiedler (njengenjwayelo!) wabhala isihloko ngo-2004
Kukhona futhi izindatshana ezimbili ku-Valve wiki,
Ukuvimbela ukukopela
Kunezindlela ezimbili eziyinhloko zokuvimbela ukukopela.
Okokuqala: ukwenza kube nzima kakhulu kubakhohlisi ukuthumela amaphakethe anonya. Njengoba kushiwo ngenhla, indlela enhle yokwenza lokhu ukubethela.
Okwesibili: iseva enegunya kufanele ithole imiyalo/okokufaka/izenzo kuphela. Iklayenti akufanele likwazi ukushintsha isimo kuseva ngaphandle kokuthumela okokufaka. Bese, isikhathi ngasinye iseva ithola okokufaka, kufanele ihlole ukuthi kuvumelekile yini ngaphambi kokuyisebenzisa.
I-logic yohlelo lokusebenza: isiphetho
Ngincoma ukuthi usebenzise indlela yokulingisa ukubambezeleka okuphezulu kanye namazinga aphansi okuvuselela ukuze ukwazi ukuhlola ukuziphatha kwegeyimu yakho ngaphansi kwezimo ezimbi, ngisho noma iklayenti neseva isebenza kukhompuyutha efanayo. Lokhu kuzokwenza kube lula kakhulu ukuqaliswa kokulibaziseka amasu okushelela.
Ezinye Izinsiza Eziwusizo
Uma ungathanda ukuhlola ezinye izinsiza kumamodeli enethiwekhi, ungazithola lapha:
Ibhulogi likaGlenn Fiedler - Ibhulogi yakhe yonke ifanele ukufundwa, kunezihloko eziningi ezinhle lapho.kuyinto Zonke izindatshana kubuchwepheshe benethiwekhi ziyaqoqwa.Awesome Game Networking ngu-M. Fatih MAR wuhlu oluphelele lwezihloko namavidiyo ezinjini zemidlalo yamavidiyo aku-inthanethi.- Π
Wiki ye-r/gamedev subreddit Kukhona futhi izixhumanisi eziningi eziwusizo.
Source: www.habr.com