Dwar il-mudell tan-netwerk fil-logħob għall-jibdew

Dwar il-mudell tan-netwerk fil-logħob għall-jibdew
Għal dawn l-aħħar ġimgħatejn kont qed naħdem fuq il-magna online għal-logħba tiegħi. Qabel dan, ma kont naf xejn dwar in-netwerking fil-logħob, għalhekk qrajt ħafna artikli u għamilt ħafna esperimenti biex nifhem il-kunċetti kollha u nkun kapaċi nikteb il-magna tan-netwerking tiegħi stess.

F'din il-gwida, nixtieq naqsam miegħek id-diversi kunċetti li għandek bżonn titgħallem qabel ma tikteb il-magna tal-logħob tiegħek stess, kif ukoll l-aħjar riżorsi u artikli biex titgħallemhom.

B'mod ġenerali, hemm żewġ tipi ewlenin ta 'arkitetturi tan-netwerk: peer-to-peer u client-server. F'arkitettura peer-to-peer (p2p), id-dejta tiġi trasferita bejn kwalunkwe pari ta' plejers konnessi, filwaqt li f'arkitettura klijent-server, id-dejta tiġi trasferita biss bejn il-plejers u s-server.

Għalkemm l-arkitettura peer-to-peer għadha tintuża f'xi logħob, client-server huwa l-istandard: huwa aktar faċli biex jiġi implimentat, jeħtieġ wisa 'kanal iżgħar, u jagħmilha aktar faċli biex tipproteġi kontra l-qerq. Għalhekk, f'dan it-tutorja se niffukaw fuq l-arkitettura klijent-server.

B'mod partikolari, aħna l-aktar interessati f'servers awtoritarji: f'sistemi bħal dawn, is-server huwa dejjem tajjeb. Pereżempju, jekk plejer jaħseb li jinsab fil-koordinati (10, 5), u s-server jgħidlu li qiegħed f'(5, 3), allura l-klijent għandu jissostitwixxi l-pożizzjoni tiegħu b'dik irrapportata mis-server, u mhux viċi. versa. L-użu ta' servers awtorevoli jagħmilha aktar faċli biex jiġu identifikati l-qarrejja.

Is-sistemi tal-logħob tan-netwerk għandhom tliet komponenti ewlenin:

  • Protokoll tat-trasport: kif id-data tiġi trasferita bejn il-klijenti u s-server.
  • Protokoll ta' applikazzjoni: x'jiġi trażmess mill-klijenti lis-server u mis-server lill-klijenti u f'liema format.
  • Loġika tal-applikazzjoni: kif id-data trasferita tintuża biex taġġorna l-istat tal-klijenti u s-server.

Huwa importanti ħafna li tifhem ir-rwol ta 'kull parti u l-isfidi assoċjati magħhom.

Protokoll tat-trasport

L-ewwel pass huwa li tagħżel protokoll għat-trasport tad-dejta bejn is-server u l-klijenti. Hemm żewġ protokolli tal-Internet għal dan: TCP и UDP. Imma tista 'toħloq il-protokoll tat-trasport tiegħek stess ibbażat fuq wieħed minnhom jew tuża librerija li tużahom.

Tqabbil ta 'TCP u UDP

Kemm TCP kif ukoll UDP huma bbażati fuq IP. L-IP jippermetti li pakkett jiġi trażmess minn sors lil riċevitur, iżda ma jiggarantixxix li l-pakkett mibgħut illum jew għada jilħaq lir-riċevitur, li jilħaqlu mill-inqas darba, u li s-sekwenza tal-pakketti tasal fit-tajjeb. ordni. Barra minn hekk, pakkett jista' jkun fih biss ammont limitat ta' data, mogħtija mill-valur MTU.

UDP huwa biss saff irqiq fuq l-IP. Għalhekk, għandha l-istess limitazzjonijiet. B'kuntrast, TCP għandu ħafna karatteristiċi. Jipprovdi konnessjoni affidabbli u ordnata bejn żewġ nodi b'verifika ta 'żbalji. Għalhekk, TCP huwa konvenjenti ħafna u jintuża f'ħafna protokolli oħra, eż. HTTP, FTP и SMTP. Iżda dawn il-karatteristiċi kollha għandhom prezz: dewmien.

