Bathar-bog mar sheirbheis, bun-structar mar sheirbheis, à rd-Úrlar mar sheirbheis, à rd-Úrlar conaltraidh mar sheirbheis, co-labhairtean bhidio mar sheirbheis, dè mu dheidhinn cluich sgòthan mar sheirbheis? Chaidh grunn oidhirpean a dhèanamh mu thrà th gus geamannan sgòthan (Cloud Gaming) a chruthachadh, leithid Stadia, a chaidh a chuir air bhog o chionn ghoirid le Google. Stadia , ach an urrainn do dhaoine eile WebRTC a chleachdadh san aon dòigh?
Cho-dhĂšin Thanh Nguyen an cothrom seo fheuchainn air a âphròiseact stòr fosgailte aige CloudRetro. Tha CloudRetro stèidhichte air Pion, Leabharlann WebRTC stèidhichte air Go (taing bhon sgioba leasachaidh Pion airson an cuideachadh ann a bhith ag ullachadh an artaigil seo). San artaigil seo, tha Thanh aâ toirt seachad sealladh farsaing air ailtireachd aâ phròiseict aige, agus cuideachd aâ bruidhinn air na rudan feumail a dhâ ionnsaich e agus na dĂšbhlain a choinnich e na chuid obrach.
ClĂ rachadh
An-uiridh, nuair a dhâ ainmich Google Stadia, shèid e mâ inntinn. Tha am beachd cho sònraichte agus cho Ăšr-ghnĂ thach is gu robh mi an-còmhnaidh aâ faighneachd ciamar a bha seo eadhon comasach leis an teicneòlas a th âann. Leis aâ mhiann a bhith aâ tuigsinn aâ chuspair seo nas fheĂ rr thug mi orm an dreach agam fhèin de gheama sgòthan stòr fosgailte a chruthachadh. Bha an toradh dĂŹreach sgoinneil. Gu h-ĂŹosal bu mhath leam am pròiseas obrach air mo bhliadhna a roinn .
TLDR: dreach sleamhnag goirid le prĂŹomh thachartasan
Carson a tha geamannan sgòthan san à m ri teachd
Tha mi aâ creidsinn gum bi Cloud Gaming a dhâ aithghearr mar an ath ghinealach de chan e a-mhĂ in gèamadh, ach cuideachd raointean eile de shaidheans coimpiutair. Is e gèamadh sgòthan mullach aâ mhodail teachdaiche / frithealaiche. Bidh am modail seo a âmeudachadh riaghladh backend agus aâ lughdachadh obair aghaidh le bhith a âtoirt aoigheachd do loidsig geama air frithealaiche iomallach agus aâ sruthadh ĂŹomhaighean / claisneachd don neach-dèiligidh. Bidh an frithealaiche aâ dèanamh aâ ghiollachd throm gus nach bi an neach-dèiligidh tuilleadh fo thròcair crĂŹochan bathar-cruaidh.
Leigidh Google Stadia leat cluich (ie geamannan blockbuster à rd-Ïre) air eadar-aghaidh mar YouTube. Faodar an aon dòigh-obrach a chuir an sàs ann an tagraidhean trom far-loidhne eile leithid siostam obrachaidh no dealbhadh grafaigeach 2D / 3D, msaa. gus an urrainn dhuinn an ruith gu cunbhalach air innealan le mion-chomharrachadh thar iomadh à rd-Úrlar.

Ăm ri teachd an teicneòlais seo: Smaoinich ma ruith Microsoft Windows 10 air brabhsair Chrome?
Tha gèamadh Cloud dÚbhlanach gu teicnigeach
Tha gèamadh mar aon de na raointean tearc sin far a bheil feum air freagairt luchd-cleachdaidh seasmhach, luath. Ma thachras sinn bho Ă m gu Ă m ri dĂ il 2 diog nuair a bhriogas tu air duilleag, gabhaidh seo ris. Tha sruthan bhidio beò buailteach a bhith a âlagachadh beagan dhiog, ach tha iad fhathast aâ tabhann comas cleachdaidh reusanta. Ach, ma bhios an geama gu tric aâ dol sĂŹos 500ms, tha e dĂŹreach do-dhèanta a chluich. Is e ar n-amas latency gu math ĂŹosal a choileanadh gus am bi aâ bheĂ rn eadar cuir a-steach agus meadhanan cho beag sa ghabhas. Mar sin, chan eil an dòigh thraidiseanta a thaobh sruthadh bhidio buntainneach an seo.

