Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach

Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
Bogearraí mar sheirbhís, bonneagar mar sheirbhís, ardán mar sheirbhís, ardán cumarsáide mar sheirbhís, físchomhdháil mar sheirbhís, cad mar gheall ar chearrbhachas scamall mar sheirbhís? Rinneadh roinnt iarrachtaí cheana féin chun cearrbhachas scamall (Cloud Gaming) a chruthú, mar shampla Stadia, a sheol Google le déanaí. Stadia ní nua do WebRTC, ach an féidir le daoine eile WebRTC a úsáid ar an mbealach céanna?

Chinn Thanh Nguyen an deis seo a thástáil ar a thionscadal foinse oscailte CloudRetro. Tá CloudRetro bunaithe ar Pion, tóir Leabharlann WebRTC bunaithe ar Go (go raibh maith agat Taispeántar ón bhfoireann forbartha Pion as a gcúnamh chun an t-alt seo a ullmhú). San Airteagal seo, tugann Thanh forbhreathnú ar ailtireacht a thionscadal, agus labhraíonn sé freisin faoi na rudaí úsáideacha a d'fhoghlaim sé agus na dúshláin a bhí aige le linn a chuid oibre.

Iontráil

Anuraidh, nuair a d’fhógair Google Stadia, shéid sé m’intinn. Tá an smaoineamh chomh uathúil agus chomh nuálaíoch sin gur shíl mé i gcónaí conas a bhí sé seo indéanta fiú leis an teicneolaíocht atá ann cheana féin. Spreag an fonn an t-ábhar seo a thuiscint níos fearr dom mo leagan féin de chluiche scamall foinse oscailte a chruthú. Bhí an toradh go simplí iontach. Anseo thíos ba mhaith liom an próiseas oibre ar mo bhliain a roinnt tionscadal.

TLDR: leagan sleamhnáin ghearr le buaicphointí

Cén fáth gurb é cearrbhachas scamall an todhchaí

Creidim go mbeidh Cloud Gaming mar an chéad ghlúin eile de chearrbhachas ní hamháin, ach freisin i réimsí eile den ríomheolaíocht. Is é cearrbhachas néal an bhuaic ar mhúnla an chliaint/freastalaí. Uasmhéadaíonn an tsamhail seo bainistíocht inneall agus íoslaghdaíonn sé obair aghaidhe trí loighic cluiche a óstáil ar fhreastalaí cianda agus íomhánna/fuaime a shruthú chuig an gcliant. Déanann an freastalaí an phróiseáil throm agus mar sin ní bhíonn an cliant faoi réir srianta crua-earraí a thuilleadh.

Go bunúsach ligeann Google Stadia duit imirt Cluichí AAA (i.e. cluichí mórscála) ar chomhéadan cosúil le YouTube. Is féidir an mhodheolaíocht chéanna a chur i bhfeidhm ar iarratais throma as líne eile mar chóras oibriúcháin nó dearadh grafach 2D/3D, etc. ionas gur féidir linn iad a reáchtáil go comhsheasmhach ar fheistí íseal-speictream thar ardáin iolracha.

Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
Todhchaí na teicneolaíochta seo: Samhlaigh má rith Microsoft Windows 10 ar an bhrabhsálaí Chrome?

Tá cearrbhachas scamall dúshlánach go teicniúil

Tá cearrbhachas ar cheann de na réimsí neamhchoitianta sin ina bhfuil gá le freagra tapa, leanúnach ó úsáideoirí. Má bhíonn moill 2 soicind againn ó am go chéile nuair a chliceáiltear ar leathanach, tá sé seo inghlactha. Is gnách go mbíonn sruthanna físe beo chun deiridh cúpla soicind, ach cuireann siad inúsáidteacht réasúnta ar fáil fós. Mar sin féin, má bhíonn moill 500ms ar an gcluiche go minic, ní féidir é a imirt. Is é an sprioc atá againn ná foighne an-íseal a bhaint amach ionas go mbeidh an bhearna idir ionchur agus na meáin chomh beag agus is féidir. Mar sin, níl an cur chuige traidisiúnta maidir le sruthú físeáin infheidhme anseo.

Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
Teimpléad Cluiche Ginearálta Cloud