Biex nifhmu għaliex dawn il-funzjonijiet jistgħu jikkawżaw latency, irridu nifhmu kif jaħdem it-TCP. Meta nodu li jibgħat jittrasmetti pakkett lil nodu li jirċievi, jistenna li jirċievi rikonoxximent (ACK). Jekk wara ċertu żmien ma jirċevihx (minħabba li l-pakkett jew ir-rikonoxximent intilef, jew għal xi raġuni oħra), allura jerġa 'jibgħat il-pakkett. Barra minn hekk, TCP jiggarantixxi li l-pakketti jiġu riċevuti fl-ordni korretta, għalhekk sakemm il-pakkett mitluf jiġi riċevut, il-pakketti l-oħra kollha ma jistgħux jiġu pproċessati, anki jekk ikunu diġà ġew irċevuti mill-ospitant li jirċievi.

Imma kif probabbilment tista 'timmaġina, latency fil-logħob multiplayer hija importanti ħafna, speċjalment f'ġeneri ppakkjati bl-azzjoni bħall-FPS. Dan huwa għaliex ħafna logħob jużaw UDP bil-protokoll tagħhom stess.

Protokoll nattiv ibbażat fuq UDP jista 'jkun aktar effiċjenti minn TCP għal diversi raġunijiet. Pereżempju, jista' jimmarka xi pakketti bħala fdati u oħrajn bħala mhux fdati. Għalhekk, ma jimpurtahx jekk il-pakkett mhux fdat jilħaqx lir-riċevitur. Jew jista 'jipproċessa flussi ta' data multipli sabiex pakkett mitluf f'fluss wieħed ma jnaqqasx il-flussi li jifdal. Per eżempju, jista 'jkun hemm ħajt għall-input tal-plejers u ħajt ieħor għall-messaġġi taċ-chat. Jekk messaġġ taċ-chat li mhuwiex urġenti jintilef, mhux se jrażżan l-input li huwa urġenti. Jew protokoll proprjetarju jista' jimplimenta l-affidabbiltà b'mod differenti minn TCP biex ikun aktar effiċjenti f'ambjent tal-logħob tal-vidjo.

Allura, jekk it-TCP tant sucks, allura aħna noħolqu l-protokoll tat-trasport tagħna stess ibbażat fuq UDP?

Huwa ftit aktar ikkumplikat. Anke jekk TCP huwa kważi subottimali għas-sistemi tan-netwerk tal-logħob, jista 'jaħdem pjuttost tajjeb għal-logħba speċifika tiegħek u jiffranka ħin prezzjuż. Pereżempju, il-latenza tista' ma tkunx kwistjoni għal logħba bbażata fuq id-dawran jew għal logħba li tista' tintlagħab biss fuq netwerks LAN, fejn il-latency u t-telf tal-pakketti huma ħafna inqas milli fuq l-Internet.

Ħafna logħob ta 'suċċess, inklużi World of Warcraft, Minecraft u Terraria, jużaw TCP. Madankollu, ħafna mill-FPSs jużaw il-protokolli bbażati fuq l-UDP tagħhom stess, għalhekk nitkellmu aktar dwarhom hawn taħt.

Jekk tiddeċiedi li tuża TCP, kun żgur li hija diżattivata Algoritmu ta 'Nagle, minħabba li jibferja l-pakketti qabel ma jibgħat, li jfisser li żżid il-latenza.

Biex titgħallem aktar dwar id-differenzi bejn UDP u TCP fil-kuntest tal-logħob multiplayer, tista 'taqra l-artiklu ta' Glenn Fiedler UDP vs. TCP.

Protokoll proprju

Allura trid toħloq il-protokoll tat-trasport tiegħek stess, imma ma tafx minn fejn tibda? Int xorti għax Glenn Fiedler kiteb żewġ artikli mill-aqwa dwar dan. Se ssib ħafna ħsibijiet intelliġenti fihom.

L-ewwel artiklu Netwerking għall-Programmaturi tal-Logħob 2008, aktar faċli mit-tieni waħda, Bini ta' Protokoll tan-Netwerk tal-Logħob 2016. Nirrakkomanda li tibda bl-anzjan.

Innota li Glenn Fiedler huwa proponent kbir tal-użu ta 'protokoll personalizzat ibbażat fuq UDP. U wara li taqra l-artikoli tiegħu, inti probabilment tadotta l-opinjoni tiegħu li TCP għandu nuqqasijiet serji fil-logħob tal-kompjuter, u tkun trid timplimenta l-protokoll tiegħek stess.