Teamplaid Gèam Coitcheann Cloud
Pròiseact stòr fosgailte CloudRetro
Cho-dhĂšin mi sampall deuchainn de gheama sgòthan a chruthachadh gus faicinn an robh seo comasach le cuingealachaidhean lĂŹonra cho teann. Thagh mi Golang airson dearbhadh bun-bheachd oir bâ i an cĂ nan air an robh mi eòlach agus bha e gu math freagarrach airson aâ bhuileachadh seo airson iomadach adhbhar eile, mar a lorg mi nas fhaide air adhart. Tha Go sĂŹmplidh agus a 'leasachadh gu math luath; Tha seanalan ann an Go math airson a bhith aâ riaghladh ioma-snĂ thainn.
Am pròiseact na sheirbheis cluich sgòthan stòr fosgailte airson geamannan retro. Is e amas aâ phròiseict an t-eòlas cluichidh as comhfhurtail a thoirt do gheamannan retro traidiseanta agus ioma-chluicheadair a chuir ris.
Faodaidh tu barrachd ionnsachadh mun phròiseact an seo: .
GnĂŹomh CloudRetro
Bidh CloudRetro aâ cleachdadh gheamannan retro gus cumhachd geamannan sgòthan a nochdadh. A leigeas leat mòran eòlasan cluich sònraichte fhaighinn.
- Gluasad a 'ghèam
- Ath-chluich sa bhad nuair a dh'fhosglas tu an duilleag; chan eil feum air luchdachadh sĂŹos no stĂ ladh
- Ag obair ann am brabhsair gluasadach, agus mar sin chan eil feum air bathar-bog airson a ruith
- Faodar seiseanan geama a roinn thairis air iomadh inneal agus an stòradh san sgòth airson an ath thuras a logas tu a-steach
- Faodar an geama a chraoladh, no faodaidh grunn luchd-cleachdaidh a chluich aig an aon Ă m:
- Sluagh mar TwitchPlayPokemon, dĂŹreach barrachd tar-Ă rd-Ăšrlar agus barrachd fĂŹor-Ăšine
- Geamannan air loidhne an-asgaidh. Faodaidh mòran luchd-cleachdaidh cluich gun a bhith a 'stèidheachadh lÏonra. Faodaidh 2 chluicheadair Samurai Shodown a-nis a chluich thairis air lÏonra CloudRetro

