Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency

Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
Software als Service, Infrastruktur als Service, Plattform als Service, Kommunikatiounsplattform als Service, Videokonferenzen als Service, wéi ass et mat Cloud Gaming als Service? Et goufe scho verschidde Versuche fir Cloud Gaming (Cloud Gaming) ze kreéieren, sou wéi Stadia, viru kuerzem vu Google gestart. Stadia net nei zu WebRTC, mee kënnen anerer WebRTC an déi selwecht Manéier benotzen?

Thanh Nguyen huet decidéiert dës Geleeënheet op sengem Open Source Projet CloudRetro ze testen. CloudRetro baséiert op Pion, populär WebRTC Bibliothéik baséiert op Go (Merci gewisen vum Pion Entwécklungsteam fir hir Hëllef bei der Virbereedung vun dësem Artikel). An dësem Artikel liwwert den Thanh en Iwwerbléck iwwer d'Architektur vu sengem Projet, a schwätzt och iwwer wat fir nëtzlech Saachen hie geléiert huet a wéi eng Erausfuerderunge hien während senger Aarbecht begéint huet.

Element

D'lescht Joer, wéi Google Stadia ugekënnegt huet, huet et mäi Kapp geblosen. D'Iddi ass sou eenzegaarteg an innovativ datt ech stänneg gefrot hunn wéi dëst iwwerhaapt méiglech war mat existéierender Technologie. De Wonsch dëst Thema besser ze verstoen huet mech gefrot meng eege Versioun vun engem Open-Source Cloud-Spill ze kreéieren. D'Resultat war einfach fantastesch. Hei drënner wëll ech de Prozess deelen fir un mengem Joer ze schaffen Projet.

TLDR: kuerz Rutsch Versioun mat Highlights

Firwat Cloud Gaming d'Zukunft ass

Ech gleewen datt Cloud Gaming geschwënn déi nächst Generatioun vun net nëmmen Spillerinne gëtt, awer och aner Beräicher vun der Informatik. Cloud Gaming ass den Héichpunkt vum Client / Server Modell. Dëse Modell maximéiert d'Backend-Gestioun a miniméiert d'Frontendaarbecht andeems d'Spilllogik op engem Remote Server Hosting a Biller / Audio op de Client streamt. De Server mécht déi schwéier Veraarbechtung sou datt de Client net méi an der Barmhäerzegkeet vun Hardwarebeschränkungen ass.

Google Stadia léisst Iech wesentlech spillen AAA Spiller (dh High-End Blockbuster Spiller) op engem Interface wéi YouTube. Déi selwecht Methodik kann op aner schwéier offline Uwendungen applizéiert ginn wéi Betribssystem oder 2D / 3D Grafikdesign, etc. sou datt mir se konsequent op Low-Spec Apparater iwwer verschidde Plattformen lafen kënnen.

Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
D'Zukunft vun dëser Technologie: Stellt Iech vir wann Microsoft Windows 10 am Chrome Browser leeft?

Cloud Gaming ass technesch Erausfuerderung

Gaming ass ee vun deene rare Beräicher wou konstant, séier Benotzerreaktioun erfuerderlech ass. Wa mir heiansdo eng Verspéidung vun 2 Sekonnen begéinen wann Dir op eng Säit klickt, ass dat akzeptabel. Live Video Streams tendéieren e puer Sekonnen ze laachen, awer bidden ëmmer nach eng raisonnabel Benotzerfrëndlechkeet. Wéi och ëmmer, wann d'Spill dacks mat 500ms hält, ass et einfach onspillbar. Eist Zil ass et extrem niddreg Latenz z'erreechen, sou datt den Ënnerscheed tëscht Input a Medien sou kleng wéi méiglech ass. Dofir ass déi traditionell Approche fir Videostreaming net hei uwendbar.

Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
Allgemeng Cloud Spill Schabloun

Open Source Projet CloudRetro

Ech hu beschloss eng Testprobe vun engem Cloud-Spill ze kreéieren fir ze kucken ob dat alles méiglech ass mat sou enke Restriktiounen. Ech hunn de Golang fir de Beweis vum Konzept gewielt, well et déi Sprooch war, déi ech am meeschte vertraut hunn an aus villen anere Grënn gutt fir dës Ëmsetzung gëeegent war, wéi ech spéider entdeckt hunn. Go ass einfach an entwéckelt sech ganz séier; Channels in Go si super fir Multithreading ze managen.