Imma jekk int ġdid fin-netwerking, tagħmel tajjeb lilek innifsek u uża TCP jew librerija. Biex timplimenta b'suċċess il-protokoll tat-trasport tiegħek, trid titgħallem ħafna minn qabel.

Libreriji tan-netwerk

Jekk għandek bżonn xi ħaġa aktar effiċjenti minn TCP, imma ma tridx tgħaddi mill-battikata li timplimenta l-protokoll tiegħek stess u tidħol f'ħafna dettall, tista 'tuża librerija tan-netwerking. Hemm ħafna minnhom:

Jien ma ppruvajthomx kollha, imma nippreferi ENet għax huwa faċli biex tużah u affidabbli. Barra minn hekk, għandha dokumentazzjoni ċara u tutorja għal dawk li jibdew.

Protokoll tat-Trasport: Konklużjoni

Fil-qosor: hemm żewġ protokolli ewlenin tat-trasport: TCP u UDP. TCP għandu ħafna karatteristiċi utli: affidabilità, preservazzjoni tal-ordni tal-pakketti, skoperta ta 'żbalji. UDP m'għandux dan kollu, iżda TCP min-natura tiegħu żied il-latenza, li hija inaċċettabbli għal xi logħob. Jiġifieri, biex tiżgura latency baxxa, tista 'toħloq il-protokoll tiegħek ibbażat fuq UDP jew tuża librerija li timplimenta protokoll tat-trasport fuq UDP u hija adattata għal logħob tal-kompjuter b'ħafna plejers.

L-għażla bejn TCP, UDP u l-librerija tiddependi fuq diversi fatturi. L-ewwel, mill-bżonnijiet tal-logħba: jeħtieġ latency baxxa? It-tieni nett, mir-rekwiżiti tal-protokoll tal-applikazzjoni: jeħtieġ protokoll affidabbli? Kif se naraw fil-parti li jmiss, huwa possibbli li jinħoloq protokoll ta 'applikazzjoni li għalih protokoll mhux fdat huwa pjuttost adattat. Fl-aħħarnett, jeħtieġ ukoll li tqis l-esperjenza tal-iżviluppatur tal-magna tan-netwerk.

Għandi żewġ pariri:

  • Astratta l-protokoll tat-trasport mill-bqija ta 'l-applikazzjoni kemm jista' jkun sabiex ikun jista 'jiġi sostitwit faċilment mingħajr kitba mill-ġdid tal-kodiċi kollu.
  • Tottimizzax iżżejjed. Jekk m'intix espert tan-netwerking u m'intix ċert jekk għandekx bżonn protokoll tat-trasport personalizzat ibbażat fuq UDP, tista 'tibda b'TCP jew librerija li tipprovdi affidabbiltà, u mbagħad tittestja u tkejjel il-prestazzjoni. Jekk jinqalgħu problemi u inti kunfidenti li l-kawża hija l-protokoll tat-trasport, allura jista 'jkun iż-żmien li toħloq il-protokoll tat-trasport tiegħek stess.

Fl-aħħar ta 'din il-parti, nirrakkomanda li taqra Introduzzjoni għall-Ipprogrammar tal-Logħob Multiplayer minn Brian Hook, li jkopri ħafna mis-suġġetti diskussi hawn.

Protokoll ta' applikazzjoni

Issa li nistgħu niskambjaw data bejn il-klijenti u s-server, irridu niddeċiedu liema data nittrasferixxu u f'liema format.

L-iskema klassika hija li l-klijenti jibagħtu input jew azzjonijiet lis-server, u s-server jibgħat l-istat attwali tal-logħba lill-klijenti.

Is-server jibgħat mhux l-istat sħiħ, iżda stat iffiltrat b'entitajiet li jinsabu ħdejn il-plejer. Jagħmel dan għal tliet raġunijiet. L-ewwel, l-istat komplut jista 'jkun kbir wisq biex jiġi trażmess bi frekwenza għolja. It-tieni nett, il-klijenti huma prinċipalment interessati fid-dejta viżiva u awdjo, minħabba li l-biċċa l-kbira tal-loġika tal-logħob hija simulata fuq is-server tal-logħob. It-tielet nett, f'xi logħob l-attur m'għandux għalfejn ikun jaf ċerta data, pereżempju, il-pożizzjoni tal-ghadu fuq in-naħa l-oħra tal-mappa, inkella jista 'jxomm il-pakketti u jkun jaf eżatt fejn jimxi biex joqtollu.

