Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency

Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
Software ut servitium, infrastructura ut ministerium, suggestum ut ministerium, suggestum communicationis ut servitium, video conferendi ut servitium, quid nubes ludus quasi ministerium? Plures conati sunt iam aleam creandi nubem (Cloud Gaming), ut Stadia, nuper a Google emissa. Stadia non est novum WebRTCan alii eodem modo utuntur WebRTC?

Thanh Nguyen hanc opportunitatem probare voluit in aperto fonte proiciente CloudRetro. CloudRetro fundatur in Pion, popular! WebRTC bibliotheca fundatur Go (gratiae Ostensum e Pion evolutionis equos ad hoc articulum adiuvandum parabant). In hoc articulo, Thanh speculationem praebet architecturae propositi sui, et etiam loquitur de rebus utilibus quas didicit et quas impugnationes in opere suo invenit.

ostium

Proximo anno, cum Stadia Google nuntiaret, cecinit mentem meam. Idea tam singularis est ac porttitor ut constanter mirarer quomodo hoc modo etiam technologiae possibilis esset. Desiderium hoc argumento melius cognoscendi me impulit ut meam versionem apertae fontis nubes venatus crearem. Ex quo factum est simpliciter phantasticum. Infra volo communicare processus laborandi in anno meo project.

TLDR: brevis slide versionem cum elucidat

Cur nubes ludum futurum est

Credo Cloud Gaming mox posteros futurum non solum ludum, sed etiam alias regiones scientiae computatricis. Clouds ludum fastigium clientis/servatoris exemplar est. Hoc exemplar maximizes administrationem remittit et opus frontem regit per logicam ludum hosting in remotis cultoribus et imaginibus/audio clientis. Servus processus graves facit ut client non iam limitibus hardware in misericordia.

Google Stadia per se ludere permittit AAA ludos (i.e. high-finem blockbuster games) in an interface like YouTube. Eadem methodus applicari potest ad alias applicationes graves offline, ut ratio operandi vel 2D/3D graphice designandi, etc. ut per multiplices suggestus cogitationes humilium speculationum constanter currere possimus.

Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
Futura huius technologiae: Finge si Microsoft Windows 10 currebat in navigatro Chrome?

Nubes ludum technice provocantes

Ludus est unus ex illis locis raris in quibus responsio constans usor celeriter usorum requiritur. Si interdum moram secundam 2 in pagina strepitando invenimus, hoc gratum est. Vivere video rivi brevi tempore pigri tendunt, sed adhuc usabilitatem rationabilem praebent. Attamen si ludus saepe per 500ms desescit, suus tantum lusus est. Propositum est laten- ciam perquam humilem consequi ut distantia inter initus et media quam minima est quam maxime. Propterea accessus ad videndum effusis traditus hic non convenit.

Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
General Cloud Game Template

Aperto fonte project CloudRetro

Placuit temptare specimen lusus nubis creare ut videam si haec omnia cum restrictionibus tam strictis retis possibilia sunt. Golang elegi ad probationem conceptus, quia lingua mihi familiarissima erat et ad hanc exsecutionem multis aliis de causis aptior fuit, quod postea compertum est. Ite simplex est et celerrime enucleatur; Channels in Go sunt magna ad multithreading administrandi.

project CloudRetro.io fons apertus est nubes aleae operae ad retro ludum. Propositum consilii est experientiam ludorum retro commodissimam ad ludos retro translaticios adducere et pluribus lusoribus addere.
Plus discere potes hic de incepto: https://github.com/giongto35/cloud-game.

CloudRetro functionality