Tionndadh demo de gheama ioma-chluiche air-loidhne air diofar innealanBun-structar
Riatanasan agus stac teicneòlas
Gu h-ĂŹosal tha liosta de na riatanasan a shuidhich mi mus tòisich mi air aâ phròiseact.
1. Aon chluicheadair
Is dòcha nach eil an riatanas seo aâ coimhead ro chudromach no follaiseach an seo, ach is e seo aon de na prĂŹomh rudan beir leat, tha e aâ leigeil le geamannan sgòthan fuireach cho fada air falbh bho sheirbheisean sruthadh traidiseanta sa ghabhas. Ma chuireas sinn fòcas air geama aon-chluicheadair, gheibh sinn cuidhteas frithealaiche meadhanaichte no CDN oir chan fheum sinn sruthadh chun t-sluaigh. An Ă ite a bhith aâ luchdachadh suas sruthan gu frithealaiche sinc no aâ dol seachad air pacaidean gu frithealaiche WebSocket meadhanaichte, tha sruthan seirbheis air an lĂŹbhrigeadh gu dĂŹreach don neach-cleachdaidh tro cheangal WebRTC co-aoisean.2. Sruth meadhanan latency ĂŹosal
Aâ leughadh mu Stadia, bidh mi tric aâ faicinn WebRTC air ainmeachadh ann an cuid de artaigilean. Thuig mi gur e teicneòlas air leth a thâ ann an WebRTC agus gu bheil e foirfe airson a chleachdadh ann an geamannan sgòthan. Tha WebRTC na phròiseact a bheir seachad brobhsairean lĂŹn agus tagraidhean gluasadach le conaltradh fĂŹor-Ăšine tro API sĂŹmplidh. Tha e aâ toirt seachad ceangal co-aoisean, tha e air a bharrrachadh airson meadhanan, agus tha codecs Ă bhaisteach air an togail a-steach leithid VP8 agus H264.Thug mi prĂŹomhachas do bhith aâ dèanamh cinnteach gu bheil an eòlas cleachdaiche as fheĂ rr a thaobh cumail suas grafaigean Ă rd-inbhe. Gabhar ri cuid de chall san algairim. Tha ceum a bharrachd aig Google Stadia ann a bhith aâ lughdachadh meud ĂŹomhaigh air an fhrithealaiche, agus tha frèamaichean air an Ă rdachadh gu cĂ ileachd nas Ă irde mus tèid an cur gu co-aoisean.
3. Bun-structair sgaoilte le slighe cruinn-eòlasach
Ge bith dè cho Ă rd âs a tha an algairim teannachaidh agus còd, is e an lĂŹonra fhathast am feart co-dhĂšnaidh a chuireas gu mòr ri latency. Feumaidh uidheamachd a bhith aig an ailtireachd gus am frithealaiche as fhaisge air an neach-cleachdaidh a chĂ radh gus Ăšine turas cruinn (RTT) a lughdachadh. Feumaidh co-òrdanaiche 1 a bhith aig an ailtireachd agus grunn luchd-frithealaidh sruthadh air feadh an t-saoghail: US West, US East, Europe, Singapore, China. Feumaidh a h-uile seirbheisiche sruthadh a bhith gu tur aonaranach. Faodaidh an siostam an cuairteachadh aige atharrachadh nuair a thig frithealaiche a-steach no aâ fĂ gail an lĂŹonra. Mar sin, le trafaic mhòr, le bhith aâ cur frithealaichean a bharrachd aâ ceadachadh sgèileadh còmhnard.4. Co-chòrdalachd brabhsair
Tha gèamadh Cloud aig a 'char as fheĂ rr nuair a dh' fheumas e an ĂŹre as lugha bho luchd-cleachdaidh. Tha seo aâ ciallachadh gu bheil e comasach ruith ann am brobhsair. Bidh brobhsairean aâ cuideachadh gus an eòlas cluichidh a dhèanamh cho comhfhurtail sa ghabhas do luchd-cleachdaidh, gan sĂ bhaladh bho bhith aâ stĂ ladh bathar-bog is bathar-cruaidh. Bidh brobhsairean cuideachd aâ cuideachadh le bhith aâ toirt seachad gnĂŹomh tar-Ă rd-Ăšrlar eadar dreachan gluasadach is deasg. Gu fortanach, tha WebRTC aâ faighinn deagh thaic thar grunn bhrobhsairean.5. Dealachadh soilleir eadar eadar-aghaidh a 'gheama agus seirbheis
Bidh mi aâ coimhead air an t-seirbheis cluich sgòthan mar Ă rd-Ăšrlar. Bu chòir gum biodh a h-uile duine comasach air rud sam bith a cheangal ris an Ă rd-Ăšrlar. A-nis tha mi air amalachadh le seirbheis cluich sgòthan oir tha LibRetro aâ tabhann eadar-aghaidh emuladair geama breagha airson geamannan retro leithid SNES, GBA, PS.6. Seòmraichean airson ioma-chluicheadair, cluich sluagh agus ceangal a-muigh (ceangal domhainn) leis a' gheama
Tha CloudRetro aâ toirt taic do dhâ iomadh geama Ăšr leithid CrowdPlay agus Online MultiPlayer airson geamannan retro. Ma dhâ fhosglas grunn luchd-cleachdaidh an aon cheangal domhainn air diofar choimpiutairean, chĂŹ iad an aon gheama aâ ruith agus bidh iad eadhon comasach air a dhol còmhla ris.A bharrachd air an sin, tha stĂ itean geama air an stòradh ann an stòradh neòil. Leigidh seo le luchd-cleachdaidh cumail orra aâ cluich aig Ă m sam bith air inneal sam bith eile.
7. Sgèileadh còmhnard
Coltach ri SAAS sam bith an-diugh, feumaidh geamannan sgòthan a bhith air an dealbhadh gus a bhith scalable gu còmhnard. Leigidh dealbhadh co-òrdanaiche dhut barrachd luchd-obrach a chuir ris gus barrachd trafaic a fhrithealadh.8. Gun cheangal ri aon neul
Tha bun-structar CloudRetro air a chumail air diofar sholaraichean sgòthan (Cuan Digiteach, Alibaba, solaraiche Ă bhaisteach) airson diofar roinnean. Bidh mi a âcomasachadh ruith ann an soitheach Docker airson aâ bhun-structair agus a ârèiteachadh shuidheachaidhean lĂŹonra aâ cleachdadh sgriobt bash gus nach tèid a ghlasadh a-steach do aon sholaraiche sgòthan. Le bhith ga chur còmhla ri NAT Traversal ann an WebRTC, faodaidh sĂšbailteachd a bhith againn gus CloudRetro a chleachdadh air Ă rd-Ăšrlar sgòthan sam bith agus eadhon air innealan neach-cleachdaidh sam bith.Dealbhadh ailtireachd
Neach-obrach: (no an t-seirbheisiche sruthadh a chaidh ainmeachadh gu h-Ă rd) ag iomadachadh nan geamannan, aâ ruith na loidhne-phĂŹoban còdaidh, agus aâ sruthadh nam meadhanan còdaichte gu luchd-cleachdaidh. Tha eisimpleirean luchd-obrach air an sgaoileadh air feadh an t-saoghail, agus faodaidh gach neach-obrach seiseanan ioma-chleachdaiche a lĂ imhseachadh aig an aon Ă m.
Co-òrdanaiche: an urra ris an neach-cleachdaidh Úr a chà radh leis an neach-obrach as freagarraiche airson sruthadh. Bidh an co-òrdanaiche ag eadar-obrachadh le luchd-obrach tro WebSocket.
Stòradh stĂ ite geama: stòradh meadhanach iomallach airson a h-uile stĂ ite geama. Tha an stòradh seo aâ toirt seachad gnĂŹomhan cudromach leithid sĂ bhaladh/luchdachadh iomallach.