Serialization

L-ewwel pass huwa li nikkonverti d-dejta li rridu nibagħtu (input jew stat tal-logħba) f'format adattat għat-trażmissjoni. Dan il-proċess jissejjaħ serialization.

Il-ħsieb li jiġi f'moħħi immedjatament huwa li tuża format li jinqara mill-bniedem, bħal JSON jew XML. Iżda dan se jkun kompletament ineffettiv u se jaħli ħafna mill-kanal.

Huwa rakkomandat li tuża l-format binarju minflok, li huwa ħafna aktar kompatt. Jiġifieri, il-pakketti se jkun fihom biss ftit bytes. Hemm problema li għandek tikkonsidra hawn ordni tal-byte, li jistgħu jvarjaw fuq kompjuters differenti.

Biex tisserjelizza d-dejta, tista’ tuża librerija, pereżempju:

Kun żgur li l-librerija toħloq arkivji portabbli u tieħu ħsieb l-endianness.

Soluzzjoni alternattiva hija li timplimentaha lilek innifsek; mhuwiex partikolarment diffiċli, speċjalment jekk tuża approċċ iċċentrat fuq id-dejta għall-kodiċi tiegħek. Barra minn hekk, se jippermettilek li twettaq ottimizzazzjonijiet li mhux dejjem ikunu possibbli meta tuża l-librerija.

Glenn Fiedler kiteb żewġ artikli dwar is-serializzazzjoni: Pakketti Qari u Kitba и Strateġiji ta' Serialization.

Kompressjoni

L-ammont ta 'data trasferita bejn il-klijenti u s-server huwa limitat mill-bandwidth tal-kanal. Il-kompressjoni tad-dejta tippermettilek tittrasferixxi aktar dejta f'kull snapshot, iżżid il-frekwenza tal-aġġornament, jew sempliċement tnaqqas ir-rekwiżiti tal-kanal.

Imballaġġ bit

L-ewwel teknika hija l-ippakkjar daqsxejn. Tikkonsisti fl-użu eżattament tan-numru ta 'bits li huma meħtieġa biex jiddeskrivu l-valur mixtieq. Per eżempju, jekk għandek enum li jista 'jkollu 16-il valur differenti, allura minflok byte sħiħ (8 bits), tista' tuża biss 4 bits.

Glenn Fiedler jispjega kif timplimenta dan fit-tieni parti tal-artiklu Pakketti Qari u Kitba.

L-ippakkjar tal-bit jaħdem speċjalment tajjeb mat-teħid ta 'kampjuni, li se jkun is-suġġett tat-taqsima li jmiss.

Teħid ta' kampjuni

Teħid ta' kampjuni hija teknika ta 'kompressjoni lossy li tuża biss subsett ta' valuri possibbli biex tikkodifika valur. L-eħfef mod biex tiġi implimentata d-diskretizzazzjoni huwa billi jiġu arrotondati n-numri b'punt li jvarja.

