Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber

Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
Software-ka adeeg ahaan, kaabayaasha adeeg ahaan, madal adeeg ahaan, madal isgaadhsiin ahaan adeeg ahaan, shir muuqaal ahaan adeeg ahaan, ka waran ciyaaraha daruuriga adeeg ahaan? Horay waxaa jiray isku dayo dhowr ah oo lagu abuurayay ciyaaraha daruuriga ah (Cloud Gaming), sida Stadia, oo ay dhawaan bilowday Google. Stadia kuma cusba WebRTC, laakiin kuwa kale ma u isticmaali karaan WebRTC si la mid ah?

Thanh Nguyen wuxuu go'aansaday inuu ku tijaabiyo fursadan mashruuciisa isha furan ee CloudRetro. CloudRetro waxay ku salaysan tahay Pion, caan ah Maktabada WebRTC oo ku salaysan Go (mahad Muujiyay Kooxda horumarinta Pion si ay gacan uga geystaan ​​diyaarinta maqaalkan). Maqaalkan, Thanh wuxuu bixiyaa dulmar guud oo ku saabsan qaab dhismeedka mashruuciisa, wuxuuna sidoo kale ka hadlayaa waxyaabihii waxtarka lahaa ee uu bartay iyo caqabadaha uu la kulmay intii uu ku guda jiray shaqadiisa.

entry

Sannadkii hore, markii Google uu ku dhawaaqay Stadia, way i afuuftay maskaxdayda. Fikraddu waa mid gaar ah oo cusub oo aan si joogto ah ula yaabay sida ay tani xitaa suurtogal u tahay tignoolajiyada jira. Rabitaanka inaan si ka sii fiican u fahmo mawduucan ayaa igu kalliftay inaan abuuro nooc ii gaar ah oo ah ciyaarta daruuraha il furan. Natiijadu waxay ahayd mid cajiib ah. Hoos waxaan jeclaan lahaa inaan wadaago habka shaqada ee sanadkayga mashruuc.

TLDR: nooca slide gaaban oo leh muuqaalo

Waa maxay sababta ciyaarta daruurtu ay tahay mustaqbalka

Waxaan aaminsanahay in Cloud Gaming uu dhawaan noqon doono jiilka soo socda ee maaha ciyaaraha oo kaliya, laakiin sidoo kale meelaha kale ee sayniska kombiyuutarka. Ciyaarta Cloud waa meesha ugu saraysa ee macmiilka/nooca adeegaha. Qaabkani waxa uu kor u qaadaa maaraynta dhabarka waxana uu yareeyaa shaqada hore isaga oo ku marti galinaya macquulka ciyaarta server fog iyo sawirada/maqalka u soo gudbinaya macmiilka. Server-ku waxa uu sameeyaa habayn culus si markaa macmiilku aanu ugu naxariisanayn xaddidaadda qalabka.

Google Stadia dhab ahaantii wuxuu kuu ogolaanayaa inaad ciyaarto Ciyaaraha AAA (sida ciyaaraha blockbuster-ka sare) ee ku jira is-dhexgalka sida YouTube. Hab la mid ah ayaa lagu dabaqi karaa codsiyada kale ee culus ee khadka tooska ah sida nidaamka hawlgalka ama naqshada garaafyada 2D/3D, iwm. si aan si joogto ah ugu socodsiin karno aaladaha-spec-hoose ee meelo badan.

Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
Mustaqbalka tignoolajiyadan: Bal qiyaas haddii Microsoft Windows 10 uu ku socdo browserka Chrome?

Ciyaarta Cloud waa farsamo ahaan adag

Ciyaartu waa mid ka mid ah meelaha naadirka ah ee loo baahan yahay jawaab-celin joogto ah oo degdeg ah. Haddii marmar aan la kulanno daahitaan 2 ilbiriqsi ah markaan gujineyno bogga, tani waa mid la aqbali karo. Fiidiyowyada tooska ah waxay u muuqdaan inay dib u dhacaan dhowr ilbiriqsi, laakiin wali waxay bixiyaan isticmaal macquul ah. Si kastaba ha noqotee, haddii ciyaartu ay si joogto ah u dhacdo 500ms, waa wax aan la ciyaari karin. Hadafkayagu waa inaan gaadhno daahsoon aad u hooseeya si farqiga u dhexeeya wax gelinta iyo warbaahintu u ahaado mid yar intii suurtagal ah. Sidaa darteed, habka soo jireenka ah ee fiidiyaha fiidiyaha maaha mid halkan lagu dabaqi karo.

Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
Guud ahaan Cloud Game Template