CloudRetro ludos retro utitur ad vim nubis ludum demonstrandum. Quae tibi permittit ut plures singulares lusus experiantur.

  • Portability de ludo
    • Instant playback, cum aperimus paginam; nulla download seu institutionem opus
    • Opera in navigatro mobili, nulla programmata ad eam currendam opus est

  • Sessiones ludi per multiplices cogitationes communicari possunt et in nube condita in proximum tempus aperis
  • Lusus influere potest, vel a pluribus utentibus simul ludere potest;
    • Crowdplay sicut TwitchPlayPokemon, solum plus crucis suggestum et magis realis tempus
    • Online ludos online. Multi utentes ludere possunt sine retis constituendo. Samurai Shodown nunc ludere per 2 histriones super CloudRetro network

    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    Demo version of online lusoribus feras diversas machinas

    infrastructure

    Requisita et ars ACERVUS

    Subter est index requisitorum quas proposui ante inchoationem rei.

    1. unus ludio ludius
    Haec postulatio fortasse non nimis magnae vel manifestae videtur hic, sed una clavium meorum takeaways, nubem ludumque manere sinit, quantum fieri potest a traditis profluentibus servitiis. Si unum lusorem in ludo intendunt, a centralised vel CDN servo carere possumus quia ad multitudinem fluentem non habemus. Instead of uploading streaming to a sink server or passed packets to a centralized WebSocket server, service rivs are delivered directe to user per parem-ad-parem WebRTC connexionem.

    2. Minimum latency media amnis
    Lectio de Stadia, saepe video WebRTC in quibusdam articulis memoratum. Intellexi WebRTC technologiam praestantem esse et ad usum in ludo nubeculae perfectum esse. WebRTC consilium est quod navigatores praebet et applicationes mobiles cum real-time communicationis per simplicem API. Connexionem parem praebet, optimized pro instrumentis, et habet normas codicillos constructas sicut VP8 et H264.

    Ego prioritizavi experientiam quam maxime possibilis user usus servans qualitatem graphics altam. Quaedam damna in algorithmo accepta sunt. Additum Google Stadia gradum minuendi magnitudinem imaginis in calculonis habet, et tabulae ad altiorem qualitatem ascenduntur antequam ad pares transmittantur.

    3. infrastructure cum orbis terrarum profectus Distribuit
    Quamvis pressio algorithmus et codice optimized sint, reticulum adhuc elementum decernendi quod maxime ad latencym confert. Architectura mechanismum habere debet ut servo proximiori utenti ad tempus rotundum redigendum (RTT). Architectura debet habere 1 coordinatas et complures profusos ministros per orbem distributos: US occidentales, US oriens, Europa, Singapore, Sinis. Omnes servientes effusiones penitus secerni debent. Systema distributionem eius accommodare potest cum minister reticulum iungit vel relinquit. Ita, cum magna negotiatione, additis servientibus additis scalam horizontalem permittit.

    4. Pasco convenientiam
    Ludus nubis est in suo optimo, cum minimum ab utentibus requirit. Id significat posse in pasco currere. Navigatores auxilium ludum experientiam faciunt quam commodiorem pro users, salvis illis a programmatibus et ferramentis insertis. Navigatores quoque adiuvant ut munus crucis suggestum inter mobiles et desktop versiones praebeant. Feliciter, WebRTC trans navigatores varios bene sustentatur.

    5. Serena separatio ludi instrumenti et muneris
    Nubem ludumque servitium pro suggestu considero. Quisque possit aliquid cum suggestu coniungere. Nunc integrated LibRetro cum nube gaming servitii, quod LibRetro offert pulchrum ludum aemulatorem interfaciem pro ludis retro ut SNES, GBA, PS.

    6. Cella lusoria, turba ludi et conjunctio externa (deep-link) cum ludo
    CloudRetro multos lusos ludos novos adiuvat ut CrowdPlay et MultiPlayer ad ludos retro. Si plures utentes eandem intimam coniunctionem in diversis computatris aperiant, eundem ludum currentem videbunt et etiam iungere poterunt.

    Praeterea, lusus civitates in nubilo repositae sunt. Hoc permittit utentes ludere in omni tempore quovis alio artificio pergere.

    7. Horizontalis scalae
    Sicut quaelibet SAAS hodie est, nubes aleae designari debet ut scandatur horizontaliter. Consilium coordinatoris cooperatoris permittit ut plures operarios addas ut negotiatio plus serviat.

    8. Nemo nexum ad unam nubem
    Infrastructura CloudRetro diversis provisoribus nubis (Digital Ocean, Alibaba, provisor consuetudo) diversis regionibus hostitur. Docker in vase infrastructure ac retis occasus retis configurare valeo utendo scripturae verecundae ne in unam provisorem nubem claudatur. Coniungendo hoc cum NAT Traversal in WebRTC, habere possumus flexibilitatem ad explicandam CloudRetro in aliqua suggestu nubem et etiam in machinis quibusvis usoris.

    Architecturae consilium

    Operarius: ludos multiplicat (seu servo profuso supra dicto) ludos multiplicat, fistulam descriptam decurrit, et instrumentis usoribus usoribus encoded fluit. Instantiae laborantis per totum mundum distributae sunt, et quilibet operarius plures simul usores sessiones tractare potest.

    Coordinator: responsabilis est ad novum usorem connubium cum aptissimo operario ad confluendum. Coordinator mutuatur cum operariis per WebSocket.

    Ludus status repono: media remota repono pro omnibus civitatibus ludum. Haec reposita magna munera praebet ut remota nisi/load.

    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    Architectura summo gradu CloudRetro

    Consuetudo Script

    Cum novus usor aperit CloudRetro in gradibus 1 et 2 in figura infra monstratur, coordinator una cum indice opificum praesto ad primam paginam rogatur. Post hoc, in gradu 3 clientis moras omnium candidatorum computat utens petitione HTTP ping. Hic index morarum coordinatoris tunc remittitur, ut operarium aptissimum determinare possit ad usorem inserviendum. Gradus IV infra ludum creat. A WebRTC nexus effusis inter utentem et adiutorem assignatum constituitur.
    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    User scriptor post adeptus accessum

    Quid intus laborantis

    Ludus et fistulae fluentes intra artificem reponuntur in solitudine et informationes permutationis per interfaciem ibi. Nunc haec communicatio exercetur per translationem notitiarum in memoria Golang canales in eodem processu. Proximum est segregationis, i.e. in alio processu independentium deducunt.

    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    Commercio operariorum components

    Partes principales:

    • WebRTC: clientis componentis quae user input et outputs endoded media a servo acceptat.
    • Ludus aemulator: ludum componens. Per Bibliothecam Libretro, systema ludum intra eundem processum currere potest et media media et initus amnis intercipere.
    • Tabulae in- feras capiuntur et ad encoder mittuntur.
    • Imago / Audio Encoder: pipelineam descriptam quae medias tabulas accipit, eas in curriculo encode, et outputs imagines / audio encoded.

    РСализация

    CloudRetro innititur WebRTC sicut technologiae spinarum, antequam tribuo in singula exsequendam Golang, de ipsa WebRTC loqui decrevi. Haec technologia mirabilis est, quae me multum adiuvit ad sub-secundum latency profluentes notitias assequendas.

    WebRTC

    WebRTC designatus est summus qualitas paris coniunctionum in applis mobilibus indigenis et navigatoribus utendo simplicibus APIs.

    NAT Traversal

    WebRTC notum est pro functione Traversal NAT. WebRTC communicatio designatur pari-ad-parem. Propositum eius est invenire aptissimum iter rectum, vitando portas NAT et focos ad communicationem parium per processum vocatum. REFRIGERO. Cum huius processus partem, WebRTC APIs tuam IP inscriptionem publicam tuam inveneris utentibus STUN servientibus et propone ad servo tabulario publico (CIRCUITUS) cum connexio directa stabiliri non potest.

    Nihilominus, CloudRetro haec factura plene non abutitur. Eius paris nexus non sunt inter utentes, sed inter utentes et nubeculas ministrantes. In latere exemplaris server pauciores communicationis directas restrictiones habet quam fabrica typica usoris. Hoc tibi permittit ut prae-apertis portubus advenientibus vel publicis IP inscriptionibus directe utaris, cum server post NAT.

    Antea volui vertere consilium in ludo distributionis suggestum pro Cloud Gaming. Idea erat ut creatores venationes praeberent ludos et facultates effusis. Provisoribus directe et users se penitus. Hoc modo decentralized, CloudRetro solum est compage connectendi tertiam partem effusis facultatibus utentibus utentibus, eamque magis scalabilem reddit cum iam non hosted est. Munus WebRTC NAT Traversal hic magni momenti est ad faciliorem parem connexionem initializationem in tertia factione effusis facultatibus, quo facilius creator coniungi reticulum facit.

    Video compressionem

    Compressio video necessariam partem pipelini et multum confert fluxus lenis. Dum non necesse est singula singula VP8/H264 videre modum descriptam cognoscere, conceptus intellectus adiuvare possunt te intellegere fluentem video velocitatem optionum, debug inopinatos mores, ac latentiam accommodes.

    Compressio video ad profusum munus provocare est quod algorithmus efficere debet ut totum tempus transmissionis retis + tempus transmissionis + decoding tempus quam maxime humilis sit. Praeterea coding processus constans et continuus esse debet. Quaedam negotiationes descriptae non valent - exempli gratia, non possumus gratiam diu descriptam temporibus in parvis magnitudinum fasciculorum et temporum decoctionis, vel compressione inconstanter utere.

    Opinatio post compressionem video esse necessarias notitiarum particulas tollere, dum acceptam accurationem pro usoribus retinet. Praeter descriptam singulas tabulas imaginum staticas, algorithmus currente artubus e prioribus et proximis infert, ut tantum earum differentia mittatur. Ut ex exemplo Pacman videri potest, puncta tantum differentialia traducuntur.

    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    Comparatio tabulae video usura Pacman in exemplum

    Audio compressionem

    Item, compressio audio algorithmus notitias omittit quae ab hominibus percipi non possunt. Opus nunc est optimum codicem faciendo. Ordinatur ad transmittere undam audio super datagram protocollum ordinatum ut RTP (Protocollum Transport Real Time). Latitudo eius minor est quam mp3 et aac, et qualitas superior est. Latentia plerumque circa 5~66,5ms est.

    Pion, WebRTC in Golang

    Pawn fons apertus est exertus quod WebRTC ad Golang affert. Pro solito involutione bibliothecarum indigenarum C++ WebRTC, Pion est indigena Golang exsecutio WebRTC meliori effectu, Ire integrationem et versionem potestatem in protocollis WebRTC.

    Bibliotheca etiam dat multum magnae aedificatae cum sub-secundo latency confluente. Habet suam exsecutionem STUN, DTLS, SCTP, etc. et quaedam experimenta cum QUIC et WebAssembly. Hic fons aperta bibliotheca ipsa est re vera bona eruditionis subsidia cum documentis optimis, retis protocollis exsecutionibus, et exemplis refrigerantibus.

    Communitas Pion, a flagranti creatore ducta, admodum viva est, cum multa de qualitatibus disputationibus circa WebRTC geritur. Si interesse in hac technica arte, coniunge http://pion.ly/slack β€” multa nova cognosces.

    Scribens CloudRetro in Golang

    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    Exsequendam artificem in Go

    Ite canales in Actione

    Gratias ad speciosum alveum Ire design, problemata eventus fluentis et concursus valde faciliores sunt. Ut in schemate, diversae GoRoutines multa elementa habent in parallela currentes. Quaelibet pars suum statum administrat et per canales communicat. Assertio selectiva Golangae unum casum atomicum cogit ut omni tempore in ludo (ludo ricinum) discursum sit. Hoc significat nullum densis opus est ad hoc consilium. Exempli causa, cum usor servat, plenus status ludi snapshots requiritur. Hic status continuus manere debet, colligatio in donec salvatio perficitur. In singulis ludum ricinum, posteriori solum potest tractare nisi vel input operationem, faciens processus sequelam.

    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

    Hoc Golang templates meum CrowdPlay et Multiplex Ludio ludius usu causa perfecte convenit. Secundum hanc formam, omnes inputationes in uno cubiculo in medio canali introitus aedificantur. Ludus instrumentorum tunc omnibus usoribus in eodem cubiculo explicatur. Hoc modo consequimur divisionem ludi status inter plures sessiones ludorum diversorum utentium.

    Apertum fontem nubes ludus in WebRTC: p2p, lusoribus, nulla latency
    Synchronisation inter diversas sessiones

    Incommoda Golang

    Golang perfectus est. Tarda est canalis. Comparatus ad interclusionem, Vade canalis facilior est via ad res concurrentes et stamineas tractandas, sed canalis optimus effectus non praebet. Est multiplex interclusio logicae sub canali. Itaque nonnullas compositiones ad exsequendum feci, seram et valores atomicos reponens, cum canales ad optimize effectus reponens.

    Praeterea, quisquiliarum collector in Golang insanabilis est, quae interdum suspiciose diu moratur. Hoc valde impedit cum applicatione reali-tempus profluente.

    COG

    Exertum apertum fontem Golang VP8/H264 exsistens utitur bibliotheca pro compressione instrumentorum et Libretro pro ludo emulatorum. Omnes hae bibliothecae simpliciter involucri bibliothecae C in Go utendo COG. Incommoda quaedam recensentur hoc post by Dave Cheney. Problemata offendit:

    • non posse capere fragorem in CGO, etiam cum Golang RecoveryCrash;
    • defectum ad cognoscendas bottlenecks perficiendas, cum singulas difficultates in CGO deprehendere non possumus.

    conclusio,

    Propositum meum consecuti sunt operas aleas intellegendi nubes et suggestum creando, quod me adiuvat ludos retro ludos ludere cum amicis meis online. Hoc consilium sine bibliotheca Pion et communitatis Pion possibilis fuisset. Pro intensive eius progressione maxime gratus sum. Simplex APIs providetur a WebRTC et Pion inconsutilem integrationem conservatam. Prima conceptus probatio prima eadem hebdomade dimissa est, etiamsi nullam praeviam cognitionem communicationis haberem pari-ad-parem (P2P).

    Quamvis facilitas integrationis, P2P effusis quidem area in computatrali scientia valde implicata est. De multiplicitate retiaculae diuturnae architecturae tractandae habet ut IP et NAT ad sessionem parem creandi parem. Dum in hoc incepto laboro, multam pretiosam scientiam de networking et perficiendi optimizatione consecutus sum, itaque omnes hortor ad conandum fabricas P2P productas utendo WebRTC.

    CloudRetro caters ad omnes casus usus expectavi ex prospectu meo tamquam ludi retro. Tamen multae regiones in hoc consilio exstare puto quod emendare me possum, ut retiaculum certius reddentem et praestantiorem, praebens altiorem qualitatem lusionis graphics, vel facultatem inter utentes ludos communicare. Hoc laboro. Quaeso sequi project et confirmo si placet.

Source: www.habr.com