Glenn Fiedler (għal darb'oħra!) juri kif ipoġġi l-kampjuni fil-prattika fl-artiklu tiegħu Kompressjoni Snapshot.

Algoritmi ta' kompressjoni

It-teknika li jmiss se tkun algoritmi ta 'kompressjoni mingħajr telf.

Hawn, fl-opinjoni tiegħi, huma t-tliet algoritmi l-aktar interessanti li trid tkun taf:

  • Kodifikazzjoni Huffman b'kodiċi ikkalkulat minn qabel, li huwa estremament mgħaġġel u jista 'jipproduċi riżultati tajbin. Intuża biex jikkompressa pakketti fil-magna tan-netwerking Quake3.
  • zlib huwa algoritmu ta 'kompressjoni għal skopijiet ġenerali li qatt ma jżid l-ammont ta' dejta. Kif tista' tara hawn, intuża f'varjetà ta 'applikazzjonijiet. Jista' jkun żejjed għall-aġġornament tal-istati. Iżda jista 'jkun utli jekk għandek bżonn tibgħat assi, testi twal jew terren lill-klijenti mis-server.
  • Ikkupjar ta' tulijiet - Dan huwa probabbilment l-aktar algoritmu ta 'kompressjoni sempliċi, iżda huwa effettiv ħafna għal ċerti tipi ta' data, u jista 'jintuża bħala pass ta' qabel l-ipproċessar qabel zlib. Huwa partikolarment adattat għall-kompressjoni ta 'terren magħmul minn madum jew voxels li fihom ħafna elementi maġenb huma ripetuti.

Kompressjoni Delta

L-aħħar teknika ta 'kompressjoni hija kompressjoni delta. Tikkonsisti fil-fatt li huma biss trażmessi d-differenzi bejn l-istat attwali tal-logħba u l-aħħar stat riċevut mill-klijent.

L-ewwel intuża fil-magna tan-netwerk Quake3. Hawn żewġ artikli li jispjegaw kif tużah:

Glenn Fiedler użaha wkoll fit-tieni parti tal-artiklu tiegħu Kompressjoni Snapshot.

Kriptaġġ

Barra minn hekk, jista 'jkollok bżonn tikkodifika t-trasferiment ta' informazzjoni bejn il-klijenti u s-server. Hemm diversi raġunijiet għal dan:

  • privatezza/kunfidenzjalità: il-messaġġi jistgħu jinqraw biss mir-riċevitur, u l-ebda persuna oħra li txamm in-netwerk ma tkun tista' taqrahom.
  • awtentikazzjoni: persuna li trid tilgħab ir-rwol ta' plejer trid tkun taf iċ-ċavetta tagħha.
  • Prevenzjoni tal-iqarrqu: Se jkun ħafna aktar diffiċli għal plejers malizzjużi li joħolqu l-pakketti tal-qarriċi tagħhom stess, se jkollhom jirriproduċu l-iskema ta 'kriptaġġ u jsibu ċ-ċavetta (li tinbidel ma' kull konnessjoni).

Nirrakkomanda bil-qawwa li tuża librerija għal dan. Nissuġġerixxi li tuża libsodju, għax hija speċjalment sempliċi u għandha tutorials eċċellenti. Partikolarment interessanti huwa t-tutorja fuq skambju taċ-ċavetta, li jippermettilek tiġġenera ċwievet ġodda ma 'kull konnessjoni ġdida.

Protokoll ta' Applikazzjoni: Konklużjoni

Dan jikkonkludi l-protokoll ta 'applikazzjoni tagħna. Nemmen li l-kompressjoni hija kompletament fakultattiva u d-deċiżjoni li tużaha tiddependi biss fuq il-logħba u l-bandwidth meħtieġa. Il-kriptaġġ, fl-opinjoni tiegħi, huwa obbligatorju, iżda fl-ewwel prototip tista 'tagħmel mingħajrha.

Loġika tal-applikazzjoni

Issa nistgħu naġġornaw l-istat fil-klijent, iżda nistgħu nilqgħu ma 'kwistjonijiet ta' latenza. Il-plejer, wara li jlesti l-input, jeħtieġ li jistenna li l-istat tal-logħba jaġġorna mis-server biex jara x'impatt kellu fuq id-dinja.

Barra minn hekk, bejn żewġ aġġornamenti tal-istat, id-dinja hija kompletament statika. Jekk ir-rata ta 'aġġornament tal-istat hija baxxa, allura l-movimenti jkunu jerky ħafna.

Hemm diversi tekniki biex jitnaqqas l-impatt ta 'din il-problema, u jien ser tkoprihom fit-taqsima li jmiss.

Tekniki ta' twittija tal-latency

It-tekniki kollha deskritti f'din it-taqsima huma diskussi fid-dettall fis-serje Multiplayer b'ritmu mgħaġġel Gabriel Gambetta. Nirrakkomanda ħafna li taqra din is-serje eċċellenti ta 'artikli. Jinkludi wkoll demo interattiva li tħallik tara kif dawn it-tekniki jaħdmu fil-prattika.

L-ewwel teknika hija li tapplika r-riżultat tad-dħul direttament mingħajr ma tistenna tweġiba mis-server. Huwa msejjaħ tbassir min-naħa tal-klijent. Madankollu, meta l-klijent jirċievi aġġornament mis-server, għandu jivverifika li t-tbassir tiegħu kien korrett. Jekk dan ma jkunx il-każ, allura jeħtieġ biss li jibdel l-istat tiegħu skont dak li rċieva mis-server, minħabba li s-server huwa awtoritarju. Din it-teknika kienet użata għall-ewwel darba fi Quake. Tista' taqra aktar dwarha fl-artiklu Reviżjoni tal-kodiċi ta' Quake Engine Fabien Sanglars [traduzzjoni fuq Habré].