Isha furan mashruuca CloudRetro

Waxaan go'aansaday in aan abuuro muunad tijaabo ah ciyaarta daruuriga ah si aan u arko in waxaas oo dhami ay suurtogal tahay iyada oo la xakameynayo shabakadaha adag. Waxaan Golang u doortay caddaynta fikradda sababtoo ah waxay ahayd luqadda aan aad u yaqaan oo si fiican ugu habboonayd hirgelintan sababo kale oo badan, sidaan markii dambe ogaaday. Go waa sahlan tahay oo si dhakhso ah ayey u horumaraysaa; Kanaalada Go waxay ku fiican yihiin maaraynta farriimaha badan.

Mashruuca CloudRetro.io waa adeeg ciyaaraha daruuriga ah ee il furan oo loogu talagalay ciyaaraha retro. Hadafka mashruucu waa in la keeno khibradda ciyaaraha ee ugu raaxada badan ciyaaraha dhaqameed ee retro oo lagu daro ciyaartoy badan.
Waxaad wax badan ka baran kartaa mashruuca halkan: https://github.com/giongto35/cloud-game.

CloudRetro shaqeynta

CloudRetro waxay isticmaashaa ciyaaraha retro si ay u muujiso awooda ciyaaraha daruuriga. Kaas oo kuu ogolaanaya inaad hesho khibrado badan oo ciyaaraha gaarka ah.

  • Qaadashada ciyaarta
    • Dib-u-ciyaar degdeg ah marka la furayo bogga; looma baahna download ama rakibid
    • Wuxuu ku shaqeeyaa browserka mobaylka, markaa looma baahna software si loo socodsiiyo

  • Kulamada ciyaarta waxaa lagu wadaagi karaa agabyo badan waxaana lagu kaydin karaa daruuraha marka xigta ee aad gasho
  • Ciyaarta waa la daadihin karaa, ama waxaa hal mar wada ciyaari kara dhowr isticmaalayaasha:
    • Crowdplay sida TwitchPlayPokemon, kaliya ka badan oo iskutallaab ah iyo waqti-dhabta ah
    • Ciyaaraha khadka tooska ah Isticmaalayaal badan ayaa ciyaari kara iyaga oo aan dejin shabakad. Samurai Shodown hadda waxaa ku ciyaari kara 2 ciyaartoy shabakada CloudRetro

    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Nooca demo ee ciyaarta ciyaartoy badan oo khadka tooska ah oo ku yaal aalado kala duwan

    Infrastructure

    Shuruudaha iyo tikniyoolajiyada kaydsan

    Hoos waxaa ku qoran liiska shuruudaha aan dhigay ka hor inta aan bilaabin mashruuca.

    1. Hal ciyaaryahan
    Shuruuddan waxaa laga yaabaa inaysan u muuqan mid aad muhiim u ah ama halkan iska cad, laakiin waa mid ka mid ah qaadashadayda muhiimka ah, waxay u oggolaaneysaa ciyaarta daruuriga ah inay ka fogaato adeegyada qulqulka dhaqameed ee suurtogalka ah. Haddii aan diirada saarno ciyaarta hal-ciyaaryahan, waxaan ka takhalusi karnaa server-ka dhexe ama CDN sababtoo ah uma baahnid inaan u qulqulno dadweynaha. Halkii aad ku shubi lahayd durdurrada seerfar-waaska ama u gudbinta xidhmooyinka server-ka WebSocket-ka dhexe, durdurrada adeegga waxaa si toos ah loogu geeyaa isticmaalaha iyada oo loo marayo isku xirka WebRTC-ka-fiil.

    2. Warbaahineed daahitaan oo hooseeya
    Akhrinta ku saabsan Stadia, waxaan inta badan arkaa WebRTC oo lagu sheegay maqaallada qaarkood. Waxaan xaqiiqsaday in WebRTC ay tahay tignoolajiyad heersare ah oo ku habboon isticmaalka ciyaaraha daruuriga ah. WebRTC waa mashruuc siiya daalacashada mareegaha iyo barnaamijyada moobilka wada xiriirka waqtiga-dhabta ah iyada oo loo marayo API fudud. Waxay bixisaa isku xidhka faca-ilaa-faca, waxaa loo habeeyay warbaahinta, waxayna leedahay codec-yada caadiga ah ee lagu dhex dhisay sida VP8 iyo H264.

    Waxaan mudnaanta siiyay hubinta khibrada isticmaale ee ugu wanaagsan ee suurtogalka ah ilaalinta sawirada tayada sare leh. Khasaaraha qaar waa la aqbali karaa algorithm-ka. Google Stadia waxay leedahay tillaabo dheeri ah oo lagu dhimayo cabbirka sawirka serferka, iyo xayndaabyada waxaa kor loogu qaaday tayada sare ka hor inta aan loo gudbin asxaabta.

    3. Kaabayaasha dhaqaalaha oo la qaybiyey oo leh jiheynta juqraafiga
    Si kastaba ha ahaatee sida loo hagaajiyay algoorithm isku-riixinta iyo koodka, shabakadu wali waa qodobka go'aaminta ee ka qayb qaata daahitaanka. Nashqaduhu waa inuu lahaadaa habab lagu lammaaniyo server-ka ugu dhow isticmaalaha si loo yareeyo wakhtiga safarka-wareega ah (RTT). Nashqaduhu waa inuu lahaadaa 1 xidhiidhiye iyo dhawr adeegayaal qulqulka ah oo lagu qaybiyey aduunka oo dhan: US West, US East, Europe, Singapore, China. Dhammaan server-yada qulqulka leh waa inay gebi ahaanba go'doon noqdaan. Nidaamku wuxuu hagaajin karaa qaybintiisa marka server-ku ku biiro ama ka baxo shabakadda. Sidaa darteed, oo leh taraafikada ballaaran, ku darida server-yada dheeraadka ah waxay u oggolaaneysaa cabbir siman.

    4. Waafaqid Browser
    Ciyaarta Cloud waxay ku jirtaa sida ugu wanaagsan marka ay uga baahan tahay ugu yar isticmaalayaasha. Tani waxay ka dhigan tahay in ay suurtagal tahay in lagu shaqeeyo browserka. Browser-yadu waxay ka caawiyaan inay khibradda ciyaaraha ka dhigaan mid ugu raaxaysata isticmaalayaasha, iyaga oo ka badbaadinaya inay rakibaan software iyo qalab. Browser-yadu waxa kale oo ay caawiyaan bixinta shaqada iskutallaabta ee u dhaxaysa noocyada mobilada iyo kuwa miiska. Nasiib wanaag, WebRTC si wanaagsan ayaa looga taageeraa daalacashada kala duwan.

    5. Kala saarida cad ee interface interface iyo adeegga
    Waxaan adeega ciyaaraha daruuriga u arkaa madal. Qof kastaa waa inuu awoodaa inuu wax kasta ku xidho goobta. Hadda waan isku daray LibRetro oo leh adeegga ciyaaraha daruuriga ah sababtoo ah LibRetro waxay bixisaa interface emulator kulan qurux badan ciyaaraha retro sida SNES, GBA, PS.

    6. Qolalka ciyaartoyda badan, ciyaarta dadka iyo isku xidhka dibadda (deep-link) ee ciyaarta
    CloudRetro waxay taageertaa ciyaaro badan oo cusub sida CrowdPlay iyo Online Multiplayer ee ciyaaraha retro. Haddii dhowr isticmaale ay furaan isku-xirnaan isku mid ah kombiyuutaro kala duwan, waxay arki doonaan ciyaar la mid ah orodka waxayna xitaa awoodi doonaan inay ku biiraan.

    Waxaa intaa dheer, gobolada ciyaarta waxaa lagu kaydiyaa kaydinta daruuraha. Tani waxay u ogolaaneysaa isticmaalayaasha inay ku sii wataan ciyaarta waqti kasta qalab kasta oo kale.

    7. Is-dheellitirnaanta toosan
    Sida SAAS kasta oo maalmahan ah, ciyaaraha daruuriga ah waa in loo qaabeeyey si siman loo cabbiri karo. Naqshadaynta isku-duwaha-shaqaale ayaa kuu ogolaanaysa inaad ku darto shaqaale badan si ay ugu adeegaan taraafikada badan.

    8. Wax xidhiidh ah lama laha hal daruur
    Kaabayaasha CloudRetro waxaa lagu marti galiyay bixiyeyaasha daruuraha kala duwan (Digital Ocean, Alibaba, bixiyaha gaarka ah) ee gobolo kala duwan. Waxaan awood u yeeshaa in aan ku dhex ordo weelka Docker ee kaabayaasha oo aan dejiyo goobaha shabakada anigoo isticmaalaya qoraal bash ah si aan uga fogaado in lagu xiro hal daruur bixiye. Marka la isku daro tan NAT Traversal ee WebRTC, waxaan yeelan karnaa dabacsanaan aan ku geyno CloudRetro goob kasta oo daruur ah iyo xitaa mashiinada isticmaale kasta.

    Naqshadaynta dhismaha

    Shaqaale: (ama server-ka qulqulka leh ee aan kor ku soo sheegnay) wuu badiyaa ciyaaraha, wuxuu wadaa dhuumaha cod-bixinta, oo u sii qulqulaya warbaahinta codka leh isticmaalayaasha. Tusaalooyinka shaqaalaha ayaa loo qaybiyaa adduunka oo dhan, shaqaale kastaana wuxuu qabsan karaa kulamo badan oo isticmaale isku mar ah.

    Iskuduwaha: ayaa mas'uul ka ah isku-darka isticmaalaha cusub iyo shaqaalaha ugu habboon ee baahinta. Isku duwaha ayaa shaqaalaha kula falgala WebSocket.

    Kaydinta gobolka ciyaarta: kaydinta fog ee dhexe ee dhammaan gobolada ciyaarta. Kaydintani waxay bixisaa hawlo muhiim ah sida kaydinta/rarka fog.

    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Qaab dhismeedka heerka sare ee CloudRetro

    Qoraalka gaarka ah

    Marka isticmaale cusub uu furo CloudRetro ee tillaabooyinka 1 iyo 2 ee lagu muujiyey shaxanka hoose, isuduwaha oo ay la socdaan liiska shaqaalaha la heli karo ayaa laga codsanayaa bogga koowaad. Taas ka dib, tallaabada 3 macmiilku wuxuu xisaabiyaa dib u dhaca dhammaan musharraxiinta isagoo isticmaalaya codsi ping HTTP ah. Liiskan dib-u-dhacyada ayaa markaa dib loogu celiyaa isku-duwaha si uu u go'aamiyo shaqaalaha ugu habboon ee u adeega isticmaalaha. Tallaabada 4 ee hoose waxay abuurtaa ciyaarta. Xidhiidhka qulqulka WebRTC ayaa ka dhex abuurmay isticmaalaha iyo shaqaalaha loo xilsaaray.
    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Qoraalka isticmaalaha ka dib helitaanka gelitaanka

    Maxaa ku jira gudaha shaqaalaha

    Ciyaarta iyo dhuumaha qulqulka ayaa lagu kaydiyaa gudaha shaqaalaha si gooni gooni ah oo macluumaadka halkaas lagu dhaafsado iyada oo loo marayo interface. Waqtigan xaadirka ah, isgaarsiintan waxaa lagu fuliyaa iyada oo la wareejinayo xogta xusuusta iyada oo loo marayo Kanaalka Golang isla habkaas. Hadafka xiga waa kala soocidda, i.e. bilaabista madax banaan ee ciyaarta hab kale.

    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Isdhexgalka qaybaha shaqaalaha

    Qaybaha ugu muhiimsan:

    • WebRTC: qayb macmiil ah oo aqbala gelinta isticmaalaha oo ka soo saara warbaahinta ku-meel-gaadhka ah ee server-ka.
    • Ku dayashada ciyaarta: qaybta ciyaarta. Waad ku mahadsan tahay maktabadda Libretro, nidaamku wuxuu awood u leeyahay inuu ciyaarta ku socodsiiyo isla habka isla markaana uu dhexda u galo warbaahinta iyo qulqulka gelinta.
    • Xirmooyinka ciyaarta dhexdeeda waa la qabtaa oo loo diraa codeeyaha.
    • Codka codeeyaha: dhuumo codeed qaada oo qaada xayndaab-warbaahineed, ku xayndaab gadaasha, oo soo saarta sawirro/maqal codaysan.

    РСализация

    CloudRetro waxay ku tiirsan tahay WebRTC inay tahay tignoolajiyada laf dhabarta, markaa ka hor intaanan quusin faahfaahinta hirgelinta Golang, waxaan go'aansaday inaan ka hadlo WebRTC lafteeda. Tani waa tignoolajiyada cajiibka ah oo si weyn iga caawisay gaarista daahitaanka ilbiriqsi-hoosaadka ee baahinta xogta.

    WebRTC

    WebRTC waxaa loogu talagalay in lagu bixiyo isku xirka isku-faga-fadeed ee tayada sare leh ee abka moobiilka iyo daalacashada iyadoo la isticmaalayo API-yo fudud.

    Socdaalka NAT

    WebRTC waxay caan ku tahay NAT Traversal functionality. WebRTC waxaa loogu talagalay isgaarsiinta faca-ilaa-fac. Hadafkeedu waa in la helo dariiqa tooska ah ee ugu habboon, iyada oo laga fogaanayo marinnada NAT-ka iyo dab-damiska ee isgaarsiinta faca-ilaa-faca iyada oo loo marayo hab la yiraahdo ICE. Iyada oo qayb ka ah habkan, WebRTC APIs waxay helayaan cinwaankaaga IP-ga ee dadweynaha iyagoo isticmaalaya STUN servers oo u sii gudbi serverka (DAAR) marka xidhiidh toos ah la samayn kari waayo.

    Si kastaba ha ahaatee, CloudRetro si buuxda ugama faa'iidaysan sifadan. Xidhiidhkeeda isku-filka ahi kama dhex jiraan isticmaalayaasha, laakiin waxay u dhexeeyaan isticmaalayaasha iyo adeegayaasha daruuraha. Dhinaca server-ka ee moodeelku waxa uu leeyahay xaddidaadyo isgaarsiineed oo ka yar kan caadiga ah ee isticmaalaha. Tani waxay kuu ogolaaneysaa inaad horay u furto dekedaha soo galaya ama aad si toos ah u isticmaasho cinwaannada IP-ga dadweynaha, maadaama uusan server-ku ka dambeyn NAT.

    Markii hore, waxaan rabay inaan u rogo mashruuca meel lagu qaybiyo ciyaaraha Cloud Gaming. Fikradda waxay ahayd in loo oggolaado abuurayaasha ciyaarta inay bixiyaan ciyaaraha iyo agabka qulqulka. Isticmaalayaashuna waxay si toos ah ula macaamili doonaan bixiyeyaasha. Habkan baahsanaanta, CloudRetro waa kaliya qaab dhismeed loogu xirayo ilaha qulqulka dhinac saddexaad ee isticmaalayaasha, taasoo ka dhigaysa mid aad u miisaan badan marka aan la sii martigelin. Doorka WebRTC NAT Traversal halkan waa mid aad muhiim u ah si loo fududeeyo isku xirka asaagga-ilaa-faadka ee ilaha qulqulka dhinac saddexaad, taasoo u sahlaysa abuuraha inuu ku xidhmo shabakadda.

    Isku-buufinta fiidiyowga

    Isku-buufinta fiidiyowgu waa qayb lagama maarmaan ah oo ka mid ah dhuumaha waxayna si weyn uga qaybqaataa socodka siman. Iyadoo aan loo baahnayn in la ogaado faahfaahin kasta oo ku saabsan VP8/H264 video encoding, fahamka fikradaha ayaa kaa caawin kara inaad fahamto baahinta xawaaraha fiidyaha, ka takhalusida dabeecadaha lama filaanka ah, oo aad hagaajiso daahitaanka.

    Cadaadiska fiidiyowga ee adeegga qulqulka waa caqabad sababtoo ah algoorithm waa inuu xaqiijiyaa in wadarta wakhtiga codaynta + wakhtiga gudbinta shabakada + wakhtiga furista uu yahay mid hooseeya sida ugu macquulsan. Intaa waxa dheer, habka codaynta waa in uu ahaado mid joogto ah oo joogto ah. Qaar ka mid ah ganacsiyada codeynta ma khuseeyaan-tusaale ahaan, kama door bidi karno waqtiyada codeynta dheer ee cabbirada faylalka yaryar iyo waqtiyada dejinta, ama isticmaal isku-buufin aan is-waafaqayn.

    Fikradda ka dambeysa isku-buufinta fiidiyowga waa in la baabi'iyo macluumaadka aan loo baahnayn iyadoo la ilaalinayo saxnaanta heerka la aqbali karo ee isticmaalayaasha. Marka lagu daro codaynta qaab-dhismeedka gaarka ah ee sawirka, algorithm-ka wuxuu ka dhigayaa qaab-dhismeedka hadda jira kuwii hore iyo kuwa xiga, marka kaliya farqigooda ayaa la diraa. Sida laga arki karo tusaale ahaan Pacman, kaliya dhibco kala duwan ayaa la kala qaadaa.

    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Isbarbardhigga muuqaallada fiidiyoowga ah iyadoo la adeegsanayo Pacman tusaale ahaan

    Cadaadis maqal ah

    Sidoo kale, algorithm riixitaanka maqalku wuxuu meesha ka saarayaa xogta aysan fahmi karin bini'aadamka. Opus hadda waa codec maqalka ugu waxqabadka wanaagsan. Waxaa loogu talagalay in lagu gudbiyo mowjad maqal ah borotokoolka la dalbaday ee datagram sida RTP (Real Time Transport Protocol). Daahitaankeedu wuu ka hooseeyaa mp3 iyo aac, tayaduna waa ka sareysaa. Daahitaanku inta badan waa ku dhawaad ​​5 ~ 66,5ms.

    Pion, WebRTC gudaha Golang

    Pawn waa mashruuc il furan oo WebRTC u keenaya Golang. Halkii laga heli lahaa duubista caadiga ah ee maktabadaha C ++ WebRTC hooyo, Pion waa fulinta Golang ee WebRTC oo leh waxqabad wanaagsan, Isdhexgalka Go, iyo xakamaynta nooca ee borotokoolka WebRTC.

    Maktabadu waxay sidoo kale awood u siisaa qulqulka oo leh dhismayaal aad u fiican oo leh daahitaanka labaad ee labaad. Waxay leedahay fulinteeda STUN, DTLS, SCTP, iwm. iyo tijaabooyinka qaar ee QUIC iyo WebAssembly. Maktabaddan isha furan lafteedu waa kheyraad waxbarasho oo wanaagsan oo leh dukumeenti aad u wanaagsan, hirgelinta nidaamka shabakada, iyo tusaalooyin wanaagsan.

    Bulshada Pion, oo uu hogaamiyo hal abuure aad u xamaasad leh, ayaa aad u firfircoon, iyada oo leh doodo badan oo tayo leh oo ku saabsan WebRTC. Haddii aad xiisaynayso farsamadan, ku biir http://pion.ly/slack - Waxaad baran doontaa waxyaabo badan oo cusub.

    Qoritaanka CloudRetro gudaha Golang

    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Hirgelinta shaqaalaha Go

    Tag Kanaalka Ficilka

    Waad ku mahadsan tahay naqshadeynta kanaalka quruxda badan ee Go, dhibaatooyinka baahinta dhacdada iyo lacagta isdhaafsiga ayaa si weyn loo fududeeyay. Sida jaantuska, GoRoutines kala duwan ayaa leh qaybo badan oo is barbar socda. Qayb kastaa waxay maamushaa gobolkeeda waxayna ku xidhiidhaa kanaalada. Go'aanka Golang ee xulashada ah ayaa ku qasbaya hal dhacdo atomik ah in la habeeyo mar kasta oo ciyaarta dhexdeeda ah (ku calaamadeynta ciyaarta). Tani waxay ka dhigan tahay in aan loo baahnayn wax quful ah naqshadahan. Tusaale ahaan, marka adeegsaduhu wax badbaadiyo, sawir buuxa oo xaalada ciyaarta ah ayaa loo baahan yahay. Gobolkani waa inuu ahaado mid joogto ah, oo gelaya ilaa kaydinta la dhammeeyo. Inta lagu jiro ciyaar kasta oo sax ah, dhabarku waxa uu xamili karaa oo kaliya kaydinta ama hawlgalka galinta, taas oo ka dhigaysa dunta habsocodka badbaado.

    func (e *gameEmulator) gameUpdate() {
    for {
    	select {
    		case <-e.saveOperation:
    			e.saveGameState()
    		case key := <-e.input:
    			e.updateGameState(key)
    		case <-e.done:
    			e.close()
    			return
    	}
        }
    }

    Taageere-gurid/Taageer-bax

    Qaab-dhismeedka Golang wuxuu ku habboon yahay kiis-isticmaalka CrowdPlay iyo Multiple Player si qumman. Iyadoo la raacayo qaabkan, dhammaan agabyada isticmaalayaasha ee hal qol ayaa lagu dhisay kanaalka albaabka dhexe. Warbaahinta ciyaarta ayaa markaa la geeyaa dhammaan isticmaalayaasha isla qolka. Sidan oo kale, waxaan ku gaarnaa kala qaybinta gobolka ciyaarta ee u dhexeeya dhowr kulan oo ciyaareed isticmaaleyaasha kala duwan.

    Ciyaarta daruuraha isha furan ee WebRTC: p2p, ciyaartoy badan, daahitaanka eber
    Isku-dubarid ka dhexeeya kalfadhiyo kala duwan

    Khasaaraha Golang

    Golang ma fiicna. Kanaalka waa gaabis. Marka la barbar dhigo xannibaadda, kanaalka Go waa hab sahlan oo lagu maareeyo dhacdooyinka isku xidhan iyo kuwa la isku xidho, laakiin kanaalada ma bixiyo waxqabadka ugu fiican. Kanaalka hoostiisa waxa ku jira macquul xannibid adag. Markaa waxaan sameeyay qaar ka mid ah hagaajinta hirgelinta, dib u codsanaya qufullada iyo qiyamka atomiga marka la beddelayo kanaalada si aan u wanaajino waxqabadka.

    Intaa waxaa dheer, qashin ururiyaha Golang ma aha mid la maareeyay, taas oo mararka qaarkood keenta hakas dheer oo shaki leh. Tani waxay si weyn u faragelinaysaa codsiga wakhtiga-dhabta ah ee daawaynta.

    COG

    Mashruucu wuxuu isticmaalaa isha furan ee Golang VP8/H264 ee maktabadda si loogu cadaadiyo warbaahinta iyo Libretro ee ku dayashada ciyaarta. Dhammaan maktabadahani waxay si fudud u duuban yihiin maktabadda C ee Go iyadoo la isticmaalayo COG. Qaar ka mid ah khasaarooyinka ayaa lagu taxay qoraalkan waxaa qoray Dave Cheney. Dhibaatooyinka aan la kulmay:

    • awood la'aanta in lagu qabto shil gudaha CGO, xitaa iyadoo Golang Recovery Crash;
    • ku guuldareysiga in la aqoonsado caqabadaha waxqabadka marka aynaan awoodin in aan ogaano dhibaatooyinka faahfaahsan ee CGO.

    gunaanad

    Waxaan gaadhay yoolkaygii ahaa inaan fahmo adeegyada ciyaaraha daruuriga ah iyo abuurista madal iga caawisa inaan asxaabtayda khadka tooska ah kula ciyaaro ciyaaraha retro. Mashruucani ma suurto galeen la'aanteed maktabadda Pion iyo taageerada bulshada Pion. Aad baan ugu mahad naqayaa horumarkeeda degdega ah. API-yada fudud ee ay bixiyaan WebRTC iyo Pion waxay xaqiijiyeen is-dhexgalka aan kala go 'lahayn. Caddayntaydii ugu horreysay ee fikradda ayaa la sii daayay isla usbuucaas, in kasta oo aanan aqoon hore u lahayn isgaadhsiinta fac-ilaa-fac (P2P).

    In kasta oo ay fududahay is-dhexgalka, P2P streaming runtii waa aag aad u adag oo ku saabsan sayniska kombiyuutarka. Waa inay wax ka qabato kakanaanta naqshadaha shabakadaha muddada dheer jiray sida IP iyo NAT si ay u abuurto fadhi isku-fac ah. Intii aan ka shaqeynayey mashruucan, waxaan helay aqoon badan oo qiimo leh oo ku saabsan isku xirka iyo hagaajinta waxqabadka, sidaas darteed waxaan ku dhiirigelinayaa qof walba inuu isku dayo dhisidda alaabta P2P adoo isticmaalaya WebRTC.

    CloudRetro waxay u adeegtaa dhammaan kiisaska isticmaalka ee aan ka filayo aragtidayda sida gamer retro. Si kastaba ha noqotee, waxaan u maleynayaa inay jiraan meelo badan oo mashruuca ah oo aan hagaajin karo, sida samaynta shabakada mid la isku halleyn karo oo wax qabad leh, bixinta garaafyada ciyaarta tayada sare leh, ama awooda la wadaago ciyaaraha u dhexeeya isticmaalayaasha. Aad ayaan uga shaqaynayaa arrintan. Fadlan lasoco mashruuc oo taageer haddii aad jeceshahay.

Source: www.habr.com

Add a comment