Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu

Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
Akụrụngwa dị ka ọrụ, akụrụngwa dịka ọrụ, ikpo okwu dị ka ọrụ, ikpo okwu nkwurịta okwu dị ka ọrụ, video conferencing dị ka ọrụ, kedu maka egwuregwu igwe ojii dị ka ọrụ? Enweela ọtụtụ mbọ iji mepụta egwuregwu igwe ojii (Cloud Gaming), dị ka Stadia, nke Google bidoro na nso nso a. Stadia ọ bụghị ọhụrụ na WebRTC, ma ndị ọzọ nwere ike iji WebRTC n'otu ụzọ ahụ?

Thanh Nguyen kpebiri ịnwale ohere a na ọrụ mepere emepe CloudRetro. CloudRetro dabere na Pion, ewu ewu Ọbá akwụkwọ WebRTC dabere na Go (daalụ Egosiri site na ndị otu mmepe Pion maka enyemaka ha n'ịkwadebe akụkọ a). N'isiokwu a, Thanh na-enye nkọwa gbasara ụkpụrụ ụlọ nke ọrụ ya, ma na-ekwukwa banyere ihe ndị bara uru ọ mụtara na nsogbu ndị ọ zutere n'oge ọrụ ya.

entry

N'afọ gara aga, mgbe Google kwuputara Stadia, ọ gbawara m obi. Echiche ahụ bụ ihe pụrụ iche na ihe ọhụrụ nke na m na-eche mgbe niile otú nke a si kwe omume na nkà na ụzụ dị ugbu a. Ọchịchọ ịghọta isiokwu a nke ọma kpaliri m ịmepụta ụdị nke m nke egwuregwu igwe ojii mepere emepe. Nsonaazụ dị nnọọ ọmarịcha. N'okpuru ebe a ga-amasị m ịkọrọ usoro nke ịrụ ọrụ na afọ m oru ngo.

TLDR: ụdị mmịfe dị nkenke nwere isi ihe

Ihe kpatara egwuregwu igwe ojii bụ ọdịnihu

Ekwenyere m na Cloud Gaming ga-abụ ọgbọ na-esote ọ bụghị naanị egwuregwu, kamakwa akụkụ ndị ọzọ nke sayensị kọmputa. Egwuregwu ígwé ojii bụ isi nke ụdị ahịa / ihe nkesa. Ihe nlereanya a na-ebuli njikwa azụ azụ ma na-ebelata ọrụ n'ihu site n'ịkwado mgbagha egwuregwu na ihe nkesa dịpụrụ adịpụ yana ịkwanye ihe oyiyi / ọdịyo nye onye ahịa. Ihe nkesa na-eme nhazi dị arọ ka onye ahịa anaghịzi enwe obi ebere nke njedebe ngwaike.

Google Stadia na-enye gị ohere ịme egwuregwu Egwuregwu AAA (ya bụ egwuregwu blockbuster dị elu) na interface dị ka YouTube. Enwere ike itinye otu usoro ahụ na ngwa ndị ọzọ dị arọ na-anọghị n'ịntanetị dị ka sistemụ arụmọrụ ma ọ bụ eserese eserese 2D/3D, wdg. nke mere na anyị nwere ike na-agba ọsọ ha mgbe niile na ala-spec ngwaọrụ gafee multiple nyiwe.

Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
Ọdịnihu nke teknụzụ a: Cheedị ma Microsoft Windows 10 gbara ọsọ na ihe nchọgharị Chrome?

Egwuregwu igwe ojii na-ama aka na teknụzụ

Ịgba chaa chaa bụ otu n'ime ebe a na-adịghị ahụkebe ebe achọrọ nzaghachi onye ọrụ na-adị ngwa ngwa. Ọ bụrụ na mgbe ụfọdụ anyị na-ezute igbu oge 2 sekọnd mgbe ịpịrị ibe, nke a na-anabata. iyi vidiyo na-adị ndụ na-adịte aka sekọnd ole na ole, mana ọ ka na-enye ike iji ezi uche mee ihe. Agbanyeghị, ọ bụrụ na egwuregwu ahụ na-agakarị site na 500ms, ọ nweghị ike ịme ya. Ebumnobi anyị bụ iji nweta obere latency ka ọdịiche dị n'etiti ntinye na mgbasa ozi dị ntakịrị ka o kwere mee. Ya mere, usoro ọdịnala maka mgbasa ozi vidiyo adịghị adaba ebe a.

Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
Ụdị egwuregwu ígwé ojii izugbe

Ọrụ mepere emepe CloudRetro

Ekpebiri m imepụta ihe nlele egwuregwu igwe ojii iji hụ ma ihe niile ga-ekwe omume site na mmachi netwọkụ siri ike. M họọrọ Golang maka ihe akaebe nke echiche n'ihi na ọ bụ asụsụ m maara nke ọma na ọ dabara nke ọma maka mmejuputa a maka ọtụtụ ihe ndị ọzọ, dịka m mechara chọpụta. Gaa dị mfe ma na-etolite ngwa ngwa; Ọwa dị na Go dị mma maka ijikwa multithreading.

Ọrụ ahụ CloudRetro.io bụ ọrụ egwuregwu igwe ojii mepere emepe maka egwuregwu retro. Ebumnuche nke oru ngo a bụ iweta ahụmịhe egwuregwu kachasị mma na egwuregwu ochie ochie wee tinye ọtụtụ egwuregwu.
Ị nwere ike ịmụtakwu gbasara ọrụ a ebe a: https://github.com/giongto35/cloud-game.

Ọrụ CloudRetro

CloudRetro na-eji egwuregwu retro gosi ike egwuregwu igwe ojii. Nke na-enye gị ohere ịnweta ọtụtụ ahụmịhe egwuregwu pụrụ iche.

  • Portability nke egwuregwu
    • Ịkpọghachi ngwa ngwa mgbe imepe ibe; enweghị nbudata ma ọ bụ nrụnye achọrọ
    • Na-arụ ọrụ na ihe nchọgharị mkpanaka, yabụ na ọ nweghị ngwanrọ achọrọ iji rụọ ya

  • Enwere ike ịkekọrịta oge egwuregwu n'ofe ngwaọrụ ma chekwaa n'igwe ojii maka oge ọzọ ị banyere
  • Enwere ike ịgbanye egwuregwu ahụ, ma ọ bụ ọtụtụ ndị ọrụ nwere ike ịme ya ozugbo:
    • Crowdplay dị ka TwitchPlayPokemon, naanị ọtụtụ cross-ikpo okwu na ndị ọzọ ezigbo oge
    • Egwuregwu ndị na-anọghị n'ịntanetị. Ọtụtụ ndị ọrụ nwere ike igwu egwu na-enweghị ịtọlite ​​​​netwọọdụ. Ndị egwuregwu abụọ nwere ike ịkpọ Samurai Shodown ugbu a na netwọk CloudRetro

    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Ụdị ngosi nke egwuregwu ọtụtụ egwuregwu ịntanetị na ngwaọrụ dị iche iche

    Akụrụngwa

    Ihe achọrọ na nchịkọta teknụzụ

    N'okpuru ebe a bụ ndepụta ihe achọrọ m setịpụrụ tupu ịmalite ọrụ ahụ.

    1. Otu onye ọkpụkpọ
    Ihe a chọrọ nwere ike ọ gaghị adị oke mkpa ma ọ bụ doro anya ebe a, mana ọ bụ otu n'ime ụzọ m ga-esi ewepụ ya, ọ na-enye ohere egwuregwu igwe ojii ka ọ nọrọ ebe dị anya na ọrụ mgbasa ozi ọdịnala dị ka o kwere mee. Ọ bụrụ na anyị lekwasị anya na egwuregwu otu onye ọkpụkpọ, anyị nwere ike iwepụ ihe nkesa etiti ma ọ bụ CDN n'ihi na anyị ekwesịghị ịkwanye igwe mmadụ. Kama ibugo iyi na ihe nkesa sink ma ọ bụ na-ebufe ngwugwu na sava WebSocket etiti, a na-ebufe iyi ọrụ ozugbo nye onye ọrụ site na njikọ WebRTC nke ọgbọ na ọgbọ.

    2. Obere mgbasa ozi mgbasa ozi dị ala
    N'ịgụ gbasara Stadia, m na-ahụkarị WebRTC ka a kpọtụrụ aha n'isiokwu ụfọdụ. Aghọtara m na WebRTC bụ teknụzụ pụtara ìhè ma zuru oke maka ojiji na egwuregwu igwe ojii. WebRTC bụ oru ngo na-enye ihe nchọgharị weebụ na ngwa mkpanaaka na nzikọrịta ozi ozugbo site na API dị mfe. Ọ na-enye njikọta nke ndị ọgbọ na ndị ọgbọ, ahaziri maka mgbasa ozi, ma nwee codecs ọkọlọtọ arụnyere n'ime ya dị ka VP8 na H264.

    Edoro m ụzọ ịhụ na ahụmịhe onye ọrụ kachasị mma karịa idowe eserese dị elu. A na-anabata ụfọdụ mfu na algọridim. Google Stadia nwere nzọụkwụ ọzọ nke ibelata nha onyonyo na sava ahụ, a na-ebulikwa fremu ka ọ bụrụ ogo dị elu tupu ebufee ya na ndị ọgbọ.

    3. E kesara akụrụngwa na ụzọ mpaghara ala
    N'agbanyeghị etu esi ahazi ya na algọridim mkpakọ na koodu, netwọkụ ka bụ ihe na-ekpebi ihe na-enye aka na nkwụsị. Ihe owuwu ụlọ ahụ ga-enwerịrị usoro ijikọ sava kacha nso onye ọrụ iji belata oge njem (RTT). Ihe owuwu ahụ ga-enwerịrị onye nhazi 1 na ọtụtụ sava mgbasa ozi kesara gburugburu ụwa: US West, US East, Europe, Singapore, China. Sava niile na-asọ asọ ga-adịpụrụ adịpụ kpamkpam. Usoro nwere ike ịhazigharị nkesa ya mgbe ihe nkesa jikọtara ma ọ bụ hapụ netwọk ahụ. Ya mere, na nnukwu okporo ụzọ, na-agbakwụnye ihe nkesa ndị ọzọ na-enye ohere maka nkwụsịtụ kwụ ọtọ.

    4. Ndakọrịta ihe nchọgharị
    Egwuregwu igwe ojii na-akacha mma mgbe ọ na-achọ ihe kacha nta n'aka ndị ọrụ. Nke a pụtara na ọ ga-ekwe omume ịgba ọsọ na ihe nchọgharị. Ihe nchọgharị na-enyere aka mee ka ahụmịhe egwuregwu ahụ nwee ntụsara ahụ maka ndị ọrụ, na-echekwa ha na ịwụnye ngwanrọ na ngwaike. Ihe nchọgharị na-enyekwa aka wepụta arụmọrụ n'ife n'etiti ụdị mkpanaka na desktọpụ. Ọ dabara nke ọma, WebRTC na-akwado nke ọma n'ofe ihe nchọgharị dị iche iche.

    5. Clear nkewa nke egwuregwu interface na ọrụ
    Ana m ele ọrụ egwuregwu igwe ojii anya dị ka ikpo okwu. Onye ọ bụla kwesịrị inwe ike ijikọ ihe ọ bụla na ikpo okwu. Ugbu a ejikọtala m LibRetro ya na ọrụ egwuregwu igwe ojii n'ihi na LibRetro na-enye interface emulator egwuregwu mara mma maka egwuregwu retro dị ka SNES, GBA, PS.

    6. Ụlọ maka multiplayer, ìgwè mmadụ egwuregwu na mpụga njikọ (miri-njikọ) na egwuregwu
    CloudRetro na-akwado ọtụtụ egwuregwu ọhụrụ dị ka CrowdPlay na Online Multiplayer maka egwuregwu retro. Ọ bụrụ na ọtụtụ ndị ọrụ mepee otu njikọ miri emi na kọmpụta dị iche iche, ha ga-ahụ otu egwuregwu na-agba ọsọ ma nwee ike ịbanye na ya.

    Ọzọkwa, a na-echekwa steeti egwuregwu na nchekwa igwe ojii. Nke a na-enye ndị ọrụ ohere ịga n'ihu na-egwu egwu n'oge ọ bụla na ngwaọrụ ọ bụla ọzọ.

    7. Ntugharị kwụ ọtọ
    Dị ka SAAS ọ bụla n'oge a, egwuregwu igwe ojii ga-emerịrị ka ọ bụrụ nke nwere ike ịgbatị n'ihu. Nhazi onye nhazi-onye ọrụ na-enye gị ohere itinyekwu ndị ọrụ iji jeerekwu okporo ụzọ.

    8. Enweghị njikọ na otu igwe ojii
    A na-akwado akụrụngwa CloudRetro na ndị na-eweta igwe ojii dị iche iche (Digital Ocean, Alibaba, onye na-eweta omenala) maka mpaghara dị iche iche. Ana m eme ka ịgba ọsọ n'ime akpa Docker maka akụrụngwa ma hazie ntọala netwọkụ site na iji edemede bash iji zere ịkpọchi ya n'ime otu onye na-eweta igwe ojii. Site na ijikọ nke a na NAT Traversal na WebRTC, anyị nwere ike ịnwe mgbanwe iji bunye CloudRetro n'elu ikpo okwu igwe ojii yana ọbụlagodi na igwe onye ọrụ ọ bụla.

    Nhazi ihe owuwu

    Onye ọrụ: (ma ọ bụ ihe nkesa mgbasa ozi a kpọtụrụ aha n'elu) na-amụba egwuregwu ndị ahụ, na-agbapụta pipeline koodu, ma na-ebunye ndị ọrụ mgbasa ozi agbakwunyere. A na-ekesa oge ndị ọrụ n'ụwa niile, onye ọrụ ọ bụla nwere ike ijikwa ọtụtụ oge onye ọrụ n'otu oge.

    Onye nhazi: Ọ bụ ya na-ahụ maka ijikọ onye ọrụ ọhụrụ na onye ọrụ kacha dabara adaba maka mgbasa ozi. Onye nhazi na-emekọrịta ihe na ndị ọrụ site na WebSocket.

    Nchekwa steeti egwuregwu: Ebe nchekwa etiti etiti maka steeti egwuregwu niile. Nchekwa a na-enye ọrụ dị mkpa dị ka nchekwa/ibu ibu dịpụrụ adịpụ.

    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Ihe owuwu dị elu nke CloudRetro

    Ederede omenala

    Mgbe onye ọrụ ọhụrụ mepere CloudRetro na nzọụkwụ 1 na 2 egosiri na foto dị n'okpuru, a na-arịọ onye nhazi yana ndepụta ndị ọrụ dị na ibe mbụ. Mgbe nke a gasịrị, na nzọụkwụ 3 onye ahịa na-agbakọ igbu oge maka ndị niile na-eme ntuli aka site na iji arịrịọ HTTP ping. A na-ezigaghachi onye nhazi ndepụta nke igbu oge a ka o wee nwee ike ikpebi onye ọrụ kachasị mma ijere onye ọrụ ozi. Nzọụkwụ 4 n'okpuru na-emepụta egwuregwu. E hiwere njikọ nkwanye WebRTC n'etiti onye ọrụ na onye ọrụ ekenyela ya.
    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Edemede onye ọrụ mgbe ị nwetachara

    Kedu ihe dị n'ime onye ọrụ

    A na-echekwa ọkpọkọ egwuregwu na iyi egwu n'ime onye ọrụ ahụ dịpụrụ adịpụ ma gbanwee ozi ebe ahụ site na interface. Ugbu a, a na-eme nkwukọrịta a site na ịnyefe data na ebe nchekwa site na Ọwa Golang n'otu usoro ahụ. Ebumnuche ọzọ bụ nkewa, ya bụ. nnwere onwe igba egbe nke egwuregwu na ọzọ usoro.

    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Mmekọrịta nke akụkụ ndị ọrụ

    Isi ihe:

    • WebRTC: akụrụngwa nke ndị ahịa na-anabata ntinye onye ọrụ wee wepụta mgbasa ozi etinyere na sava ahụ.
    • emulator egwuregwu: akụrụngwa egwuregwu. N'ihi ọbá akwụkwọ Libretro, usoro ahụ nwere ike ịme egwuregwu ahụ n'ime otu usoro ahụ yana ntinye mgbasa ozi na ntinye ntinye.
    • A na-ejide okpokolo agba n'ime egwuregwu ma ziga ya na koodu ntinye.
    • Ihe ngbanwe onyonyo/olu: pipeline na-edobe koodu nke na-ewe fremu mgbasa ozi, na-etinye koodu ha n'azụ, wee wepụta onyogho/odiyo etinyere.

    Mmejuputa iwu

    CloudRetro na-adabere na WebRTC dị ka nkà na ụzụ azụ azụ ya, ya mere, tupu ịbanye na nkọwa nke mmejuputa Golang, ekpebiri m ikwu banyere WebRTC n'onwe ya. Nke a bụ nkà na ụzụ dị ịtụnanya nke nyeere m aka nke ukwuu n'inweta nkwụsịtụ obere nkeji maka data nkwanye.

    WebRTC

    Ezubere WebRTC iji nye njikọ ndị ọgbọ na ndị ọgbọ dị elu na ngwa mkpanaka ala na ihe nchọgharị site na iji API dị mfe.

    Njegharị NAT

    A maara WebRTC maka ọrụ NAT traversal ya. Emebere WebRTC maka nzikọrịta nke ndị ọgbọ na ndị ọgbọ. Ebumnuche ya bụ ịchọta ụzọ kacha dabara adaba, na-ezere ọnụ ụzọ NAT na firewalls maka nkwurịta okwu ndị ọgbọ na ndị ọgbọ site na usoro a na-akpọ. ice. Dịka akụkụ nke usoro a, WebRTC API na-achọta adreesị IP ọha gị site na iji sava STUN wee zipu ya na nkesa ọsọ ọsọ (Gbanwee) mgbe enweghị ike ịmepụta njikọ kpọmkwem.

    Agbanyeghị, CloudRetro anaghị eji njirimara a eme ihe nke ọma. Njikọ ya na ndị ọgbọ adịghị adị n'etiti ndị ọrụ, mana n'etiti ndị ọrụ na sava igwe ojii. Akụkụ nkesa nke ihe nlereanya ahụ nwere mgbochi nzikọrịta ozi dị ole na ole karịa ngwaọrụ onye ọrụ. Nke a na-enye gị ohere imeghe ọdụ ụgbọ mmiri na-abata ma ọ bụ jiri adreesị IP ọha ozugbo, ebe ihe nkesa adịghị n'azụ NAT.

    Na mbụ, achọrọ m ịtụgharị ọrụ ahụ ka ọ bụrụ ikpo okwu nkesa egwuregwu maka Cloud Gaming. Echiche bụ ikwe ka ndị na-emepụta egwuregwu na-enye egwuregwu na akụrụngwa mgbasa ozi. Ndị ọrụ ga-eso ndị na-eweta ya na-akpakọrịta ozugbo. N'ụzọ a enweghị isi, CloudRetro bụ naanị usoro maka ijikọ akụrụngwa nkwanye ndị ọzọ na ndị ọrụ, na-eme ka ọ dịkwuo elu mgbe ọ naghịzi anabata ya. Ọrụ WebRTC NAT Traversal ebe a dị ezigbo mkpa iji kwado mmalite njikọ ndị ọgbọ na ndị ọgbọ na akụrụngwa nkwanye ndị ọzọ, na-eme ka ọ dịrị onye okike mfe jikọọ na netwọk.

    Mkpakọ vidiyo

    Mkpakọ vidiyo bụ akụkụ dị mkpa nke pipeline ma na-atụnye ụtụ dị ukwuu n'ịgbapụta nke ọma. Ọ bụ ezie na ọ dịghị mkpa ịmara nkọwa niile nke ntinye vidiyo VP8/H264, ịghọta echiche ndị a nwere ike inyere gị aka ịghọta nhọrọ ọsọ vidiyo gụgharia, mebie omume a na-atụghị anya ya, wee mezie latency.

    Ịkọkọ vidiyo maka ọrụ nkwanye bụ ihe ịma aka n'ihi na algọridim ga-ahụrịrị na ngụkọta oge ntinye koodu + oge nnyefe netwọk + oge ngbanwe dị ntakịrị ka enwere ike. Tụkwasị na nke ahụ, usoro ntinye koodu ahụ ga-agbanwe agbanwe ma na-aga n'ihu. Ụfọdụ ngbanwe mgbanwe anaghị emetụta-dịka ọmụmaatụ, anyị enweghị ike ịkwado ogologo oge ntinye koodu karịa obere faịlụ na oge ngbanwe, ma ọ bụ jiri mkpakọ na-ekwekọghị ekwekọ.

    Echiche dị n'azụ mkpakọ vidiyo bụ iwepụ ozi na-adịghị mkpa ka ị na-ejigide ọkwa ziri ezi maka ndị ọrụ. Na mgbakwunye na itinye koodu n'otu n'otu static okpokolo agba, algọridim na-ewepụta etiti dị ugbu a site na nke gara aga na nke na-esote, yabụ naanị ihe dị iche ha ka a na-eziga. Dị ka enwere ike ịhụ site na ihe atụ na Pacman, ọ bụ naanị isi ihe dị iche na-ebufe.

    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Ntụle nke okpokolo agba vidiyo site na iji Pacman dịka ọmụmaatụ

    Mkpakọ ọdịyo

    N'otu aka ahụ, algọridim mkpakọ ọdịyo na-ahapụ data nke mmadụ na-apụghị ịghọta. Opus bụ codec ọdịyo kachasị na-arụ ọrụ ugbu a. Emebere ya ka ibunye ebili mmiri ọdịyo n'elu usoro datagram nyere iwu dị ka RTP (Real Time Transport Protocol). Latency ya dị ala karịa mp3 na aac, na àgwà dị elu. Latency na-abụkarị gburugburu 5 ~ 66,5ms.

    Pion, WebRTC na Golang

    Pawn bụ ọrụ mepere emepe nke na-ebute WebRTC na Golang. Kama mkpuchi ụlọ akwụkwọ C ++ WebRTC nke a na-emebu, Pion bụ mmejuputa Golang nke WebRTC nwere arụmọrụ ka mma, njikọta Go, yana njikwa ụdị na ụkpụrụ WebRTC.

    Ọbá akwụkwọ ahụ na-emekwa ka nkwanye ugwu nwee ọtụtụ nnukwu arụrụ arụ na obere oge nke abụọ. O nwere mmejuputa ya nke STUN, DTLS, SCTP, wdg. na ụfọdụ nnwale na QUIC na WebAssembly. Ọbá akwụkwọ mepere emepe n'onwe ya bụ ezigbo akwụkwọ mmụta nwere akwụkwọ mara mma, mmejuputa usoro netwọkụ, yana ọmụmaatụ mara mma.

    Obodo Pion, nke onye okike nwere oke mmụọ na-edu, na-ekpo ọkụ, yana ọtụtụ mkparịta ụka dị mma na-aga maka WebRTC. Ọ bụrụ na ị nwere mmasị na teknụzụ a, sonye http://pion.ly/slack – ị ga-amụta ọtụtụ ihe ọhụrụ.

    Na-ede CloudRetro na Golang

    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Mmezu nke onye ọrụ na Go

    Gaa ọwa n'ọrụ

    Ekele maka nhazi ọwa mara mma nke Go, nsogbu nke mgbasa ozi mmemme na mgbanwe na-adị mfe nke ukwuu. Dịka ọ dị na eserese ahụ, GoRoutines dị iche iche nwere ọtụtụ ihe na-aga n'otu n'otu. Akụkụ ọ bụla na-achịkwa steeti ya ma na-ekwurịta okwu site na ọwa. Nkwenye nhọrọ Golang na-amanye otu mmemme atọmịk ka a na-ahazi oge ọ bụla na egwuregwu (akọrọ egwuregwu). Nke a pụtara na ọ dịghị mkpachichi maka imewe a. Dịka ọmụmaatụ, mgbe onye ọrụ na-echekwa, achọrọ nseta ihuenyo zuru oke nke steeti egwuregwu. Ọnọdụ a kwesịrị ịdị na-aga n'ihu, na-abanye ruo mgbe nchekwa ahụ zuru. N'oge akara egwuregwu ọ bụla, azụ azụ nwere ike ijikwa ọrụ nchekwa ma ọ bụ ntinye, na-eme ka eriri usoro dị mma.

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

    Onye na-akwado / onye na-apụ apụ

    Ihe ndebiri Golang a dabara na CrowdPlay m na ọtụtụ ihe ọkpụkpọ ejiri nke ọma. N'ịgbaso ụkpụrụ a, ihe ntinye ndị ọrụ niile dị n'otu ọnụ ụlọ na-ewulite n'ime ọwa ụzọ mbata etiti. A na-ebugharị usoro mgbasa ozi egwuregwu na ndị ọrụ niile n'otu ọnụ ụlọ. N'ụzọ dị otú a, anyị na-enweta nkewa nke steeti egwuregwu n'etiti ọtụtụ oge egwuregwu nke ndị ọrụ dị iche iche.

    Egwuregwu ígwé ojii mepere emepe na WebRTC: p2p, ọtụtụ ọkpụkpọ, latency efu
    Mmekọrịta n'etiti oge dị iche iche

    Ọdịmma nke Golang

    Golang ezughị oke. Ọwa ahụ dị nwayọ. E jiri ya tụnyere igbochi, ọwa Go bụ ụzọ dị mfe iji jikwaa mmemme na-eme n'otu oge na eri, mana ọwa anaghị enye arụmọrụ kacha mma. Enwere mgbagha mgbochi mgbagwoju anya n'okpuru ọwa. N'ihi ya, m mere ụfọdụ mgbanwe na mmejuputa iwu, reapplying mkpọchi na atomiki ụkpụrụ mgbe dochie ọwa na-ebuli arụmọrụ.

    Na mgbakwunye, onye na-anakọta ihe mkpofu na Golang anaghị ejikwa ya, nke na-ebute nkwụsịtụ ogologo oge na-enyo enyo mgbe ụfọdụ. Nke a na-emetụta ngwa ngwa mgbasa ozi ozugbo.

    COG

    Ọrụ a na-eji ebe mepere emepe Golang VP8/H264 dị ugbu a maka mkpakọ mgbasa ozi yana Libretro maka emulators egwuregwu. Ọbá akwụkwọ ndị a niile bụ naanị ihe mkpuchi nke ọbá akwụkwọ C na Go na-eji COG. Edepụtara ụfọdụ ọghọm dị na ya Nke a post nke Dave Cheney. Nsogbu ndị m zutere:

    • enweghi ike ijide okuku na CGO, ọbụlagodi na Golang RecoveryCrash;
    • ọdịda iji chọpụta ihe mgbochi arụmọrụ mgbe anyị enweghị ike ịchọpụta nsogbu zuru ezu na CGO.

    nkwubi

    Enwetara m ihe mgbaru ọsọ m nke ịghọta ọrụ egwuregwu igwe ojii na ịmepụta ikpo okwu na-enyere m aka igwu egwuregwu retro nostalgic na ndị enyi m n'ịntanetị. Ọrụ a agaghị ekwe omume ma ọ bụrụ na ọ bụghị ụlọ akwụkwọ Pion na nkwado nke obodo Pion. Enwere m ekele dị ukwuu maka mmepe ya siri ike. API ndị dị mfe nke WebRTC na Pion nyere mere ka njikọta enweghị nkebi. E wepụtara ihe akaebe mbụ m nke echiche n'otu izu ahụ, n'agbanyeghị na enweghị m ihe ọmụma mbụ banyere nzikọrịta ozi ndị ọgbọ na ndị ọgbọ (P2P).

    N'agbanyeghị ịdị mfe nke mwekota, P2P gụgharia bụ n'ezie ihe mgbagwoju anya na mpaghara sayensị kọmputa. Ọ ghaghị ịnagide mgbagwoju anya nke ụlọ ọrụ netwọk dị ogologo dị ka IP na NAT iji mepụta nnọkọ ndị ọgbọ na ndị ọgbọ. Mgbe m na-arụ ọrụ a, enwetara m ọtụtụ ihe ọmụma bara uru gbasara ịkparịta ụka n'Ịntanet na njikarịcha arụmọrụ, ya mere ana m agba onye ọ bụla ume ịnwale ịmepụta ngwaahịa P2P site na iji WebRTC.

    CloudRetro na-akwado ikpe ojiji niile m tụrụ anya n'echiche m dị ka onye egwuregwu ochie. Otú ọ dị, echere m na e nwere ọtụtụ mpaghara na ọrụ ahụ nke m nwere ike imeziwanye, dị ka ime ka netwọk dịkwuo ntụkwasị obi na ịrụ ọrụ, na-enye ndịna-eme egwuregwu egwuregwu dị elu, ma ọ bụ ike ịkekọrịta egwuregwu n'etiti ndị ọrụ. Ana m arụsi ọrụ ike na nke a. Biko soro oru ngo ma kwado ya ma ọ bụrụ na-amasị gị.

isi: www.habr.com

Tinye a comment