Ailtireachd Ă rd-ĂŹre de CloudRetroSgriobt Custom
Nuair a dhâ fhosglas neach-cleachdaidh Ăšr CloudRetro ann an ceumannan 1 agus 2 a chithear san fhigear gu h-ĂŹosal, thathar ag iarraidh air aâ cho-òrdanaiche còmhla ris an liosta de luchd-obrach a tha rim faighinn chun chiad duilleag. Ăs deidh seo, ann an ceum 3 bidh an neach-dèiligidh a âtomhas na dĂ il airson a h-uile tagraiche aâ cleachdadh iarrtas ping HTTP. Thèid an liosta dĂ il seo an uairsin a chuir air ais chun cho-òrdanaiche gus an urrainn dha dearbhadh dè an neach-obrach as freagarraiche airson seirbheis a thoirt don neach-cleachdaidh. Ceum 4 gu h-ĂŹosal a 'cruthachadh a' gheama. Tha ceangal sruthadh WebRTC air a stèidheachadh eadar an neach-cleachdaidh agus an neach-obrach ainmichte.

Sgriobt cleachdaiche às deidh dhut faighinn a-steachDè tha taobh a-staigh an neach-obrach a
Bidh pĂŹoban geama is sruthadh air an stòradh taobh a-staigh an neach-obrach leotha fhèin agus ag iomlaid fiosrachadh an sin tron ââââeadar-aghaidh. An-drĂ sta, tha an conaltradh seo air a dhèanamh le bhith aâ gluasad dĂ ta mar chuimhneachan tro anns an aon phròiseas. Is e an ath amas sgaradh, i.e. cur air bhog neo-eisimeileach aâ gheama ann am pròiseas eile.

