PÄdÄjÄs divas nedÄļas esmu strÄdÄjis pie savas spÄles tieÅ”saistes dzinÄja. Pirms tam es vispÄr neko nezinÄju par tÄ«klu veidoÅ”anu spÄlÄs, tÄpÄc lasÄ«ju daudz rakstu un veicu daudz eksperimentu, lai saprastu visus jÄdzienus un varÄtu uzrakstÄ«t savu tÄ«kla dzinÄju.
Å ajÄ rokasgrÄmatÄ es vÄlos dalÄ«ties ar jums dažÄdos jÄdzienos, kas jums jÄapgÅ«st, pirms rakstÄt savu spÄles programmu, kÄ arÄ« par labÄkajiem resursiem un rakstiem, lai tos apgÅ«tu.
KopumÄ ir divi galvenie tÄ«kla arhitektÅ«ras veidi: vienÄdranga un klienta-servera. VienÄdranga (p2p) arhitektÅ«rÄ dati tiek pÄrsÅ«tÄ«ti starp jebkuriem savienotu atskaÅotÄju pÄriem, savukÄrt klienta-servera arhitektÅ«rÄ dati tiek pÄrsÅ«tÄ«ti tikai starp atskaÅotÄjiem un serveri.
Lai gan dažÄs spÄlÄs joprojÄm tiek izmantota peer-to-peer arhitektÅ«ra, klients-serveris ir standarts: to ir vieglÄk ieviest, nepiecieÅ”ams mazÄks kanÄla platums un atvieglo aizsardzÄ«bu pret krÄpÅ”anos. TÄpÄc Å”ajÄ apmÄcÄ«bÄ mÄs koncentrÄsimies uz klienta-servera arhitektÅ«ru.
Jo Ä«paÅ”i mÅ«s visvairÄk interesÄ autoritÄrie serveri: Å”ÄdÄs sistÄmÄs serverim vienmÄr ir taisnÄ«ba. PiemÄram, ja spÄlÄtÄjs uzskata, ka atrodas koordinÄtÄs (10, 5), un serveris viÅam saka, ka viÅÅ” atrodas uz (5, 3), klientam ir jÄaizstÄj sava pozÄ«cija ar servera ziÅoto, nevis vietni. otrÄdi. Izmantojot autoritatÄ«vus serverus, ir vieglÄk identificÄt krÄpniekus.
TÄ«kla spÄļu sistÄmÄm ir trÄ«s galvenie komponenti:
Transporta protokols: kÄ dati tiek pÄrsÅ«tÄ«ti starp klientiem un serveri.
Lietojumprogrammas protokols: kas un kÄdÄ formÄtÄ tiek pÄrraidÄ«ts no klientiem uz serveri un no servera uz klientiem.
Lietojumprogrammu loÄ£ika: kÄ pÄrsÅ«tÄ«tie dati tiek izmantoti, lai atjauninÄtu klientu un servera stÄvokli.
Ir ļoti svarÄ«gi saprast katras daļas lomu un ar tÄm saistÄ«tos izaicinÄjumus.
Transporta protokols
Pirmais solis ir izvÄlÄties protokolu datu pÄrsÅ«tÄ«Å”anai starp serveri un klientiem. Å im nolÅ«kam ir divi interneta protokoli: TCP Šø UDP. Bet jÅ«s varat izveidot savu transporta protokolu, pamatojoties uz kÄdu no tiem, vai izmantot bibliotÄku, kas tos izmanto.
TCP un UDP salÄ«dzinÄjums
Gan TCP, gan UDP ir balstÄ«ti uz IP. IP ļauj pÄrsÅ«tÄ«t paketi no avota adresÄtam, bet negarantÄ, ka nosÅ«tÄ«tÄ pakete agrÄk vai vÄlÄk sasniegs adresÄtu, ka tÄ sasniegs to vismaz vienu reizi un ka pakeÅ”u secÄ«ba nonÄks pareizajÄ pasÅ«tÄ«jums. TurklÄt paketÄ var bÅ«t tikai ierobežots datu apjoms, ko nosaka vÄrtÄ«ba MTU.
UDP ir tikai plÄns slÄnis virs IP. TÄpÄc tam ir tÄdi paÅ”i ierobežojumi. Turpretim TCP ir daudz funkciju. Tas nodroÅ”ina uzticamu, sakÄrtotu savienojumu starp diviem mezgliem ar kļūdu pÄrbaudi. LÄ«dz ar to TCP ir ļoti Ärts un tiek izmantots daudzos citos protokolos, piem. HTTP, ftp Šø SMTP. Bet visÄm Ŕīm funkcijÄm ir cena: kavÄÅ”anÄs.
Lai saprastu, kÄpÄc Ŕīs funkcijas var izraisÄ«t latentumu, mums ir jÄsaprot, kÄ darbojas TCP. Kad sÅ«tÄ«Å”anas mezgls pÄrsÅ«ta paketi saÅÄmÄjam mezglam, tas sagaida, ka saÅems apstiprinÄjumu (ACK). Ja pÄc noteikta laika tas to nesaÅem (jo pakete vai apstiprinÄjums ir pazaudÄts, vai kÄda cita iemesla dÄļ), tad tas nosÅ«ta paketi atkÄrtoti. TurklÄt TCP garantÄ, ka paketes tiek saÅemtas pareizÄ secÄ«bÄ, tÄpÄc, kamÄr nav saÅemta pazaudÄtÄ pakete, visas pÄrÄjÄs paketes nevar apstrÄdÄt, pat ja tÄs jau ir saÅÄmis saÅÄmÄjs resursdators.
Bet, kÄ jÅ«s droÅ”i vien varat iedomÄties, latentums vairÄku spÄlÄtÄju spÄlÄs ir ļoti svarÄ«gs, jo Ä«paÅ”i tÄdos žanros kÄ FPS. TÄpÄc daudzas spÄles izmanto UDP ar savu protokolu.
VietÄjais UDP protokols dažÄdu iemeslu dÄļ var bÅ«t efektÄ«vÄks par TCP. PiemÄram, tas var atzÄ«mÄt dažas paketes kÄ uzticamas un citas kÄ neuzticamas. TÄpÄc tam ir vienalga, vai neuzticamÄ pakete sasniedz adresÄtu. Vai arÄ« tÄ var apstrÄdÄt vairÄkas datu straumes, lai pazaudÄta pakete vienÄ straumÄ nepalÄninÄtu atlikuÅ”Äs straumes. PiemÄram, var bÅ«t pavediens atskaÅotÄja ievadei un cits pavediens tÄrzÄÅ”anas ziÅojumiem. Ja tiek pazaudÄts tÄrzÄÅ”anas ziÅojums, kas nav steidzams, tas nepalÄninÄs ievadi, kas ir steidzama. Vai arÄ« patentÄts protokols var ieviest uzticamÄ«bu citÄdi nekÄ TCP, lai tas bÅ«tu efektÄ«vÄks videospÄļu vidÄ.
TÄtad, ja TCP tik ļoti iesÅ«cas, tad mÄs izveidosim paÅ”i savu transporta protokolu, pamatojoties uz UDP?
Tas ir nedaudz sarežģītÄk. Lai gan TCP ir gandrÄ«z neoptimÄls spÄļu tÄ«kla sistÄmÄm, tas var diezgan labi darboties jÅ«su konkrÄtajÄ spÄlÄ un ietaupÄ«t dÄrgo laiku. PiemÄram, latentums var nebÅ«t problÄma uz gÄjieniem balstÄ«tai spÄlei vai spÄlei, ko var spÄlÄt tikai LAN tÄ«klos, kur latentums un pakeÅ”u zudumi ir daudz mazÄki nekÄ internetÄ.
Daudzas veiksmÄ«gas spÄles, tostarp World of Warcraft, Minecraft un Terraria, izmanto TCP. TomÄr lielÄkÄ daļa FPS izmanto savus protokolus, kuru pamatÄ ir UDP, tÄpÄc tÄlÄk par tiem runÄsim vairÄk.
Ja nolemjat izmantot TCP, pÄrliecinieties, vai tas ir atspÄjots Nagles algoritms, jo tas buferÄ paketes pirms nosÅ«tÄ«Å”anas, kas nozÄ«mÄ, ka tas palielina latentumu.
Lai uzzinÄtu vairÄk par atŔķirÄ«bÄm starp UDP un TCP vairÄku spÄlÄtÄju spÄļu kontekstÄ, varat izlasÄ«t Glena FÄ«dlera rakstu UDP vs. TCP.
Savs protokols
TÄtad vÄlaties izveidot savu transporta protokolu, bet nezinÄt, ar ko sÄkt? Jums ir paveicies, jo Glens FÄ«dlers par to ir uzrakstÄ«jis divus pÄrsteidzoÅ”us rakstus. TajÄs atradÄ«si daudz gudru domu.
Å emiet vÄrÄ, ka Glens FÄ«dlers ir liels pielÄgota protokola, kura pamatÄ ir UDP, izmantoÅ”anas atbalstÄ«tÄjs. Un pÄc viÅa rakstu izlasÄ«Å”anas jÅ«s, iespÄjams, pieÅemsit viÅa viedokli, ka TCP ir nopietni trÅ«kumi videospÄlÄs, un jÅ«s vÄlaties ieviest savu protokolu.
Bet, ja esat iesÄcÄjs tÄ«klu veidoÅ”anÄ, izdariet sev labu un izmantojiet TCP vai bibliotÄku. Lai veiksmÄ«gi ieviestu savu transporta protokolu, jums ir daudz jÄapgÅ«st iepriekÅ”.
TÄ«kla bibliotÄkas
Ja jums ir nepiecieÅ”ams kaut kas efektÄ«vÄks par TCP, bet nevÄlaties iet cauri sava protokola ievieÅ”anai un daudzÄm detaļÄm, varat izmantot tÄ«kla bibliotÄku. To ir daudz:
Es neesmu izmÄÄ£inÄjis tos visus, bet es dodu priekÅ”roku ENet, jo tas ir viegli lietojams un uzticams. TurklÄt tajÄ ir skaidra dokumentÄcija un apmÄcÄ«ba iesÄcÄjiem.
Transporta protokols: SecinÄjums
RezumÄjot: ir divi galvenie transporta protokoli: TCP un UDP. TCP ir daudz noderÄ«gu funkciju: uzticamÄ«ba, pakeÅ”u pasÅ«tÄ«jumu saglabÄÅ”ana, kļūdu noteikÅ”ana. UDP tÄ visa nav, bet TCP pÄc savas bÅ«tÄ«bas ir palielinÄjis latentumu, kas dažÄm spÄlÄm ir nepieÅemami. Tas ir, lai nodroÅ”inÄtu zemu latentumu, varat izveidot savu protokolu, pamatojoties uz UDP, vai izmantot bibliotÄku, kas ievieÅ” UDP transporta protokolu un ir pielÄgota vairÄku spÄlÄtÄju videospÄlÄm.
IzvÄle starp TCP, UDP un bibliotÄku ir atkarÄ«ga no vairÄkiem faktoriem. PirmkÄrt, no spÄles vajadzÄ«bÄm: vai tai ir nepiecieÅ”ams zems latentums? OtrkÄrt, no lietojumprogrammas protokola prasÄ«bÄm: vai tam ir nepiecieÅ”ams uzticams protokols? KÄ redzÄsim nÄkamajÄ daļÄ, ir iespÄjams izveidot lietojumprogrammas protokolu, kuram diezgan piemÄrots ir neuzticams protokols. Visbeidzot, jÄÅem vÄrÄ arÄ« tÄ«kla dzinÄja izstrÄdÄtÄja pieredze.
Man ir divi padomi:
Cik vien iespÄjams, noÅemiet transporta protokolu no pÄrÄjÄs lietojumprogrammas, lai to varÄtu viegli nomainÄ«t, nepÄrrakstot visu kodu.
NepÄrmÄrÄ«gi optimizÄjiet. Ja neesat tÄ«klu eksperts un neesat pÄrliecinÄts, vai jums ir nepiecieÅ”ams pielÄgots uz UDP balstÄ«ts transporta protokols, varat sÄkt ar TCP vai bibliotÄku, kas nodroÅ”ina uzticamÄ«bu, un pÄc tam pÄrbaudÄ«t un novÄrtÄt veiktspÄju. Ja rodas problÄmas un esat pÄrliecinÄts, ka iemesls ir transporta protokols, iespÄjams, ir pienÄcis laiks izveidot savu transporta protokolu.
Tagad, kad mÄs varam apmainÄ«ties ar datiem starp klientiem un serveri, mums ir jÄizlemj, kÄdus datus pÄrsÅ«tÄ«t un kÄdÄ formÄtÄ.
KlasiskÄ shÄma ir tÄda, ka klienti nosÅ«ta ievadi vai darbÄ«bas uz serveri, un serveris nosÅ«ta klientiem paÅ”reizÄjo spÄles stÄvokli.
Serveris nosÅ«ta nevis pilnu stÄvokli, bet gan filtrÄtu stÄvokli ar entÄ«tijÄm, kas atrodas atskaÅotÄja tuvumÄ. ViÅÅ” to dara trÄ«s iemeslu dÄļ. PirmkÄrt, pilnais stÄvoklis var bÅ«t pÄrÄk liels, lai to pÄrraidÄ«tu augstÄ frekvencÄ. OtrkÄrt, klientus galvenokÄrt interesÄ vizuÄlie un audio dati, jo lielÄkÄ daļa spÄles loÄ£ikas tiek simulÄta spÄles serverÄ«. TreÅ”kÄrt, dažÄs spÄlÄs spÄlÄtÄjam nav jÄzina noteikti dati, piemÄram, ienaidnieka atraÅ”anÄs vieta kartes otrÄ pusÄ, pretÄjÄ gadÄ«jumÄ viÅÅ” var Å”Åaukt paciÅas un precÄ«zi zinÄt, kur pÄrvietoties, lai viÅu nogalinÄtu.
SerializÄcija
Pirmais solis ir konvertÄt datus, ko vÄlamies nosÅ«tÄ«t (ievades vai spÄles stÄvokli), pÄrsÅ«tÄ«Å”anai piemÄrotÄ formÄtÄ. Å o procesu sauc serializÄcija.
Doma, kas uzreiz nÄk prÄtÄ, ir izmantot cilvÄkam lasÄmu formÄtu, piemÄram, JSON vai XML. Bet tas bÅ«s pilnÄ«gi neefektÄ«vs un izniekos lielÄko daļu kanÄla.
TÄ vietÄ ieteicams izmantot binÄro formÄtu, kas ir daudz kompaktÄks. Tas nozÄ«mÄ, ka paketÄs bÅ«s tikai daži baiti. Å eit ir jÄÅem vÄrÄ problÄma baitu secÄ«ba, kas dažÄdos datoros var atŔķirties.
Lai serializÄtu datus, varat izmantot bibliotÄku, piemÄram:
VienkÄrÅ”i pÄrliecinieties, ka bibliotÄka veido pÄrnÄsÄjamus arhÄ«vus un rÅ«pÄjas par to, lai tÄ bÅ«tu pabeigta.
AlternatÄ«vs risinÄjums ir to ieviest paÅ”am; tas nav Ä«paÅ”i sarežģīti, it Ä«paÅ”i, ja kodam izmantojat uz datiem orientÄtu pieeju. TurklÄt tas ļaus veikt optimizÄcijas, kas ne vienmÄr ir iespÄjamas, izmantojot bibliotÄku.
Starp klientiem un serveri pÄrsÅ«tÄ«to datu apjomu ierobežo kanÄla joslas platums. Datu saspieÅ”ana ļaus pÄrsÅ«tÄ«t vairÄk datu katrÄ momentuzÅÄmumÄ, palielinÄt atjauninÄÅ”anas biežumu vai vienkÄrÅ”i samazinÄt kanÄla prasÄ«bas.
Bitu iepakojums
PirmÄ tehnika ir bitu iepakoÅ”ana. Tas sastÄv no tieÅ”i tÄda bitu skaita izmantoÅ”anas, kÄds nepiecieÅ”ams, lai aprakstÄ«tu vÄlamo vÄrtÄ«bu. PiemÄram, ja jums ir enum, kurÄ var bÅ«t 16 dažÄdas vÄrtÄ«bas, tad vesela baita (8 bitu) vietÄ varat izmantot tikai 4 bitus.
Bitu iepakoÅ”ana Ä«paÅ”i labi darbojas ar paraugu ÅemÅ”anu, kas bÅ«s nÄkamÄs sadaļas tÄma.
Paraugu ÅemÅ”ana
Paraugu ÅemÅ”ana ir zudumu saspieÅ”anas paÅÄmiens, kas vÄrtÄ«bas kodÄÅ”anai izmanto tikai iespÄjamo vÄrtÄ«bu apakÅ”kopu. VienkÄrÅ”Äkais veids, kÄ ieviest diskretizÄciju, ir peldoÅ”Ä komata skaitļu noapaļoÅ”ana.
Å eit, manuprÄt, ir trÄ«s interesantÄkie algoritmi, kas jums jÄzina:
Hafmena kodÄÅ”ana ar iepriekÅ” aprÄÄ·inÄtu kodu, kas ir ÄrkÄrtÄ«gi Ätrs un var dot labus rezultÄtus. To izmantoja pakeÅ”u saspieÅ”anai Quake3 tÄ«kla dzinÄjÄ.
zlib ir vispÄrÄjas nozÄ«mes saspieÅ”anas algoritms, kas nekad nepalielina datu apjomu. KÄ var redzÄt Å”eit, tas ir izmantots dažÄdÄs lietojumprogrammÄs. Tas var bÅ«t lieks statusu atjauninÄÅ”anai. Bet tas var bÅ«t noderÄ«gi, ja klientiem no servera ir jÄnosÅ«ta lÄ«dzekļi, gari teksti vai reljefs.
Notiek darbÄ«bas garumu kopÄÅ”ana - Å is, iespÄjams, ir vienkÄrÅ”Äkais saspieÅ”anas algoritms, taÄu tas ir ļoti efektÄ«vs noteiktiem datu veidiem, un to var izmantot kÄ pirmapstrÄdes darbÄ«bu pirms zlib. Tas ir Ä«paÅ”i piemÄrots, lai saspiestu reljefu, kas sastÄv no flÄ«zÄm vai vokseļiem, kuros atkÄrtojas daudzi blakus esoÅ”ie elementi.
Delta kompresija
PÄdÄjÄ saspieÅ”anas metode ir delta kompresija. Tas sastÄv no tÄ, ka tiek pÄrraidÄ«tas tikai atŔķirÄ«bas starp paÅ”reizÄjo spÄles stÄvokli un pÄdÄjo klienta saÅemto stÄvokli.
To pirmo reizi izmantoja Quake3 tÄ«kla dzinÄjÄ. Å eit ir divi raksti, kas izskaidro, kÄ to izmantot:
TurklÄt jums var bÅ«t nepiecieÅ”ams Å”ifrÄt informÄcijas pÄrsÅ«tÄ«Å”anu starp klientiem un serveri. Tam ir vairÄki iemesli:
privÄtums/konfidencialitÄte: ziÅojumus var lasÄ«t tikai adresÄts, un neviena cita persona, kas smeļas tÄ«klÄ, nevarÄs tos izlasÄ«t.
autentifikÄcija: personai, kura vÄlas spÄlÄt spÄlÄtÄja lomu, ir jÄzina viÅa atslÄga.
KrÄpÅ”anÄs novÄrÅ”ana: Ä»aunprÄtÄ«gajiem spÄlÄtÄjiem bÅ«s daudz grÅ«tÄk izveidot savas krÄpÅ”anÄs pakotnes, viÅiem bÅ«s jÄreproducÄ Å”ifrÄÅ”anas shÄma un jÄatrod atslÄga (kas mainÄs ar katru savienojumu).
Es ļoti iesaku Å”im nolÅ«kam izmantot bibliotÄku. Iesaku lietot libnÄtrijs, jo tas ir Ä«paÅ”i vienkÄrÅ”s un tajÄ ir lieliskas apmÄcÄ«bas. ÄŖpaÅ”i interesanta ir apmÄcÄ«ba par atslÄgu apmaiÅa, kas ļauj Ä£enerÄt jaunas atslÄgas ar katru jaunu savienojumu.
PieteikÅ”anÄs protokols: SecinÄjums
Tas noslÄdz mÅ«su lietojumprogrammas protokolu. Es uzskatu, ka saspieÅ”ana ir pilnÄ«gi neobligÄta, un lÄmums par tÄs izmantoÅ”anu ir atkarÄ«gs tikai no spÄles un nepiecieÅ”amÄ joslas platuma. Å ifrÄÅ”ana, manuprÄt, ir obligÄta, bet pirmajÄ prototipÄ var iztikt bez tÄs.
Lietojumprogrammas loģika
Tagad mÄs varam atjauninÄt klienta statusu, taÄu var rasties latentuma problÄmas. SpÄlÄtÄjam pÄc ievades pabeigÅ”anas jÄgaida spÄles stÄvokļa atjauninÄÅ”ana no servera, lai redzÄtu, kÄda ir tÄ ietekme uz pasauli.
TurklÄt starp diviem stÄvokļa atjauninÄjumiem pasaule ir pilnÄ«gi statiska. Ja stÄvokļa atjauninÄÅ”anas Ätrums ir zems, kustÄ«bas bÅ«s ļoti saraustÄ«tas.
Å Ä«s problÄmas ietekmes mazinÄÅ”anai ir vairÄki paÅÄmieni, un es tos apskatÄ«Å”u nÄkamajÄ sadaļÄ.
Latenta izlÄ«dzinÄÅ”anas metodes
Visas Å”ajÄ sadaÄ¼Ä aprakstÄ«tÄs metodes ir detalizÄti aplÅ«kotas sÄrijÄ Ätrgaitas vairÄku spÄlÄtÄju spÄle Gabriels Gambeta. Es ļoti iesaku izlasÄ«t Å”o lielisko rakstu sÄriju. Tas ietver arÄ« interaktÄ«vu demonstrÄciju, kas ļauj redzÄt, kÄ Å”Ä«s metodes darbojas praksÄ.
Pirmais paÅÄmiens ir ievadÄ«t ievades rezultÄtu tieÅ”i, negaidot atbildi no servera. Tas tiek saukts klienta puses prognozÄÅ”ana. TomÄr, kad klients saÅem atjauninÄjumu no servera, tam ir jÄpÄrbauda, āāvai tÄ prognoze bija pareiza. Ja tas tÄ nav, tad viÅam vienkÄrÅ”i jÄmaina stÄvoklis atbilstoÅ”i tam, ko viÅÅ” saÅÄma no servera, jo serveris ir autoritÄrs. Å o paÅÄmienu pirmo reizi izmantoja Quake. VairÄk par to varat lasÄ«t rakstÄ Quake Engine koda apskats Fabiens SanglÄrs [tulkojums par HabrÄ].
OtrÄ metožu kopa tiek izmantota, lai izlÄ«dzinÄtu citu entÄ«tiju kustÄ«bu starp diviem stÄvokļa atjauninÄjumiem. Ir divi veidi, kÄ atrisinÄt Å”o problÄmu: interpolÄcija un ekstrapolÄcija. InterpolÄcijas gadÄ«jumÄ tiek Åemti pÄdÄjie divi stÄvokļi un parÄdÄ«ta pÄreja no viena uz otru. TÄ trÅ«kums ir tÄds, ka tas rada nelielu kavÄÅ”anos, jo klients vienmÄr redz, kas noticis pagÄtnÄ. EkstrapolÄcijas mÄrÄ·is ir paredzÄt, kur entÄ«tijÄm tagad vajadzÄtu bÅ«t, pamatojoties uz pÄdÄjo klienta saÅemto stÄvokli. TÄs trÅ«kums ir tÄds, ka, ja entÄ«tija pilnÄ«bÄ maina kustÄ«bas virzienu, tad starp prognozi un faktisko pozÄ«ciju bÅ«s liela kļūda.
JaunÄkÄ, vismodernÄkÄ tehnika, kas ir noderÄ«ga tikai FPS kavÄjuma kompensÄcija. Izmantojot kavÄjuma kompensÄciju, serveris Åem vÄrÄ klienta kavÄÅ”anos, kad tas Å”auj mÄrÄ·Ä«. PiemÄram, ja spÄlÄtÄjs izpildÄ«ja Å”Ävienu ar galvu uz sava ekrÄna, bet patiesÄ«bÄ viÅa mÄrÄ·is kavÄÅ”anÄs dÄļ atradÄs citÄ vietÄ, tad bÅ«tu negodÄ«gi liegt spÄlÄtÄjam tiesÄ«bas nogalinÄt aizkavÄÅ”anÄs dÄļ. TÄpÄc serveris attina laiku atpakaļ lÄ«dz brÄ«dim, kad spÄlÄtÄjs izÅ”Äva, lai simulÄtu to, ko spÄlÄtÄjs redzÄja savÄ ekrÄnÄ, un pÄrbaudÄ«tu, vai nav sadursmes starp Å”Ävienu un mÄrÄ·i.
Glens FÄ«dlers (kÄ vienmÄr!) rakstÄ«ja rakstu 2004. gadÄ TÄ«kla fizika (2004), kurÄ viÅÅ” lika pamatus fizikas simulÄciju sinhronizÄÅ”anai starp serveri un klientu. 2014. gadÄ viÅÅ” uzrakstÄ«ja jaunu rakstu sÄriju TÄ«kla fizika, kurÄ aprakstÄ«ti citi paÅÄmieni fizikas simulÄciju sinhronizÄÅ”anai.
Ir divi galvenie krÄpÅ”anas novÄrÅ”anas paÅÄmieni.
PirmkÄrt: apgrÅ«tinÄt krÄpniekiem ļaunprÄtÄ«gu pakeÅ”u nosÅ«tÄ«Å”anu. KÄ minÄts iepriekÅ”, labs veids, kÄ to Ä«stenot, ir Å”ifrÄÅ”ana.
OtrkÄrt: autoritÄram serverim vajadzÄtu saÅemt tikai komandas/ievadi/darbÄ«bas. Klientam nevajadzÄtu bÅ«t iespÄjai mainÄ«t servera stÄvokli, izÅemot, nosÅ«tot ievadi. PÄc tam katru reizi, kad serveris saÅem ievadi, tam pirms lietoÅ”anas jÄpÄrbauda, āāvai tÄ ir derÄ«ga.
Pielietojuma loÄ£ika: secinÄjums
Iesaku ieviest veidu, kÄ simulÄt lielu latentumu un zemu atsvaidzes intensitÄti, lai varÄtu pÄrbaudÄ«t spÄles darbÄ«bu sliktos apstÄkļos, pat ja klients un serveris darbojas vienÄ datorÄ. Tas ievÄrojami vienkÄrÅ”os kavÄÅ”anÄs izlÄ«dzinÄÅ”anas paÅÄmienu ievieÅ”anu.
Citi noderīgi resursi
Ja vÄlaties izpÄtÄ«t citus tÄ«kla modeļu resursus, varat tos atrast Å”eit:
Glena FÄ«llera emuÄrs ā ir vÄrts izlasÄ«t visu viÅa emuÄru, tur ir daudz lielisku rakstu. Å eit Visi raksti par tÄ«kla tehnoloÄ£ijÄm ir apkopoti.
Lielisks spÄļu tÄ«kls M. Fatih MAR ir visaptveroÅ”s rakstu un video saraksts par tieÅ”saistes videospÄļu dzinÄjiem.