Tionscadal foinse oscailte CloudRetro

Chinn mé sampla tástála de chluiche scamall a chruthú féachaint an raibh sé seo indéanta le srianta líonra chomh docht. Roghnaigh mé Golang mar chruthúnas ar choincheap toisc gurbh í an teanga is mó a raibh aithne agam uirthi agus a bhí feiliúnach don chur i bhfeidhm seo ar go leor cúiseanna eile, mar a fuair mé amach níos déanaí. Tá Go simplí agus forbraíonn sé go han-tapa; Tá cainéil in Go iontach chun il-snáithe a bhainistiú.

Tionscadail CloudRetro.io Is seirbhís cearrbhachais scamall foinse oscailte é do chearrbhachas retro. Is é sprioc an tionscadail an t-eispéireas cearrbhachais is compordaí a thabhairt do chluichí retro traidisiúnta agus il-imreora a chur leis.
Is féidir leat níos mó a fhoghlaim faoin tionscadal anseo: https://github.com/giongto35/cloud-game.

Feidhmiúlacht CloudRetro

Úsáideann CloudRetro cluichí retro chun cumhacht cearrbhachas scamall a léiriú. A ligeann duit a fháil go leor taithí cluichíochta uathúil.

  • Inaistritheacht an chluiche
    • Athsheinm láithreach nuair a osclaítear leathanach; níl gá le híoslódáil nó suiteáil
    • Oibríonn sé i mbrabhsálaí soghluaiste, mar sin níl aon bogearraí ag teastáil chun é a rith

  • Is féidir seisiúin chluiche a roinnt thar ilghléasanna agus iad a stóráil sa scamall an chéad uair eile a logálann tú isteach
  • Is féidir an cluiche a shruthú, nó is féidir le roinnt úsáideoirí é a imirt ag an am céanna:
    • Sluaite cosúil le TwitchPlayPokemon, ach níos tras-ardán agus níos mó fíor-ama
    • Cluichí ar líne nach bhfuil ar líne. Is féidir le go leor úsáideoirí imirt gan líonra a bhunú. Is féidir le 2 imreoir Samurai Shodown a imirt anois thar líonra CloudRetro

    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Leagan taispeána den chluiche il-imreora ar líne ar ghléasanna éagsúla

    Bonneagar

    Riachtanais agus stack teicneolaíochta

    Seo thíos liosta de na riachtanais a leag mé síos sular thosaigh mé ar an tionscadal.

    1. Imreoir amháin
    B'fhéidir nach bhfuil cuma ró-thábhachtach nó ró-shoiléir ar an riachtanas seo anseo, ach tá sé ar cheann de na príomhbhealaí beir leat, ligeann sé do chearrbhachas scamall fanacht chomh fada ó sheirbhísí sruthú traidisiúnta agus is féidir. Má dhírímid ar chluiche aon-imreoir, is féidir linn fáil réidh le freastalaí láraithe nó CDN mar ní gá dúinn sruth chuig an mais. In ionad sruthanna a uaslódáil chuig freastalaí doirteal nó paicéid a chur ar aghaidh chuig freastalaí WebSocket láraithe, seachadtar sruthanna seirbhíse go díreach chuig an úsáideoir trí nasc WebRTC piaraí.

    2. Sruth meáin latency íseal
    Ag léamh faoi Stadia, is minic a fheicim WebRTC luaite i roinnt alt. Thuig mé gur teicneolaíocht den scoth é WebRTC agus go bhfuil sé foirfe le húsáid i gcearrbhachas scamall. Is tionscadal é WebRTC a sholáthraíonn cumarsáid fíor-ama do bhrabhsálaithe gréasáin agus feidhmchláir shoghluaiste trí API simplí. Soláthraíonn sé nascacht piar-le-piara, tá sé optamaithe le haghaidh na meáin, agus tá codecs caighdeánach ionsuite mar VP8 agus H264.

    Thug mé tosaíocht don eispéireas úsáideora is fearr a chinntiú thar ghrafaicí ardchaighdeáin a chothabháil. Tá roinnt caillteanais inghlactha san algartam. Tá céim bhreise ag Google Stadia chun méid na híomhá ar an bhfreastalaí a laghdú, agus déantar frámaí a uasghrádú go caighdeán níos airde sula n-aistrítear chuig piaraí iad.

    3. Bonneagar dáilte le ródú geografach
    Is cuma cé chomh optamaithe atá an t-algartam comhbhrú agus an cód, is é an líonra fós an fachtóir cinntitheach is mó a chuireann le latency. Ní mór meicníocht a bheith ag an ailtireacht chun an freastalaí is gaire don úsáideoir a phéireáil chun am turais bhabhta (RTT) a laghdú. Caithfidh 1 chomhordaitheoir agus roinnt freastalaithe sruthú a bheith san ailtireacht a dháileadh ar fud an domhain: SAM Thiar, SAM Thoir, an Eoraip, Singeapór, an tSín. Ní mór do gach freastalaí sruthú a bheith scoite amach go hiomlán. Is féidir leis an gcóras a dháileadh a choigeartú nuair a théann freastalaí isteach sa líonra nó nuair a fhágann sé é. Mar sin, le trácht mór, ceadaíonn cur leis na freastalaithe breise do scálaithe cothrománach.

    4. Comhoiriúnacht bhrabhsálaí
    Tá cearrbhachas scamall ar a chuid is fearr nuair a éilíonn sé a laghad ó úsáideoirí. Ciallaíonn sé seo gur féidir a reáchtáil i bhrabhsálaí. Cuidíonn brabhsálaithe chun an taithí cluichíochta a dhéanamh chomh compordach agus is féidir d'úsáideoirí, rud a shábháil iad ó bhogearraí agus crua-earraí a shuiteáil. Cuidíonn brabhsálaithe freisin le feidhmiúlacht tras-ardáin a sholáthar idir leaganacha soghluaiste agus deisce. Ar ámharaí an tsaoil, tugtar tacaíocht mhaith do WebRTC ar fud brabhsálaithe éagsúla.

    5. Scaradh soiléir ar an gcomhéadan cluiche agus ar an tseirbhís
    Breathnaím ar an tseirbhís cearrbhachais néal mar ardán. Ba chóir go mbeadh gach duine in ann aon rud a nascadh leis an ardán. Anois tá mé comhtháite LibRetro le seirbhís cearrbhachais scamall mar go dtugann LibRetro comhéadan aithriseoir cluiche álainn do chluichí retro mar SNES, GBA, PS.

    6. Seomraí le haghaidh il-imreora, slua-imirt agus nascadh seachtrach (nasc domhain) leis an gcluiche
    Tacaíonn CloudRetro le go leor gameplay nua cosúil le CrowdPlay agus Online MultiPlayer le haghaidh cluichí retro. Má osclaíonn roinnt úsáideoirí an nasc domhain céanna ar ríomhairí éagsúla, feicfidh siad an cluiche céanna ag rith agus fiú beidh siad in ann páirt a ghlacadh ann.

    Thairis sin, stóráiltear stáit cluiche i stóráil scamall. Ligeann sé seo d'úsáideoirí leanúint ar aghaidh ag imirt ag am ar bith ar aon fheiste eile.

    7. Scálú cothrománach
    Cosúil le SAAS ar bith sa lá atá inniu ann, ní mór cearrbhachas néil a dhearadh le bheith inscálaithe go cothrománach. Ceadaíonn an dearadh comhordaitheoir-oibrí duit níos mó oibrithe a chur leis chun freastal ar níos mó tráchta.

    8. Gan nasc le scamall amháin
    Tá bonneagar CloudRetro á óstáil ar sholáthraithe scamall éagsúla (An tAigéan Digiteach, Alibaba, soláthraí saincheaptha) do réigiúin éagsúla. Cumasaím ag rith i gcoimeádán Docker don bhonneagar agus socruithe líonra a chumrú ag baint úsáide as script bash chun a sheachaint a bheith faoi ghlas i soláthraí scamall amháin. Trí é seo a chomhcheangal le NAT Traversal in WebRTC, is féidir linn an tsolúbthacht a bheith againn CloudRetro a imscaradh ar aon ardán scamall agus fiú ar mheaisíní aon úsáideora.

    Dearadh ailtireachta

    Oibrí: (nó an freastalaí sruthú a luaitear thuas) iolraíonn sé na cluichí, ritheann an phíblíne ionchódaithe, agus sruthaíonn sé na meáin ionchódaithe chuig úsáideoirí. Déantar cásanna oibrithe a dháileadh ar fud an domhain, agus is féidir le gach oibrí seisiúin úsáideora iolracha a láimhseáil ag an am céanna.

    Comhordaitheoir: freagrach as an úsáideoir nua a phéireáil leis an oibrí is oiriúnaí le haghaidh sruthú. Idirghníomhaíonn an comhordaitheoir le hoibrithe trí WebSocket.

    Stóráil stáit cluiche: cianstóráil lárnach do gach stát cluiche. Soláthraíonn an stóráil seo feidhmeanna tábhachtacha cosúil le cianshábháil/ualach.

    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Ailtireacht barrleibhéil CloudRetro

    Script Chustaim

    Nuair a osclaíonn úsáideoir nua CloudRetro i gcéimeanna 1 agus 2 a thaispeántar san fhigiúr thíos, iarrtar an comhordaitheoir chomh maith leis an liosta oibrithe atá ar fáil chuig an gcéad leathanach. Tar éis seo, i gcéim 3 ríomhann an cliant na moilleanna do na hiarrthóirí go léir a úsáideann iarratas ping HTTP. Seoltar an liosta moilleanna seo ar ais chuig an gcomhordaitheoir ansin ionas gur féidir leis an oibrí is oiriúnaí chun freastal ar an úsáideoir a chinneadh. Cruthaíonn Céim 4 thíos an cluiche. Bunaítear nasc sruthú WebRTC idir an t-úsáideoir agus an t-oibrí sannta.
    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Script úsáideora tar éis rochtain a fháil

    Cad atá taobh istigh den oibrí

    Stóráiltear píblínte cluiche agus sruthaithe taobh istigh den oibrí ina aonar agus malartaítear faisnéis ann tríd an gcomhéadan. Faoi láthair, déantar an chumarsáid seo trí shonraí i gcuimhne a aistriú trí cainéil Golang sa phróiseas céanna. Is é an chéad sprioc eile ná deighilt, i.e. seoladh neamhspleách an chluiche i bpróiseas eile.

    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Idirghníomhú comhpháirteanna oibrithe

    Príomhchodanna:

    • WebRTC: comhpháirt cliant a ghlacann le hionchur úsáideora agus aschuir meáin ionchódaithe ón bhfreastalaí.
    • Aithriseoir cluiche: comhpháirt cluiche. A bhuíochas leis an leabharlann Libretro, tá an córas in ann an cluiche a reáchtáil taobh istigh den phróiseas céanna agus idircheapadh go hinmheánach meáin agus sruth ionchuir.
    • Gabhtar frámaí in-chluiche agus seoltar chuig an ionchódóir iad.
    • Ionchódóir Íomhá/Fuaim: píblíne ionchódaithe a thógann frámaí meán, a ionchódaíonn sa chúlra, agus aschuir íomhánna/fuaime ionchódaithe.

    Cur i bhFeidhm

    Tá CloudRetro ag brath ar WebRTC mar theicneolaíocht cnámh droma aige, agus mar sin sula tumadh isteach i sonraí chur i bhfeidhm Golang, chinn mé labhairt faoi WebRTC féin. Is iontach an teicneolaíocht í seo a chuidigh go mór liom chun foighne fo-dara a bhaint amach le haghaidh sonraí a shruthú.

    WebRTC

    Tá WebRTC deartha chun naisc ardcháilíochta piara le piaraí a sholáthar ar aipeanna agus brabhsálaithe soghluaiste dúchais ag baint úsáide as APIanna simplí.

    Trasnú NAT

    Tá cáil ar WebRTC as a fheidhmiúlacht NAT Traversal. Tá WebRTC deartha le haghaidh cumarsáide idir piaraí. Is é an sprioc atá aige ná an bealach díreach is oiriúnaí a aimsiú, ag seachaint geataí NAT agus ballaí dóiteáin le haghaidh cumarsáide idir piaraí trí phróiseas ar a dtugtar ICE. Mar chuid den phróiseas seo, aimsíonn APIanna WebRTC do sheoladh IP poiblí trí úsáid a bhaint as freastalaithe STUN agus cuir ar aghaidh chuig an bhfreastalaí sealaíochta é (CAS(b) nuair nach féidir nasc díreach a bhunú.

    Mar sin féin, ní bhaineann CloudRetro leas iomlán as an ngné seo. Níl a naisc piara-le-piara idir úsáideoirí, ach idir úsáideoirí agus freastalaithe scamall. Tá níos lú srianta cumarsáide dírí ar thaobh an fhreastalaí den tsamhail ná mar atá ag gnáthfheiste úsáideora. Ligeann sé seo duit calafoirt isteach a oscailt roimh ré nó seoltaí IP poiblí a úsáid go díreach, ós rud é nach bhfuil an freastalaí taobh thiar de NAT.

    Roimhe seo, bhí mé ag iarraidh an tionscadal a iompú ina ardán dáileacháin cluiche do Cloud Gaming. Ba é an smaoineamh ná ligean do chruthaitheoirí cluichí cluichí agus acmhainní sruthú a sholáthar. Agus d'idirghníomhódh úsáideoirí go díreach le soláthraithe. Ar an mbealach díláraithe seo, níl i CloudRetro ach creat chun acmhainní sruthú tríú páirtí a nascadh le húsáideoirí, rud a fhágann go bhfuil sé níos inscálaithe nuair nach bhfuil sé á óstáil a thuilleadh. Tá ról WebRTC NAT Traversal anseo an-tábhachtach chun tosaigh nasc idir piaraí a éascú ar acmhainní sruthú tríú páirtí, rud a fhágann go mbeidh sé níos éasca don chruthaitheoir nascadh leis an líonra.

    Comhbhrú físeáin

    Is cuid fíor-riachtanach den phíblíne é comhbhrú físeáin agus cuireann sé go mór le sreabhadh réidh. Cé nach bhfuil sé riachtanach eolas a bheith agat ar gach mionsonra faoi ionchódú físeáin VP8/H264, is féidir le tuiscint a fháil ar na coincheapa cabhrú leat roghanna luais físe sruthaithe a thuiscint, iompar gan choinne a dhífhabhtú, agus latency a choigeartú.

    Tá sé dúshlánach físeán a chomhbhrú le haghaidh seirbhíse sruthú mar ní mór don algartam a chinntiú go bhfuil an t-am ionchódaithe iomlán + am tarchurtha líonra + am díchódaithe chomh híseal agus is féidir. Ina theannta sin, ní mór don phróiseas códaithe a bheith comhsheasmhach agus leanúnach. Ní bhíonn feidhm ag roinnt malairtí ionchódaithe - mar shampla, ní féidir linn a bheith i bhfabhar amanna fada ionchódaithe thar mhéideanna comhaid níos lú agus amanna díchódaithe, nó úsáid a bhaint as comhbhrú neamhréireach.

    Is é an smaoineamh atá taobh thiar de chomhbhrú físeáin ná píosaí faisnéise nach bhfuil gá leo a dhíchur agus leibhéal inghlactha cruinnis a choinneáil d'úsáideoirí. Chomh maith le frámaí íomhá aonair statacha a ionchódú, cuireann an algartam an fráma reatha isteach ó na cinn roimhe seo agus na cinn eile, mar sin ní sheoltar ach a difríocht. Mar is léir ón sampla le PacmanName, ní tharchuirtear ach pointí difreálach.

    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Comparáid idir frámaí físeáin agus PacmanName á n-úsáid mar shampla

    Comhbhrú fuaime

    Mar an gcéanna, fágann an t-algartam comhbhrú fuaime sonraí nach féidir le daoine a bhrath ar lár. Is é Opus an CODEC fuaime is fearr feidhmíochta faoi láthair. Tá sé deartha chun tonn fuaime a tharchur thar phrótacal datagram ordaithe ar nós RTP (Prótacal Iompar Fíor-Ama). Tá a latency níos ísle ná mp3 agus aac, agus tá an caighdeán níos airde. Is gnách go mbíonn an latency thart ar 5 ~ 66,5ms.

    Pion, WebRTC i Golang

    Pawn Is tionscadal foinse oscailte é a thugann WebRTC go Golang. In ionad an ghnáthfhillteán de leabharlanna dúchais C ++ WebRTC, is é Pion feidhmiú Golang dúchais WebRTC le feidhmíocht níos fearr, comhtháthú Téigh, agus rialú leagan ar phrótacail WebRTC.

    Cuireann an leabharlann ar chumas sruthú chomh maith le go leor ionsuite iontach le fo-dhara latency. Tá a chur i bhfeidhm féin aige ar STUN, DTLS, SCTP, etc. agus roinnt turgnamh le QUIC agus WebAssembly. Is acmhainn foghlama fíor-mhaith í an leabharlann foinse oscailte seo féin le doiciméadú den scoth, feidhmiú prótacail líonra, agus samplaí fionnuara.

    Tá an pobal Pion, faoi stiúir cruthaitheoir an-paiseanta, go leor bríomhar, le go leor plé cáilíochta ar siúl faoi WebRTC. Má tá suim agat sa teicneolaíocht seo, bí linn http://pion.ly/slack – beidh tú ag foghlaim a lán rudaí nua.

    Scríobh CloudRetro i Golang

    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Cur i bhfeidhm oibrí i Go

    Téigh Cainéil i nGníomh

    A bhuíochas le dearadh cainéal álainn Go, tá na fadhbanna a bhaineann le sruthú imeachtaí agus concurrency simplithe go mór. Mar atá sa léaráid, tá comhpháirteanna éagsúla ag rith go comhthreomhar ag GoRoutines éagsúla. Bainistíonn gach comhpháirt a staid agus déanann cumarsáid trí bhealaí. Éilíonn dearbhú roghnach Golang imeacht adamhach amháin a phróiseáil gach uair sa chluiche (tic cluiche). Ciallaíonn sé seo nach gá aon ghlasáil don dearadh seo. Mar shampla, nuair a shábhálann úsáideoir, tá gá le léargas iomlán ar staid an chluiche. Ba cheart go bhfanfadh an staid seo leanúnach, ag logáil isteach go dtí go mbeidh an sábháil críochnaithe. Le linn gach tic cluiche, ní féidir leis an inneall ach oibríocht shábháil nó ionchuir a láimhseáil, rud a fhágann go bhfuil an snáithe próiseas sábháilte.

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

    Fan isteach / Fan-amach

    Oireann an teimpléad Golang seo go foirfe do mo chás úsáide CrowdPlay agus Multiple Player. Ag leanúint leis an bpatrún seo, cuirtear gach ionchur úsáideora i seomra amháin isteach sa chainéal lárnach iontrála. Ansin imscartar meáin chluiche chuig gach úsáideoir sa seomra céanna. Ar an mbealach seo, bainimid amach deighilt an stáit cluiche idir roinnt seisiún cluiche úsáideoirí éagsúla.

    Cearrbhachas scamall foinse oscailte ar WebRTC: p2p, il-imreora, latency nialasach
    Sioncrónú idir seisiúin éagsúla

    Míbhuntáistí Golang

    Níl Golang foirfe. Tá an cainéal mall. I gcomparáid le blocáil, is bealach níos éasca é cainéal Go chun imeachtaí comhthráthacha agus snáithithe a láimhseáil, ach ní sholáthraíonn cainéal an fheidhmíocht is fearr. Tá loighic blocála casta faoin gcainéal. Mar sin rinne mé roinnt coigeartuithe ar an gcur i bhfeidhm, ag athchur i bhfeidhm glais agus luachanna adamhach nuair a athsholáthraíodh bealaí chun an fheidhmíocht a bharrfheabhsú.

    Ina theannta sin, tá an bailitheoir truflais i Golang neamhbhainistithe, rud a fhágann uaireanta sosanna fada amhrasach. Cuireann sé seo isteach go mór ar an bhfeidhmchlár sruthú fíor-ama.

    COG

    Úsáideann an tionscadal leabharlann foinse oscailte Golang VP8/H264 atá ann faoi láthair le haghaidh comhbhrú meán agus Libretro le haghaidh aithriseoirí cluiche. Níl sna leabharlanna seo go léir ach fillteáin de leabharlann C in Go ag baint úsáide as COG. Tá cuid de na míbhuntáistí liostaithe i an post seo le Dave Cheney. Fadhbanna a bhí agam:

    • neamhábaltacht timpiste a ghabháil in CGO, fiú le Golang RecoveryCrash;
    • teip baic feidhmíochta a aithint nuair nach féidir linn fadhbanna mionsonraithe a bhrath in CGO.

    Conclúid

    Bhain mé amach mo sprioc maidir le seirbhísí cearrbhachais néal a thuiscint agus ardán a chruthú a chuidíonn liom cluichí retro cumhach a imirt le mo chairde ar líne. Ní bheadh ​​an tionscadal seo indéanta gan leabharlann Pion agus tacaíocht an phobail Pion. Táim thar a bheith buíoch as a dhianfhorbairt. Chinntigh na APIs simplí a sholáthraíonn WebRTC agus Pion comhtháthú gan uaim. Eisíodh mo chéad chruthúnas ar choincheap an tseachtain chéanna sin, cé nach raibh aon eolas agam roimh ré ar chumarsáid idir piaraí (P2P).

    In ainneoin éascaíocht an chomhtháthaithe, is réimse an-chasta san eolaíocht ríomhaireachta é sruthú P2P. Caithfidh sí déileáil le castacht ailtireachtaí líonra atá ann le fada an lá ar nós IP agus NAT chun seisiún piaraí le piaraí a chruthú. Le linn dom a bheith ag obair ar an tionscadal seo, fuair mé go leor eolais luachmhar faoi líonrú agus barrfheabhsú feidhmíochta, mar sin spreagaim gach duine chun iarracht a dhéanamh táirgí P2P a thógáil ag baint úsáide as WebRTC.

    Freastalaíonn CloudRetro ar na cásanna úsáide go léir a raibh mé ag súil leo ó mo dhearcadh mar imreoir retro. Mar sin féin, is dóigh liom go bhfuil go leor réimsí sa tionscadal ar féidir liom a fheabhsú, mar shampla an líonra a dhéanamh níos iontaofa agus níos feidhmiúla, ag soláthar grafaicí cluiche ar chaighdeán níos airde, nó an cumas cluichí a roinnt idir úsáideoirí. Tá mé ag obair go dian ar seo. Lean ort le do thoil tionscadal agus tacaigh leis más maith leat é.

Foinse: will.com

Add a comment