Eadar-obrachadh co-phĂ irtean luchd-obrachPrĂŹomh phĂ irtean:
- WebRTC: pà irt teachdaiche a ghabhas ri cuir a-steach luchd-cleachdaidh agus toraidhean meadhanan còdaichte bhon fhrithealaiche.
- Emulator geama: co-phà irt cluiche. Taing do leabharlann Libretro, is urrainn don t-siostam an geama a ruith taobh a-staigh an aon phròiseas agus eadar-ghabhail a-staigh meadhanan agus sruth cuir a-steach.
- Bidh frèamaichean in-gheam air an glacadh agus air an cur chun encoder.
- Ăomhaigh / còdachadh claisneachd: loidhne-phĂŹoban còdaidh a bheir frèamaichean mheadhanan, gan còdachadh air aâ chĂšl, agus aâ toirt a-mach ĂŹomhaighean/claisneachd còdaichte.
РоаНиСаŃиŃ
Tha CloudRetro an urra ri WebRTC mar an teicneòlas cnĂ imh-droma aige, agus mar sin mus deach mi a-steach don fhiosrachadh mu bhuileachadh Golang, chuir mi romham bruidhinn mu WebRTC fhèin. Is e teicneòlas iongantach a tha seo a chuidich mi gu mòr ann a bhith aâ coileanadh latency fo-diog airson dĂ ta sruthadh.
WebRTC
Tha WebRTC air a dhealbhadh gus ceanglaichean Ă rd-inbhe eadar co-aoisean a thoirt seachad air aplacaidean gluasadach dĂšthchasach agus brobhsairean aâ cleachdadh APIan sĂŹmplidh.
NAT Traversal
Tha WebRTC ainmeil airson a ghnĂŹomhachd NAT Traversal. Tha WebRTC air a dhealbhadh airson conaltradh co-aoisean. Is e an t-amas aige an t-slighe dhĂŹreach as freagarraiche a lorg, aâ seachnadh geataichean NAT agus ballachan teine ââââairson conaltradh le co-aoisean tro phròiseas ris an canar . Mar phĂ irt den phròiseas seo, lorgaidh na WebRTC API an seòladh IP poblach agad aâ cleachdadh frithealaichean STUN agus cuir air adhart e chun t-seirbheisiche sealaidheachd () nuair nach urrainnear ceangal dĂŹreach a stèidheachadh.
Ach, chan eil CloudRetro aâ dèanamh lĂ n fheum den fheart seo. Chan eil na ceanglaichean co-aoisean aige eadar luchd-cleachdaidh, ach eadar luchd-cleachdaidh agus frithealaichean sgòthan. Tha nas lugha de chuingealachaidhean conaltraidh dĂŹreach aig taobh frithealaiche aâ mhodail na inneal cleachdaiche Ă bhaisteach. Leigidh seo leat puirt a tha aâ tighinn a-steach ro-fhosgladh no seòlaidhean IP poblach a chleachdadh gu dĂŹreach, leis nach eil am frithealaiche air cĂšl NAT.
Roimhe sin, bha mi airson am pròiseact a thionndadh gu bhith na Ă rd-Ăšrlar cuairteachaidh geama airson Cloud Gaming. Bâ e am beachd leigeil le luchd-cruthachaidh geama geamannan agus goireasan sruthadh a thoirt seachad. Agus bhiodh luchd-cleachdaidh ag eadar-obrachadh gu dĂŹreach le solaraichean. San dòigh dĂŹ-mheadhanaichte seo, chan eil ann an CloudRetro ach frèam airson goireasan sruthadh treas-phĂ rtaidh a cheangal ri luchd-cleachdaidh, ga dhèanamh nas scalable nuair nach eil e air a chumail tuilleadh. Tha Ă ite WebRTC NAT Traversal an seo glè chudromach gus tòiseachadh air ceangal co-aoisean gu co-aoisean air goireasan sruthadh treas-phĂ rtaidh, ga dhèanamh nas fhasa don neach-cruthachaidh ceangal ris an lĂŹonra.
DĂšmhlachadh bhidio
Tha teannachadh bhidio na phĂ irt riatanach den loidhne-phĂŹoban agus a âcur gu mòr ri sruthadh rèidh. Ged nach eil e riatanach fios a bhith agad air a h-uile mion-fhiosrachadh mu chòdachadh bhidio VP8 / H264, faodaidh tuigse a bhith agad air na bun-bheachdan do chuideachadh le bhith aâ tuigsinn roghainnean astar bhidio sruthadh, deasbaireachd giĂšlan ris nach robh dĂšil, agus latency atharrachadh.
Tha e dĂšbhlanach a bhith aâ teannachadh bhidio airson seirbheis sruthadh oir feumaidh an algairim dèanamh cinnteach gu bheil an Ăšine còdaidh iomlan + Ăšine tar-chuir lĂŹonra + Ăšine dĂŹ-còdaidh cho ĂŹosal sa ghabhas. A bharrachd air an sin, feumaidh am pròiseas còdaidh a bhith cunbhalach agus leantainneach. Chan eil cuid de mhalairt-chòdachadh aâ buntainn â mar eisimpleir, chan urrainn dhuinn a bhith fĂ bharach dha amannan còdaidh fada thairis air meudan faidhle nas lugha agus amannan dĂŹ-chòdaidh, no a bhith aâ cleachdadh teannachadh neo-chunbhalach.
Is e am beachd air cĂšl teannachadh bhidio cuir Ă s do phĂŹosan fiosrachaidh neo-riatanach fhad âs a chumas iad ĂŹre iomchaidh de mhearachd airson luchd-cleachdaidh. A bharrachd air a bhith aâ còdachadh frèamaichean ĂŹomhaighean statach fa leth, tha an algairim aâ toirt a-steach am frèam gnĂ thach bhon fheadhainn a bhâ ann roimhe agus an ath fhear, agus mar sin chan eil ach an eadar-dhealachadh aca air a chuir. Mar a chithear bhon eisimpleir le Pacman, chan eil ach puingean eadar-dhealaichte air an gluasad.