It-tieni sett ta 'tekniki jintuża biex itaffu l-moviment ta' entitajiet oħra bejn żewġ aġġornamenti tal-istat. Hemm żewġ modi biex issolvi din il-problema: interpolazzjoni u estrapolazzjoni. Fil-każ ta' interpolazzjoni, jittieħdu l-aħħar żewġ stati u tintwera t-tranżizzjoni minn waħda għall-oħra. L-iżvantaġġ tiegħu huwa li jikkawża ammont żgħir ta 'dewmien għaliex il-klijent dejjem jara dak li ġara fil-passat. L-estrapolazzjoni hija dwar it-tbassir ta' fejn l-entitajiet issa għandhom ikunu bbażati fuq l-aħħar stat riċevut mill-klijent. L-iżvantaġġ tiegħu huwa li jekk l-entità tbiddel kompletament id-direzzjoni tal-moviment, allura jkun hemm żball kbir bejn it-tbassir u l-pożizzjoni attwali.

L-aħħar, l-aktar teknika avvanzata utli biss fl-FPS hija kumpens tad-dewmien. Meta tuża kumpens tad-dewmien, is-server iqis id-dewmien tal-klijent meta jispara fil-mira. Pereżempju, jekk plejer wettaq tir fir-ras fuq l-iskrin tiegħu, iżda fir-realtà l-mira tagħhom kienet f'post differenti minħabba dewmien, allura jkun inġust li l-plejer jiċħad id-dritt li joqtol minħabba dewmien. Għalhekk, is-server jiġbed lura l-ħin lura għall-mument li l-plejer spara biex jissimula dak li ra l-plejer fuq l-iskrin tiegħu u jiċċekkja għal ħabta bejn l-isparatura tiegħu u l-mira.

Glenn Fiedler (bħal dejjem!) kiteb artiklu fl-2004 Fiżika tan-Netwerk (2004), li fih poġġa l-pedament għas-sinkronizzazzjoni tas-simulazzjonijiet tal-fiżika bejn is-server u l-klijent. Fl-2014 kiteb sensiela ġdida ta’ artikli Fiżika tan-Netwerking, li ddeskriva tekniki oħra għas-sinkronizzazzjoni tas-simulazzjonijiet tal-fiżika.

Hemm ukoll żewġ artikli fuq il-wiki Valve, Sors Multiplayer Netwerking и Metodi ta' Kumpens tal-Latenza fid-Disinn u l-Ottimizzazzjoni tal-Protokoll fil-Klijent/Server fil-logħba li jikkunsidraw kumpens għal dewmien.

Prevenzjoni tal-qerq

Hemm żewġ tekniki ewlenin għall-prevenzjoni tal-qerq.

L-ewwel: jagħmilha aktar diffiċli għall-qarrejja biex jibagħtu pakketti malizzjużi. Kif imsemmi hawn fuq, mod tajjeb biex timplimenta dan huwa l-encryption.

It-tieni: server awtoritarju għandu jirċievi biss kmandi/input/azzjonijiet. Il-klijent m'għandux ikun jista' jibdel l-istat fuq is-server ħlief billi jibgħat input. Imbagħad, kull darba li s-server jirċievi input, għandu jiċċekkja jekk huwiex validu qabel jużah.

Loġika tal-applikazzjoni: konklużjoni

Nirrakkomanda li timplimenta mod biex tissimula latenzi għoljin u rati ta 'aġġornament baxxi sabiex tkun tista' tittestja l-imġieba tal-logħba tiegħek f'kundizzjonijiet ħżiena, anke meta l-klijent u s-server ikunu qed jaħdmu fuq l-istess kompjuter. Dan se jissimplifika ħafna l-implimentazzjoni ta 'tekniki ta' twittija tad-dewmien.

Riżorsi Oħra Jgħin

Jekk tixtieq tesplora riżorsi oħra fuq mudelli tan-netwerk, tista’ ssibhom hawn:

Sors: www.habr.com

Żid kumment