De Projet CloudRetro.io ass en Open Source Cloud Gaming Service fir Retro Gaming. D'Zil vum Projet ass déi bequemst Spillerfarung op traditionell Retro Spiller ze bréngen an Multiplayer ze addéieren.
Dir kënnt méi iwwer de Projet gewuer ginn hei: https://github.com/giongto35/cloud-game.

CloudRetro Funktionalitéit

CloudRetro benotzt Retro Spiller fir d'Kraaft vum Cloud Gaming ze demonstréieren. Wat erlaabt Iech vill eenzegaarteg Spillerinne Erfahrungen ze kréien.

  • Portabilitéit vum Spill
    • Direkt Playback wann Dir eng Säit opmaacht; nee download oder Installatioun néideg
    • Schafft an engem mobilen Browser, sou datt keng Software gebraucht gëtt fir se auszeféieren

  • Spillsessiounen kënnen iwwer verschidde Geräter gedeelt ginn an an der Wollek gespäichert ginn fir d'nächst Kéier wann Dir Iech aloggen
  • D'Spill kann gestreamt ginn, oder et ka vu verschiddene Benotzer gläichzäiteg gespillt ginn:
    • Crowdplay wéi TwitchPlayPokemon, nëmme méi Cross-Plattform a méi Echtzäit
    • Offline Spiller online. Vill Benotzer kënne spillen ouni en Netzwierk opzestellen. Samurai Shodown kann elo vun 2 Spiller iwwer dem CloudRetro Netzwierk gespillt ginn

    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Demo Versioun vum Online Multiplayer Spill op verschidden Apparater

    Infrastruktur

    Ufuerderunge an Technologie Stack

    Drënner ass eng Lëscht vun Ufuerderungen déi ech gesat hunn ier ech de Projet starten.

    1. Ee Spiller
    Dës Fuerderung schéngt hei vläicht net ze wichteg oder offensichtlech ze sinn, awer et ass ee vu menge Schlësselen, et erlaabt Cloud Gaming sou wäit wéi méiglech vun traditionelle Streaming Servicer ewech ze bleiwen. Wa mir eis op e Single-Player Spill konzentréieren, kënne mir vun engem zentraliséierte Server oder CDN lassgoen, well mir net op d'Masse mussen streamen. Amplaz Streamen op e Sinkserver eropzelueden oder Päckchen op e zentraliséierte WebSocket Server ze passéieren, ginn Service Streams direkt un de Benotzer iwwer eng Peer-to-Peer WebRTC Verbindung geliwwert.

    2. Niddereg latency Medien Baach
    Iwwer Stadia liesen, gesinn ech dacks WebRTC an e puer Artikelen ernimmt. Ech hu gemierkt datt WebRTC eng aussergewéinlech Technologie ass a perfekt ass fir am Cloud Gaming ze benotzen. WebRTC ass e Projet deen Webbrowser a mobil Uwendungen mat Echtzäitkommunikatioun duerch eng einfach API ubitt. Et bitt Peer-to-Peer Konnektivitéit, ass fir Medien optimiséiert, an huet Standard Codecs agebaut wéi VP8 an H264.

    Ech prioritär déi bescht méiglech Benotzererfarung ze garantéieren iwwer d'Erhalen vun héichqualitativen Grafiken. E puer Verloschter sinn am Algorithmus akzeptabel. Google Stadia huet en zousätzleche Schrëtt fir d'Bildgréisst um Server ze reduzéieren, an d'Frame ginn op eng méi héich Qualitéit upskaléiert ier se u Kollegen iwwerdroen ginn.

    3. Verdeelt Infrastruktur mat geographesche Routing
    Egal wéi optiméiert de Kompressiounsalgorithmus a Code sinn, ass d'Netz ëmmer nach den entscheedende Faktor deen am meeschte zur Latenz bäidréit. D'Architektur muss e Mechanismus hunn fir de Server am nootste vum Benotzer ze koppelen fir d'Rundreeszäit (RTT) ze reduzéieren. D'Architektur muss 1 Koordinator a verschidde Streaming Serveren iwwer d'Welt verdeelt hunn: US West, US Ost, Europa, Singapur, China. All Streaming Server musse komplett isoléiert sinn. De System kann seng Verdeelung upassen wann e Server bäitrieden oder aus dem Netz verléisst. Also, mat grousse Traffic, zousätzlech Serveren bäizefügen erlaabt eng horizontale Skala.

    4. Browser Onbedenklechkeet
    Cloud Gaming ass am Beschten wann et am mannsten vun de Benotzer erfuerdert. Dëst bedeit datt et méiglech ass an engem Browser ze lafen. Browser hëllefen d'Spillerfahrung sou bequem wéi méiglech fir d'Benotzer ze maachen, spuert se vun der Installatioun vu Software an Hardware. Browser hëllefen och Cross-Plattform Funktionalitéit tëscht mobilen an Desktop Versiounen ze bidden. Glécklecherweis gëtt WebRTC gutt iwwer verschidde Browser ënnerstëtzt.

    5. Kloer Trennung vum Spill Interface an Service
    Ech gesinn de Cloud Gaming Service als Plattform. Jidderee soll fäeg sinn eppes mat der Plattform ze verbannen. Elo hunn ech integréiert LibRetro mat Cloud Spillerinne Service well LibRetro bitt eng schéin Spill Emulator Interface fir Retro Spiller wéi SNES, GBA, PS.

    6. Raim fir Multiplayer, Publikumsspill an extern Verknëppung (Deep-Link) mam Spill
    CloudRetro ënnerstëtzt vill nei Spillspiller wéi CrowdPlay an Online MultiPlayer fir Retro Spiller. Wann e puer Benotzer dee selwechten Deep-Link op verschiddene Computeren opmaachen, da gesinn se datselwecht lafend Spill a kënne souguer bäitrieden.

    Desweideren, Spill Staaten sinn an Wollek Stockage gespäichert. Dëst erlaabt de Benotzer zu all Moment op all aner Apparat weider ze spillen.

    7. Horizontal Skala
    Wéi all SAAS hautdesdaags, muss Cloud Gaming entworf ginn fir horizontal skalierbar ze sinn. De Koordinator-Aarbechter Design erlaabt Iech méi Aarbechter ze addéieren fir méi Traffic ze déngen.

    8. Keng Verbindung zu enger Wollek
    D'CloudRetro Infrastruktur gëtt op verschiddene Cloud Provider gehost (Digital Ocean, Alibaba, Custom Provider) fir verschidde Regiounen. Ech aktivéieren an engem Docker Container fir d'Infrastruktur lafen a konfiguréieren Netzwierk Astellunge mat engem Bash Skript fir ze vermeiden an engem eenzege Cloud Provider gespaart ze ginn. Andeems Dir dëst mat NAT Traversal am WebRTC kombinéiert, kënne mir d'Flexibilitéit hunn fir CloudRetro op all Cloud Plattform z'installéieren an och op all Benotzer Maschinnen.

    Architektonescht Design

    Aarbechter: (oder de Streaming Server hei uewen erwähnt) multiplizéiert d'Spiller, leeft d'Kodéierungspipeline aus, a streamt déi kodéiert Medien un d'Benotzer. Aarbechter Instanzen sinn iwwer d'Welt verdeelt, an all Aarbechter kann e puer Benotzer Sessiounen gläichzäiteg verschaffen.

    Koordinator: ass verantwortlech fir den neie Benotzer mat dem passenden Aarbechter fir de Streaming ze koppelen. De Koordinator interagéiert mat Aarbechter iwwer WebSocket.

    Spill Staat Stockage: zentral Fernlagerung fir all Spillstaaten. Dës Späichere bitt wichteg Funktiounen wéi Fernspäicheren / Lueden.

    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Top-Niveau Architektur vun CloudRetro

    Benotzerdefinéiert Skript

    Wann en neie Benotzer CloudRetro an de Schrëtt 1 an 2 an der Figur hei ënnen opmaacht, gëtt de Koordinator zesumme mat der Lëscht vun verfügbaren Aarbechter op déi éischt Säit gefrot. Duerno berechent de Client am Schrëtt 3 d'Verspéidungen fir all Kandidaten mat enger HTTP Ping Ufro. Dës Lëscht vun de Verspéidungen gëtt dann un de Koordinator zréck geschéckt, fir datt hien de passenden Aarbechter bestëmmen kann fir de Benotzer ze déngen. Schrëtt 4 hei ënnen erstellt d'Spill. Eng WebRTC Streaming Verbindung gëtt tëscht dem Benotzer an dem zougewisenen Aarbechter etabléiert.
    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Benotzer Skript nodeems se Zougang kréien

    Wat am Aarbechter ass

    Spill a Streaming Pipelines ginn am Aarbechter isoléiert gespäichert an austauschen Informatioun do duerch den Interface. De Moment gëtt dës Kommunikatioun duerch d'Transfert vun Daten an der Erënnerung duerchgefouert Golang Channels am selwechte Prozess. Dat nächst Zil ass Segregatioun, d.h. onofhängeg Start vum Spill an engem anere Prozess.

    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Interaktioun vun Aarbechter Komponente

    Haaptkomponenten:

    • WebRTC: e Client Komponent deen d'Benotzerinput akzeptéiert an encodéiert Medien vum Server ausgitt.
    • Spillemulator: Spill Komponente. Dank der Libretro Bibliothéik ass de System fäeg d'Spill am selwechte Prozess auszeféieren an intern Medien an Input Stream z'ënnerscheeden.
    • In-Game Rummen ginn ageholl an an den Encoder geschéckt.
    • Bild/Audio Encoder: eng Kodéierungspipeline déi Medienframes hëlt, se am Hannergrond codéiert an encodéiert Biller / Audio erausginn.

    Ëmsetzung

    CloudRetro setzt op WebRTC als seng Backbone Technologie, also ier ech an d'Detailer vun der Golang Implementatioun tauchen, hunn ech beschloss iwwer WebRTC selwer ze schwätzen. Dëst ass erstaunlech Technologie déi mir immens gehollef huet fir eng Ënner-zweet latency fir Streaming Daten z'erreechen.

    WebRTC

    WebRTC ass entwéckelt fir qualitativ héichwäerteg Peer-to-Peer Verbindungen op gebierteg mobil Apps a Browser mat einfachen APIen ze bidden.

    NAT Traversal

    WebRTC ass bekannt fir seng NAT Traversal Funktionalitéit. WebRTC ass fir Peer-to-Peer Kommunikatioun entwéckelt. Säin Zil ass déi gëeegent Direktroute ze fannen, NAT Gateways a Firewalls fir Peer-to-Peer Kommunikatioun duerch e Prozess ze vermeiden ICE. Als Deel vun dësem Prozess fannen d'WebRTC APIen Är ëffentlech IP Adress mat STUN Serveren a schécken se op de Relaisserver (DREI) wann eng direkt Verbindung net etabléiert ka ginn.

    Wéi och ëmmer, CloudRetro exploitéiert dës Feature net voll. Seng Peer-to-Peer Verbindungen existéieren net tëscht Benotzer, mee tëscht Benotzer a Cloud Server. D'Server Säit vum Modell huet manner direkt Kommunikatioun Restriktiounen wéi eng typesch Benotzer Apparat. Dëst erlaabt Iech Entréeën Ports viraus opzemaachen oder ëffentlech IP Adressen direkt ze benotzen, well de Server net hannert NAT ass.

    Virdru wollt ech de Projet an eng Spillverdeelungsplattform fir Cloud Gaming ëmsetzen. D'Iddi war et fir d'Creatoren ze erlaben Spiller a Streaming Ressourcen ze bidden. An d'Benotzer géifen direkt mat Ubidder interagéieren. Op dëser dezentraliséierter Manéier ass CloudRetro just e Kader fir Drëtt Partei Streaming Ressourcen un d'Benotzer ze verbannen, wat et méi skalierbar mécht wann et net méi gehost gëtt. D'Roll vum WebRTC NAT Traversal hei ass ganz wichteg fir Peer-to-Peer Verbindungsinitialiséierung op Drëtt-Partei Streaming Ressourcen z'erliichteren, wat et méi einfach mécht fir den Ersteller mat dem Netz ze verbannen.

    Video Kompressioun

    Videokompressioun ass en onverzichtbare Bestanddeel vun der Pipeline a dréit vill zu engem glate Floss bäi. Och wann et net néideg ass all Detail vum VP8 / H264 Video Kodéierung ze wëssen, d'Konzepter ze verstoen kann Iech hëllefen Streaming Video Geschwindegkeet Optiounen ze verstoen, onerwaart Verhalen ze debuggen an d'Latenz unzepassen.

    D'Kompressioun vum Video fir e Streaming Service ass Erausfuerderung well den Algorithmus muss suergen datt d'total Kodéierungszäit + Netzwierkiwwerdroungszäit + Dekodéierungszäit sou niddereg wéi méiglech ass. Zousätzlech muss de Kodéierungsprozess konsequent a kontinuéierlech sinn. E puer Kodéierungsaustausch gëllen net - zum Beispill kënne mir laang Kodéierungszäiten net favoriséieren iwwer méi kleng Dateigréissten an Dekodéierungszäiten, oder inkonsistent Kompressioun benotzen.

    D'Iddi hannert Videokompressioun ass onnéideg Bits vun Informatioun ze eliminéieren wärend en akzeptablen Niveau vun der Genauegkeet fir d'Benotzer behalen. Zousätzlech zu der Kodéierung vun eenzelne statesche Bildframes, ofgeleet den Algorithmus den aktuelle Frame vun de virdrun an déi nächst, sou datt nëmmen hiren Ënnerscheed geschéckt gëtt. Wéi aus dem Beispill mam Pacman gesi ka ginn, ginn nëmmen Differentialpunkte iwwerdroen.

    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Verglach vu Videoframes mat Pacman als Beispill

    Audio Kompressioun

    Och den Audiokompressiounsalgorithmus verléisst Daten déi net vu Mënschen erkannt kënne ginn. Opus ass de Moment dee bescht performante Audio Codec. Et ass entworf fir eng Audiowelle iwwer en bestallt Datagram Protokoll wéi RTP (Real Time Transport Protocol) ze vermëttelen. Seng latency ass manner wéi mp3 an aac, an d'Qualitéit ass méi héich. D'Latenz ass normalerweis ongeféier 5 ~ 66,5ms.

    Pion, WebRTC zu Golang

    Pionéier ass en Open Source Projet deen WebRTC op Golang bréngt. Amplaz vun der gewéinlecher Wrapping vun gebiertege C++ WebRTC Bibliothéiken, ass Pion eng gebierteg Golang Implementatioun vu WebRTC mat besserer Leeschtung, Go Integratioun a Versiounskontroll op WebRTC Protokoller.

    D'Bibliothéik erméiglecht och Streaming mat vill super agebaute Ins mat Ënner-Sekonn Latenz. Et huet seng eege Ëmsetzung vun STUN, DTLS, SCTP, etc. an e puer Experimenter mat QUIC an WebAssembly. Dës Open Source Bibliothéik selwer ass eng wierklech gutt Léierressource mat exzellenter Dokumentatioun, Netzwierkprotokollimplementatiounen a cool Beispiller.

    D'Pion Gemeinschaft, gefouert vun engem ganz passionéierte Creator, ass zimmlech lieweg, mat vill Qualitéitsdiskussiounen iwwer WebRTC. Wann Dir un dëser Technologie interesséiert sidd, da maacht mat http://pion.ly/slack - Dir wäert vill nei Saachen léieren.

    Schreiwen CloudRetro zu Golang

    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Ëmsetzung vun engem Aarbechter zu Go

    Gitt Channels an Aktioun

    Dank dem Go's schéine Kanaldesign sinn d'Problemer vum Event Streaming a Concurrency immens vereinfacht. Wéi am Diagramm hu verschidde GoRoutines verschidde Komponenten déi parallel lafen. All Komponent geréiert säi Staat a kommunizéiert iwwer Kanäl. Dem Golang seng selektiv Behaaptung forcéiert een atomescht Event fir all Kéier am Spill (Spilltick) veraarbecht ze ginn. Dëst bedeit datt keng Sperrung fir dësen Design néideg ass. Zum Beispill, wann e Benotzer späichert, ass e komplette Snapshot vum Spillzoustand erfuerderlech. Dëse Staat soll kontinuéierlech bleiwen, aloggen bis d'Späichere fäerdeg ass. Wärend all Spilltick kann de Backend nëmmen eng Späicher- oder Inputoperatioun handhaben, wat de Prozess thread sécher mécht.

    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-an / Fan-eraus

    Dës Golang Schabloun passt perfekt op meng CrowdPlay a Multiple Player Benotzungsfall. No dësem Muster sinn all Benotzerinput an engem Raum an den zentrale Entréeskanal gebaut. Spillmedien ginn dann un all Benotzer am selwechte Raum ofgesat. Op dës Manéier erreechen mir d'Divisioun vum Spillstaat tëscht verschiddene Spillsessiounen vu verschiddene Benotzer.

    Open Source Cloud Gaming op WebRTC: p2p, Multiplayer, Null latency
    Synchroniséierung tëscht verschiddene Sessiounen

    Nodeeler vun Golang

    Golang ass net perfekt. De Kanal ass lues. Am Verglach mam Blockéieren ass de Go Kanal einfach e méi einfache Wee fir concurrent a threaded Eventer ze handhaben, awer de Kanal bitt net déi bescht Leeschtung. Et gëtt komplex Blockéierungslogik ënner dem Kanal. Also hunn ech e puer Upassunge fir d'Ëmsetzung gemaach, d'Schlässer an d'Atomwäerter nei applizéiert wann ech Kanäl ersetzen fir d'Performance ze optimiséieren.

    Ausserdeem ass de Müllsammler zu Golang net verwaltet, wat heiansdo verdächteg laang Pausen verursaacht. Dëst stéiert immens mat der Echtzäit Streaming Applikatioun.

    COG

    De Projet benotzt déi existent Open Source Golang VP8 / H264 Bibliothéik fir Medienkompressioun a Libretro fir Spillemulatoren. All dës Bibliothéike sinn einfach Wrapper vun der C Bibliothéik am Go benotzt COG. E puer vun den Nodeeler sinn opgezielt an dësem Post vum Dave Cheney. Probleemer déi ech begéint hunn:

    • Onméiglechkeet e Crash am CGO ze fänken, och mat Golang RecoveryCrash;
    • Echec Leeschtungsfähegkeet z'identifizéieren wa mir net kënnen detailléiert Problemer am CGO z'entdecken.

    Konklusioun

    Ech hunn mäi Zil erreecht fir Cloud Gaming Servicer ze verstoen an eng Plattform ze kreéieren déi mir hëlleft nostalgesch Retro Spiller mat menge Frënn online ze spillen. Dëse Projet wier net méiglech gewiescht ouni d'Pion-Bibliothéik an d'Ënnerstëtzung vun der Pion-Communautéit. Ech sinn extrem dankbar fir seng intensiv Entwécklung. Déi einfach APIe geliwwert vu WebRTC a Pion hunn eng nahtlos Integratioun gesuergt. Meng éischt Beweis vum Konzept gouf déi selwecht Woch verëffentlecht, och wann ech kee Virwëssen iwwer Peer-to-Peer (P2P) Kommunikatioun hat.

    Trotz der Einfachheet vun der Integratioun ass P2P Streaming wierklech e ganz komplexe Gebitt an der Informatik. Si muss mat der Komplexitéit vu laangjärege Netzwierkarchitekturen wéi IP an NAT këmmeren fir eng Peer-to-Peer Sessioun ze kreéieren. Wärend un dësem Projet geschafft hunn, hunn ech vill wäertvollt Wëssen iwwer Vernetzung a Performanceoptimiséierung gewonnen, also encouragéieren ech jiddereen fir P2P Produkter mat WebRTC ze bauen.

    CloudRetro entsprécht all d'Benotzungsfäll, déi ech aus menger Perspektiv als Retro-Gamer erwaart hunn. Wéi och ëmmer, ech mengen datt et vill Beräicher am Projet sinn déi ech verbesseren kann, wéi zum Beispill d'Netzwierk méi zouverlässeg a performant maachen, méi héichqualitativ Spillgrafik ubidden oder d'Fäegkeet Spiller tëscht Benotzer ze deelen. Ech schaffen schwéier un dëser. Follegt weg Projet an ënnerstëtzt et wann Dir et gär.

Source: will.com

Setzt e Commentaire