Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency

Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
Mapulogalamu ngati ntchito, zomangamanga monga ntchito, nsanja ngati ntchito, nsanja yolankhulirana ngati ntchito, msonkhano wamavidiyo ngati ntchito, nanga bwanji masewera amtambo ngati ntchito? Pakhala pali zoyesayesa zingapo zopanga masewera amtambo (Mtambo wa Masewera), monga Stadia, yomwe yakhazikitsidwa posachedwa ndi Google. Stadia si chatsopano kwa WebRTC, koma kodi ena angagwiritse ntchito WebRTC mwanjira yomweyo?

Thanh Nguyen adaganiza zoyesa mwayiwu pantchito yake yotseguka CloudRetro. CloudRetro idakhazikitsidwa ndi Pion, otchuka Laibulale ya WebRTC yochokera ku Go (zikomo Zowonetsedwa kuchokera ku gulu lachitukuko la Pion kuti awathandize pokonzekera nkhaniyi). M'nkhaniyi, Thanh akupereka mwachidule kamangidwe ka ntchito yake, komanso akukamba za zinthu zothandiza zomwe adaphunzira komanso zovuta zomwe anakumana nazo panthawi ya ntchito yake.

kulowa

Chaka chatha, Google italengeza za Stadia, zidandidabwitsa. Lingalirolo ndi lapadera komanso lachidziwitso kotero kuti nthawi zonse ndimadzifunsa kuti izi zidatheka bwanji ndiukadaulo womwe ulipo. Chikhumbo chofuna kumvetsetsa bwino mutuwu chinandipangitsa kuti ndipange mtundu wanga wamasewera amtambo otseguka. Zotsatira zake zinali zabwino kwambiri. Pansipa ndikufuna kugawana nawo njira yogwirira ntchito chaka changa polojekiti.

TLDR: mtundu wachidule wa slide wokhala ndi zowunikira

Chifukwa chiyani masewera amtambo ndi amtsogolo

Ndikukhulupirira kuti Cloud Gaming posachedwa idzakhala m'badwo wotsatira osati masewera okha, komanso mbali zina za sayansi yamakompyuta. Masewera amtambo ndiye pachimake pamtundu wa kasitomala/seva. Mtunduwu umakulitsa kasamalidwe ka backend ndikuchepetsa ntchito yakutsogolo pochititsa malingaliro amasewera pa seva yakutali ndikutsitsa zithunzi / zomvera kwa kasitomala. Seva imachita ntchito yolemetsa kotero kuti kasitomala sakhalanso ndi vuto lazoletsa za Hardware.

Google Stadia imakulolani kusewera Masewera a AAA (ie masewera apamwamba a blockbuster) pamawonekedwe ngati YouTube. Njira yomweyi ingagwiritsidwe ntchito pazinthu zina zolemetsa zapaintaneti monga makina opangira kapena 2D/3D graphic design, etc. kotero kuti titha kuwayendetsa mosadukiza pazida zocheperako pamapulatifomu angapo.

Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
Tsogolo laukadaulo uwu: Tangoganizirani ngati Microsoft Windows 10 idathamanga pa msakatuli wa Chrome?

Masewera amtambo ndi ovuta mwaukadaulo

Masewero ndi amodzi mwa malo osowa komwe kuyankha kofulumira, kofulumira kumafunikira. Ngati nthawi zina tikumana ndi kuchedwa kwa 2 mphindi tikamadina patsamba, izi ndizovomerezeka. Makanema owonera pompopompo amakonda kutsika masekondi angapo, komabe amapereka mwayi wogwiritsa ntchito. Komabe, ngati masewerawa nthawi zambiri amachedwa ndi 500ms, ndizosatheka kusewera. Cholinga chathu ndikukwaniritsa latency yotsika kwambiri kotero kuti kusiyana pakati pa zolowetsa ndi media kumakhala kochepa momwe tingathere. Chifukwa chake, njira yachikhalidwe yotsatsira makanema sikugwira ntchito pano.

Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
General Cloud Game Template