Dèan coimeas eadar frèamaichean bhidio aâ cleachdadh Pacman mar eisimpleirDĂšmhlachadh claisneachd
Mar an ceudna, tha an algairim teannachaidh claisneachd aâ fĂ gail a-mach dĂ ta nach fhaic daoine. Is e Opus an-drĂ sta an codec claisneachd as fheĂ rr a tha aâ coileanadh. Tha e air a dhealbhadh gus tonn claisneachd a chuir thairis air protocol datagram òrdaichte leithid RTP (Pròtacal Còmhdhail FĂŹor-Ăšine). Tha an latency aige nas ĂŹsle na mp3 agus aac, agus tha an cĂ ileachd nas Ă irde. Mar as trice tha an latency timcheall air 5 ~ 66,5ms.
Pion, WebRTC ann an Golang
na phròiseact le còd fosgailte a bheir WebRTC gu Golang. An à ite an còmhdach à bhaisteach de leabharlannan dÚthchasach C ++ WebRTC, tha Pion na bhuileachadh dÚthchasach Golang de WebRTC le coileanadh nas fheà rr, amalachadh Go, agus smachd dreach air protocolaidhean WebRTC.
Bidh an leabharlann cuideachd aâ comasachadh sruthadh le tòrr thogalaichean togte le latency fo-diog. Tha a bhuileachadh fhèin de STUN, DTLS, SCTP, msaa. agus cuid de dheuchainnean le QUIC agus WebAssembly. Tha an leabharlann stòr fosgailte seo fhèin na ghoireas ionnsachaidh fĂŹor mhath le sgrĂŹobhainnean sĂ r-mhath, buileachadh protocol lĂŹonra, agus eisimpleirean fionnar.
Tha coimhearsnachd Pion, air a stiÚireadh le neach-cruthachaidh fÏor dhealasach, gu math beòthail, le tòrr chòmhraidhean cà ileachd a 'dol air adhart mu WebRTC. Ma tha Úidh agad san teicneòlas seo, thig còmhla rinn - ionnsaichidh tu tòrr rudan Úra.
Aâ sgrĂŹobhadh CloudRetro ann an Golang

Cur an gnĂŹomh neach-obrach ann an GoRach gu seanalan ann an gnĂŹomh
Taing do dhealbhadh seanail breagha Go, tha na duilgheadasan a thaobh sruthadh tachartais agus concurrency air an sĂŹmplidh gu mòr. Mar a tha san dealbh, tha grunn phĂ irtean aig diofar GoRoutines aâ ruith aig an aon Ă m. Bidh gach pĂ irt aâ riaghladh a staid agus aâ conaltradh tro shianalan. Tha tagradh roghnach Golang aâ toirt air aon tachartas atamach a bhith air a phròiseasadh a h-uile uair sa gheama (cuir diog sa gheama). Tha seo a 'ciallachadh nach eil feum air glasadh airson an dealbhadh seo. Mar eisimpleir, nuair a shĂ bhalas neach-cleachdaidh, tha feum air dealbh slĂ n de staid aâ gheama. Bu chòir don staid seo fuireach leantainneach, logadh a-steach gus am bi an sĂ bhaladh deiseil. Rè gach diog geama, chan urrainn don backend ach obrachadh sĂ bhalaidh no cuir a-steach a lĂ imhseachadh, aâ dèanamh an snĂ ithlean pròiseas sĂ bhailte.
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-in/Fan-out
Tha an teamplaid Golang seo aâ freagairt air aâ chĂšis cleachdaidh CrowdPlay agus Multiple Player agam gu foirfe. Aâ leantainn aâ phĂ train seo, tha a h-uile cuir a-steach luchd-cleachdaidh ann an aon rĂšm air a thogail a-steach don t-sianal inntrigidh sa mheadhan. Bidh meadhanan geama an uairsin air an cleachdadh chun a h-uile neach-cleachdaidh san aon rĂšm. San dòigh seo, bidh sinn aâ coileanadh roinneadh staid aâ gheama eadar grunn sheiseanan geama de luchd-cleachdaidh eadar-dhealaichte.

Sioncronadh eadar diofar sheiseananEas-bhuannachdan Golang
Chan eil Golang foirfe. Tha an sianal slaodach. An coimeas ri bacadh, tha Go channel dĂŹreach na dhòigh nas fhasa air tachartasan co-aontach is snĂ thaichte a lĂ imhseachadh, ach chan eil sianal aâ toirt seachad an coileanadh as fheĂ rr. Tha loidsig bacaidh iom-fhillte fon t-sianal. Mar sin rinn mi beagan atharrachaidhean air aâ bhuileachadh, ag ath-chur ghlasan agus luachan atamach nuair a chaidh seanalan a chuir an Ă ite gus coileanadh a bharrachadh.
A bharrachd air an sin, chan eil an neach-cruinneachaidh sgudail ann an Golang air a riaghladh, a bhios uaireannan ag adhbhrachadh amannan amharasach fada. Tha seo gu mòr aâ cur bacadh air an tagradh sruthadh fĂŹor-Ăšine.
COG
Bidh am pròiseact aâ cleachdadh an leabharlann stòr fosgailte Golang VP8/H264 a thâ ann mar-thĂ airson teannachadh nam meadhanan agus Libretro airson emuladairean geama. Chan eil anns na leabharlannan sin uile ach pasgain de leabharlann C ann an Go aâ cleachdadh . Tha cuid de na h-eas-bhuannachdan air an liostadh ann an . Na duilgheadasan a choinnich mi:
- neo-chomas tubaist a ghlacadh ann an CGO, eadhon le Golang RecoveryCrash;
- fĂ illigeadh air botail coileanaidh a chomharrachadh nuair nach urrainn dhuinn duilgheadasan mionaideach a lorg ann an CGO.
co-dhĂšnadh
Choilean mi an t-amas agam a bhith aâ tuigsinn seirbheisean cluich sgòthan agus aâ cruthachadh Ă rd-Ăšrlar a chuidicheas mi le bhith aâ cluich gheamannan retro cianalais le mo charaidean air-loidhne. Cha bhiodh am pròiseact seo air a bhith comasach Ă s aonais leabharlann Pion agus taic coimhearsnachd Pion. Tha mi air leth taingeil airson a leasachadh dian. Rinn na APIan sĂŹmplidh a thug WebRTC agus Pion seachad cinnteach gum biodh amalachadh fuaigheil. Chaidh aâ chiad dearbhadh bun-bheachd agam fhoillseachadh an aon seachdain, eadhon ged nach robh eòlas sam bith agam roimhe air conaltradh co-aoisean (P2P).
A dhâ aindeoin cho furasta âs a tha e amalachadh, tha sruthadh P2P gu dearbh na raon gu math toinnte ann an saidheans coimpiutaireachd. Feumaidh i dèiligeadh ri iom-fhillteachd ailtireachd lĂŹonra fad-Ăšine leithid IP agus NAT gus seisean co-aoisean a chruthachadh. Fhad âs a bha mi ag obair air aâ phròiseact seo, fhuair mi tòrr eòlas luachmhor mu lĂŹonrachadh agus optimization dèanadais, agus mar sin tha mi a âbrosnachadh a h-uile duine feuchainn ri toraidhean P2P a thogail aâ cleachdadh WebRTC.
Bidh CloudRetro a âfrithealadh air a h-uile cĂšis cleachdaidh ris an robh dĂšil agam bho mo shealladh mar chluicheadair retro. Ach, tha mi aâ smaoineachadh gu bheil mòran raointean sa phròiseact as urrainn dhomh a leasachadh, leithid an lĂŹonra a dhèanamh nas earbsaiche agus nas gnĂŹomhaiche, aâ toirt seachad grafaigean geama de chĂ ileachd nas Ă irde, no an comas geamannan a cho-roinn eadar luchd-cleachdaidh. Tha mi ag obair cruaidh air seo. Feuch an lean thu agus cuir taic ris ma thogras tu e.
Source: www.habr.com