Open source project CloudRetro

Ndinaganiza zopanga chitsanzo choyesera cha masewera a mtambo kuti ndiwone ngati zonsezi zinali zotheka ndi zoletsa zolimba za intaneti. Ndinasankha Golang chifukwa cha umboni wa lingaliro chifukwa chinali chinenero chimene ndinkachidziwa kwambiri ndipo chinali choyenera kuti izi zitheke pazifukwa zina zambiri, monga ndinazindikira pambuyo pake. Go ndi losavuta ndipo limakula mwachangu kwambiri; Ma Channels mu Go ndi abwino kwambiri pakuwongolera ma multithreading.

Ntchitoyi CloudRetro.io ndi ntchito yotseguka yamasewera amtambo pamasewera a retro. Cholinga cha polojekitiyi ndikubweretsa masewera omasuka kwambiri pamasewera achikhalidwe cha retro ndikuwonjezera osewera ambiri.
Mutha kudziwa zambiri za polojekitiyi apa: https://github.com/giongto35/cloud-game.

CloudRetro magwiridwe antchito

CloudRetro imagwiritsa ntchito masewera a retro kuwonetsa mphamvu yamasewera amtambo. Zomwe zimakulolani kuti mupeze zochitika zambiri zapadera zamasewera.

  • Kunyamula kwamasewera
    • Kusewera pompopompo mukatsegula tsamba; palibe kutsitsa kapena kukhazikitsa kofunikira
    • Imagwira ntchito pa msakatuli wam'manja, kotero palibe pulogalamu yomwe imafunikira kuti iyendetse

  • Masewero amasewera amatha kugawidwa pazida zingapo ndikusungidwa mumtambo nthawi ina mukadzalowa
  • Masewerawa amatha kuseweredwa, kapena atha kuseweredwa ndi ogwiritsa ntchito angapo nthawi imodzi:
    • Crowdplay ngati TwitchPlayPokemon, nsanja yochulukirapo komanso nthawi yeniyeni
    • Masewera aulere pa intaneti. Ogwiritsa ntchito ambiri amatha kusewera popanda kukhazikitsa netiweki. Samurai Shodown tsopano ikhoza kuseweredwa ndi osewera awiri pa CloudRetro network

    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Mtundu wawonetsero wamasewera ambiri pa intaneti pazida zosiyanasiyana

    Zachilengedwe

    Zofunikira ndi tekinoloje stack

    M'munsimu muli mndandanda wa zofunikira zomwe ndakhazikitsa ndisanayambe ntchitoyi.

    1. Wosewera m'modzi
    Chofunikira ichi sichingawonekere chofunikira kwambiri kapena chodziwikiratu pano, koma ndichimodzi mwazinthu zofunikira zomwe ndimatenga, zimalola masewera amtambo kukhala kutali ndi ntchito zotsatsira zachikhalidwe momwe ndingathere. Ngati tiyang'ana pa masewera amasewera amodzi, titha kuchotsa seva yapakati kapena CDN chifukwa sitiyenera kuthamangira kwa anthu ambiri. M'malo mokweza mitsinje ku seva yakuya kapena kupatsira mapaketi ku seva yapakati pa WebSocket, mitsinje yautumiki imaperekedwa mwachindunji kwa wogwiritsa ntchito kudzera pa intaneti ya anzawo a WebRTC.

    2. Low latency media stream
    Powerenga za Stadia, nthawi zambiri ndimawona WebRTC ikutchulidwa m'nkhani zina. Ndinazindikira kuti WebRTC ndiukadaulo wapamwamba kwambiri ndipo ndiyabwino kugwiritsidwa ntchito pamasewera amtambo. WebRTC ndi pulojekiti yomwe imapereka asakatuli ndi mapulogalamu a m'manja ndi mauthenga a nthawi yeniyeni kudzera mu API yosavuta. Amapereka kulumikizana kwa anzawo, amakometsedwa pazofalitsa, ndipo amakhala ndi ma codec okhazikika monga VP8 ndi H264.

    Ndidayika patsogolo kuwonetsetsa kuti ogwiritsa ntchito azitha kugwiritsa ntchito bwino kuposa kusunga zithunzi zapamwamba kwambiri. Zotayika zina ndizovomerezeka mu algorithm. Google Stadia ili ndi sitepe yowonjezera yochepetsera kukula kwa chithunzi pa seva, ndipo mafelemu amakwezedwa kukhala apamwamba kwambiri asanatumizidwe kwa anzawo.

    3. Zomangamanga zogawidwa zokhala ndi malo
    Ziribe kanthu momwe ma compression algorithm ndi ma code amakometsedwa, maukonde akadali chinthu chosankha chomwe chimathandizira kwambiri latency. Zomangamangazi ziyenera kukhala ndi njira yolumikizira seva yomwe ili pafupi kwambiri ndi wogwiritsa ntchito kuti achepetse nthawi yozungulira (RTT). Zomangamangazi ziyenera kukhala ndi wogwirizanitsa 1 ndi ma seva angapo otsatsira omwe amagawidwa padziko lonse lapansi: US West, US East, Europe, Singapore, China. Ma seva onse akukhamukira ayenera kukhala paokha. Dongosololi limatha kusintha kagawidwe kake ngati seva ilowa kapena kusiya netiweki. Chifukwa chake, ndi kuchuluka kwa magalimoto, kuwonjezera ma seva owonjezera kumalola kukweza kopingasa.

    4. Kugwirizana kwa msakatuli
    Masewero amtambo ndi abwino kwambiri pomwe amafunikira zochepa kuchokera kwa ogwiritsa ntchito. Izi zikutanthauza kuti ndizotheka kuthamanga mu msakatuli. Osakatula amathandizira kuti masewerawa azikhala omasuka momwe angathere kwa ogwiritsa ntchito, kuwapulumutsa pakuyika mapulogalamu ndi zida. Osakatula amathandizanso kupereka magwiridwe antchito amitundu yosiyanasiyana pakati pamitundu yam'manja ndi pakompyuta. Mwamwayi, WebRTC imathandizidwa bwino pamasakatuli osiyanasiyana.

    5. Kusiyanitsa bwino kwa mawonekedwe amasewera ndi ntchito
    Ndikuwona ntchito yamasewera amtambo ngati nsanja. Aliyense azitha kulumikiza chilichonse papulatifomu. Tsopano ndaphatikiza LibRetro ndi ntchito yamasewera amtambo chifukwa LibRetro imapereka mawonekedwe owoneka bwino amasewera a retro monga SNES, GBA, PS.

    6. Zipinda zamasewera ambiri, kusewera kwa anthu ambiri komanso kulumikizana kwakunja (ulalo wakuya) ndi masewerawo
    CloudRetro imathandizira masewera ambiri atsopano monga CrowdPlay ndi Online MultiPlayer pamasewera a retro. Ngati ogwiritsa ntchito angapo atsegula ulalo wozama womwewo pamakompyuta osiyanasiyana, amawona masewera omwewo ndipo atha kulowa nawo.

    Komanso, masewera amasewera amasungidwa mumtambo wosungira. Izi zimathandiza owerenga kupitiriza kusewera nthawi iliyonse pa chipangizo china chilichonse.

    7. Kuyang'ana makulitsidwe
    Monga SAAS iliyonse masiku ano, masewera amtambo amayenera kupangidwa kuti azikhala osasunthika. Mapangidwe a coordinator-worker amakulolani kuti muwonjezere antchito ambiri kuti mutumikire magalimoto ambiri.

    8. Palibe kulumikizana ndi mtambo umodzi
    Zomangamanga za CloudRetro zimakhala ndi opereka mitambo osiyanasiyana (Digital Ocean, Alibaba, wopereka makonda) m'magawo osiyanasiyana. Ndimathandizira kuthamanga mu chidebe cha Docker pazachitukuko ndikusintha makonda a netiweki pogwiritsa ntchito bash script kuti ndipewe kutsekedwa mumtambo umodzi wopereka. Pophatikiza izi ndi NAT Traversal mu WebRTC, titha kukhala ndi mwayi wotumizira CloudRetro pamtambo uliwonse ngakhale pamakina a ogwiritsa ntchito.

    Zomangamanga

    Wantchito: (kapena seva yotsatsira yomwe tatchula pamwambapa) imachulukitsa masewerawa, imayendetsa mapaipi a encoding, ndikutulutsa zofalitsa zosungidwa kwa ogwiritsa ntchito. Zochitika za ogwira ntchito zimagawidwa padziko lonse lapansi, ndipo wogwira ntchito aliyense amatha kuchita magawo angapo ogwiritsa ntchito nthawi imodzi.

    Wothandizira: ali ndi udindo wogwirizanitsa wogwiritsa ntchito watsopano ndi wogwira ntchito woyenera kwambiri kuti asamukire. Wogwirizanitsa amalumikizana ndi ogwira ntchito kudzera pa WebSocket.

    Malo osungira masewera: chosungira chapakati chapakati chamayiko onse amasewera. Kusungirakoku kumapereka ntchito zofunika monga kusunga / katundu wakutali.

    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Zomangamanga zapamwamba kwambiri za CloudRetro

    Custom Script

    Wogwiritsa ntchito watsopano akatsegula CloudRetro mu masitepe 1 ndi 2 omwe akuwonetsedwa pachithunzichi pansipa, wogwirizanitsa pamodzi ndi mndandanda wa antchito omwe alipo akufunsidwa patsamba loyamba. Pambuyo pa izi, mu gawo 3 kasitomala amawerengera kuchedwa kwa onse ofuna kugwiritsa ntchito pempho la HTTP ping. Mndandanda wa zochedwetsazi umatumizidwanso kwa wogwirizanitsa ntchito kuti adziwe wogwira ntchito woyenera kwambiri woti agwiritse ntchito. Gawo 4 pansipa limapanga masewerawo. Kulumikizana kwa WebRTC kumakhazikitsidwa pakati pa wogwiritsa ntchito ndi wogwira ntchitoyo.
    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Zolemba za ogwiritsa ntchito mutapeza mwayi

    Zomwe zili mkati mwa wogwira ntchito

    Mapaipi amasewera ndi kukhamukira amasungidwa mkati mwa wogwira ntchito payekhapayekha ndikusinthanitsa zidziwitso kumeneko kudzera pa mawonekedwe. Panopa, kulankhulana uku kumachitika ndi kusamutsa deta mu kukumbukira kudzera Njira za Golang munjira yomweyo. Cholinga chotsatira ndikulekanitsa, i.e. kukhazikitsidwa kodziyimira pawokha kwamasewera mwanjira ina.

    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Kuyanjana kwa zigawo za antchito

    Zigawo zazikulu:

    • WebRTC: gawo lamakasitomala lomwe limavomereza zolowetsa ndi zotulutsa zojambulidwa kuchokera pa seva.
    • Game emulator: gawo lamasewera. Chifukwa cha laibulale ya Libretro, makinawa amatha kuyendetsa masewerawa mkati mwa njira yomweyo ndikulowetsa mkati mwa media ndi mtsinje wolowetsa.
    • Mafelemu amkati mwamasewera amajambulidwa ndikutumizidwa ku encoder.
    • Chojambulira chithunzi/mawu: mapaipi ojambulira omwe amatenga mafelemu atolankhani, kuwayika chakumbuyo, ndikutulutsa zithunzi/mawu ojambulidwa.

    РСализация

    CloudRetro imadalira WebRTC ngati ukadaulo wake wamsana, kotero ndisanadutse mwatsatanetsatane za kukhazikitsa kwa Golang, ndinaganiza zolankhula za WebRTC yokha. Uwu ndiukadaulo wodabwitsa womwe wandithandiza kwambiri kuti ndikwaniritse latency yachiwiri yakusamutsa deta.

    WebRTC

    WebRTC idapangidwa kuti izipereka maulumikizidwe apamwamba kwambiri a anzanu ndi anzawo pamapulogalamu am'manja ndi msakatuli wawo pogwiritsa ntchito ma API osavuta.

    Mtengo wa NAT

    WebRTC imadziwika chifukwa cha magwiridwe ake a NAT Traversal. WebRTC idapangidwa kuti izilumikizana ndi anzawo. Cholinga chake ndikupeza njira yoyenera yolunjika, kupewa zipata za NAT ndi zozimitsa moto zolumikizirana ndi anzawo kudzera munjira yotchedwa. ayezi. Monga gawo la ndondomekoyi, ma WebRTC API amapeza adilesi yanu ya IP pogwiritsa ntchito ma seva a STUN ndikutumiza ku seva yotumizira (Tembenuzani) pamene kugwirizana kwachindunji sikungakhazikitsidwe.

    Komabe, CloudRetro sagwiritsa ntchito bwino izi. Kulumikizana kwake kwa anzawo kulibe pakati pa ogwiritsa ntchito, koma pakati pa ogwiritsa ntchito ndi ma seva amtambo. Mbali ya seva yachitsanzo ili ndi zoletsa zochepa zolumikizirana mwachindunji kuposa chipangizo chogwiritsa ntchito. Izi zimakulolani kuti mutsegule madoko omwe akubwera kapena kugwiritsa ntchito ma adilesi a IP mwachindunji, popeza seva ili kumbuyo kwa NAT.

    M'mbuyomu, ndimafuna kusintha pulojekitiyi kukhala nsanja yogawa masewera a Cloud Gaming. Lingaliro linali lolola opanga masewera kuti apereke masewera ndi zothandizira zotsatsira. Ndipo ogwiritsa ntchito amatha kulumikizana ndi omwe amapereka mwachindunji. Mwanjira iyi, CloudRetro ndi chimango cholumikizira zinthu za gulu lachitatu kwa ogwiritsa ntchito, zomwe zimapangitsa kuti zikhale zovuta kwambiri ngati sizikuchitidwanso. Udindo wa WebRTC NAT Traversal pano ndi wofunikira kwambiri kuti uthandizire kuyambitsa kulumikizana kwa anzanu ndi anzawo pazothandizira zotsatsira za gulu lachitatu, kupangitsa kuti zikhale zosavuta kwa wopanga kulumikizana ndi netiweki.

    Video compression

    Makanema amakanema ndi gawo lofunikira kwambiri la mapaipi ndipo amathandizira kwambiri kuti aziyenda bwino. Ngakhale sikofunikira kudziwa zonse za VP8/H264 kanema kabisidwe, kumvetsetsa mfundozo kungakuthandizeni kumvetsetsa njira zosinthira mavidiyo akukhamukira, sinthani machitidwe osayembekezeka, ndikusintha kuchedwa.

    Kupondereza kanema pa ntchito yotsatsira ndizovuta chifukwa algorithm iyenera kuwonetsetsa kuti nthawi yonse ya encoding + network transmission nthawi + decoding time ndiyotsika momwe mungathere. Kuonjezera apo, ndondomeko ya coding iyenera kukhala yosasinthasintha komanso yosalekeza. Ma encoding tradeoffs ena sagwira ntchito - mwachitsanzo, sitingakonde nthawi yayitali yosunga ma encoding kuposa kukula kwa mafayilo ang'onoang'ono ndi nthawi yosinthira, kapena kugwiritsa ntchito kukanikiza kosagwirizana.

    Lingaliro la kuphatikizika kwa kanema ndikuchotsa zidziwitso zosafunikira ndikusunga kulondola kovomerezeka kwa ogwiritsa ntchito. Kuphatikiza pa encoding mafelemu azithunzi osasunthika, ma aligorivimu amatengera mawonekedwe apano kuchokera am'mbuyomu ndi otsatira, kotero kusiyana kwawo kokha kumatumizidwa. Monga tikuwonera pachitsanzo ndi Pacman, mfundo zosiyanitsa zokha zimafalitsidwa.

    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Kuyerekeza mafelemu amakanema pogwiritsa ntchito Pacman mwachitsanzo

    Kupsinjika kwamawu

    Momwemonso, audio compression algorithm imasiya zomwe anthu sangathe kuzizindikira. Opus ndiyomwe ikuchita bwino kwambiri pakali pano. Amapangidwa kuti azitumiza mafunde omvera pa protocol yolamulidwa ya datagram monga RTP (Real Time Transport Protocol). Latency yake ndiyotsika kuposa mp3 ndi aac, ndipo mtundu wake ndi wapamwamba. The latency nthawi zambiri imakhala yozungulira 5 ~ 66,5ms.

    Pion, WebRTC ku Golang

    Chiwombankhanga ndi ntchito yotseguka yomwe imabweretsa WebRTC ku Golang. M'malo mokutira mwanthawi zonse malaibulale amtundu wa C++ WebRTC, Pion ndi mbadwa ya Golang kukhazikitsa WebRTC yokhala ndi magwiridwe antchito abwino, kuphatikiza Go, ndi kuwongolera kwamitundu pama protocol a WebRTC.

    Laibulaleyi imathandizanso kukhamukira ndi zinthu zambiri zomangidwa ndi sub-second latency. Ili ndi kukhazikitsa kwake kwa STUN, DTLS, SCTP, etc. ndi zoyeserera zina ndi QUIC ndi WebAssembly. Laibulale yotseguka iyi yokha ndi chida chabwino kwambiri chophunzirira chokhala ndi zolemba zabwino kwambiri, kukhazikitsa ma protocol a network, ndi zitsanzo zabwino.

    Gulu la Pion, motsogozedwa ndi wopanga wokonda kwambiri, ndi lachangu, ndi zokambirana zambiri za WebRTC zomwe zikuchitika. Ngati mukufuna ukadaulo uwu, lowani http://pion.ly/slack - muphunzira zinthu zambiri zatsopano.

    Kulemba CloudRetro ku Golang

    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Kukhazikitsa kwa wogwira ntchito mu Go

    Pitani ku Channels mu Action

    Chifukwa cha kapangidwe kokongola ka tchanelo cha Go, zovuta zakutsatsira zochitika ndi concurrency ndizosavuta. Monga momwe zilili pachithunzichi, ma GoRoutines osiyanasiyana ali ndi zigawo zingapo zomwe zikuyenda mofanana. Chigawo chilichonse chimayang'anira dziko lake ndikulumikizana kudzera mumayendedwe. Kusankha kwa Golang kumakakamiza chochitika chimodzi cha atomiki kuti chisinthidwe nthawi iliyonse pamasewera (tick yamasewera). Izi zikutanthauza kuti palibe kutseka kofunikira pamapangidwe awa. Mwachitsanzo, wogwiritsa ntchito akasunga, chithunzi chonse cha masewerawa chimafunika. Dongosololi liyenera kupitilirabe, kulowa mkati mpaka kusungitsa kumalizidwa. Pa masewera aliwonse amasewera, backend imatha kugwira ntchito yosungira kapena yolowetsa, kupangitsa kuti ulusiwo ukhale wotetezeka.

    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

    Template ya Golang iyi imakwanira bwino momwe ndimagwiritsira ntchito CrowdPlay ndi Multiple Player. Potsatira ndondomekoyi, zolowetsa zonse za ogwiritsa ntchito m'chipinda chimodzi zimamangidwa panjira yapakati. Masewera amasewera amatumizidwa kwa onse ogwiritsa ntchito m'chipinda chimodzi. Mwanjira iyi, timakwaniritsa kugawa kwamasewera pakati pa magawo angapo amasewera a ogwiritsa ntchito osiyanasiyana.

    Masewera amtambo otsegula pa WebRTC: p2p, oswerera angapo, zero latency
    Kulumikizana pakati pa magawo osiyanasiyana

    Zoyipa za Golang

    Golang si wangwiro. Chanelo ndikuchedwa. Poyerekeza ndi kutsekereza, Go tchanelo ndi njira yosavuta yothanirana ndi zochitika zomwe zimachitika nthawi imodzi komanso zamtundu, koma tchanelo sichimapereka magwiridwe antchito abwino kwambiri. Pansi pa tchanelo pali malingaliro ovuta kutsekereza. Chifukwa chake ndidasintha zina pakukhazikitsa, ndikuyikanso maloko ndi ma atomiki ndikusintha matchanelo kuti mukwaniritse bwino ntchito.

    Kuphatikiza apo, wotolera zinyalala ku Golang samayendetsedwa, zomwe nthawi zina zimapangitsa kuyimitsidwa kwanthawi yayitali mokayikira. Izi zimasokoneza kwambiri pulogalamu yotsatsira nthawi yeniyeni.

    COG

    Pulojekitiyi imagwiritsa ntchito laibulale yomwe ilipo ya Golang VP8/H264 yotsegulira ma media ndi Libretro yama emulators amasewera. Ma library onsewa amangolemba chabe laibulale ya C mu Go pogwiritsa ntchito COG. Zina mwazovuta zandandalikidwa izi ndi Dave Cheney. Mavuto omwe ndidakumana nawo:

    • kulephera kugwira ngozi mu CGO, ngakhale ndi Golang RecoveryCrash;
    • kulephera kuzindikira zolepheretsa magwiridwe antchito pomwe sitingathe kuzindikira zovuta zatsatanetsatane mu CGO.

    Pomaliza

    Ndinakwaniritsa cholinga changa chomvetsetsa ntchito zamasewera amtambo ndikupanga nsanja yomwe imandithandiza kusewera masewera a nostalgic retro ndi anzanga pa intaneti. Ntchitoyi sichikanatheka popanda laibulale ya Pion ndi kuthandizidwa ndi gulu la Pion. Ndine woyamikira kwambiri chifukwa cha kukula kwake kwakukulu. Ma API osavuta operekedwa ndi WebRTC ndi Pion adatsimikizira kuphatikiza kosagwirizana. Umboni wanga woyamba wa lingaliro unatulutsidwa sabata lomwelo, ngakhale ndinalibe chidziwitso cha kulumikizana kwa anzawo (P2P).

    Ngakhale kuphatikizikako ndikosavuta, kusuntha kwa P2P ndi gawo lovuta kwambiri mu sayansi yamakompyuta. Ayenera kuthana ndi zovuta za zomangamanga zakale zapaintaneti monga IP ndi NAT kuti apange gawo la anzawo. Ndikugwira ntchito imeneyi, ndinapeza chidziwitso chamtengo wapatali chokhudza maukonde ndi kukhathamiritsa ntchito, kotero ndikulimbikitsa aliyense kuyesa kupanga P2P mankhwala pogwiritsa ntchito WebRTC.

    CloudRetro imathandizira zochitika zonse zomwe ndimayembekezera kuchokera pamalingaliro anga monga wosewera wa retro. Komabe, ndikuganiza kuti pali madera ambiri mu polojekiti yomwe ndingathe kusintha, monga kupanga maukonde odalirika komanso ochita bwino, kupereka zithunzi zamasewera apamwamba, kapena kugawana masewera pakati pa ogwiritsa ntchito. Ndikugwira ntchito molimbika pa izi. Chonde tsatirani polojekiti ndikuthandizira ngati mukufuna.

Source: www.habr.com

Kuwonjezera ndemanga