Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency

Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
Polokalama e pei o se tautua, atina'e e pei o se auaunaga, fa'avae e pei o se tautua, feso'ota'iga fa'asalalauga e pei o se tautua, ata vitio o se auaunaga, ae fa'afefea taaloga ao o se auaunaga? Ua leva ona i ai le tele o taumafaiga e fai ai taaloga ao (Cloud Gaming), e pei o Stadia, talu ai nei na faʻalauiloaina e Google. Stadia e le fou ile WebRTC, ae mafai e isi ona faʻaogaina le WebRTC i le auala lava e tasi?

Na filifili Thanh Nguyen e faʻataʻitaʻi lenei avanoa i luga o lana poloketi tatala CloudRetro. CloudRetro e faʻavae ile Pion, lauiloa WebRTC faletusi faʻavae ile Go (faʻafetai Faaalia mai le Pion development team mo la latou fesoasoani i le sauniaina o lenei tusiga). I lenei tusiga, o loʻo tuʻuina mai e Thanh se aotelega o le fausaga o lana poloketi, ma talanoa foi e uiga i mea aoga na ia aʻoaʻoina ma o a luʻitau na ia feagai i le taimi o lana galuega.

ulufalega

I le tausaga talu ai, ina ua faʻasalalau e Google Stadia, na faʻafefe ai loʻu mafaufau. O le manatu e matua tulaga ese ma fou lea na ou mafaufau ai pea pe faʻapefea ona mafai lenei mea i tekinolosi o loʻo i ai nei. O le manaʻo ia malamalama atili i lenei autu na faʻaosofia ai aʻu e fatuina laʻu lava faʻaaliga o se taʻaloga o le ao tatala. O le taunuuga sa matua manaia lava. Lalo ou te fia faʻasoa atu le faagasologa o le galue i loʻu tausaga galuega faatino.

TLDR: fa'ata'ita'iga pupuu fa'atasi ma fa'ailoga

Aisea ua avea ai taaloga ao i le lumanai

Ou te talitonu o Cloud Gaming o le a le pine ae avea ma augatupulaga e sosoo ai e le gata i taaloga, ae o isi foi vaega o le saienisi komepiuta. O ta'aloga ao o le pito sili lea o le fa'ata'ita'iga a le kalani/server. O lenei faʻataʻitaʻiga e faʻateleina ai le puleaina o tua ma faʻaitiʻitia galuega pito i luma e ala i le faʻafeiloaʻiina o manatu taʻaloga i luga o se server mamao ma faʻasalalau ata / leo i le tagata o tausia. E faia e le 'au'aunaga le fa'agaioiga mamafa ina ia le toe i ai le tagata o tausia i le alofa tunoa o fa'agata meafaigaluega.

Google Stadia e fa'atagaina oe e ta'alo Taaloga AAA (e pei o taʻaloga poloka poloka maualuga) i luga o se atinaʻe e pei o YouTube. Ole auala lava e tasi e mafai ona faʻaoga i isi faʻaoga tuusaʻo mamafa e pei ole faiga faʻaogaina poʻo le 2D/3D graphic design, ma isi. ina ia mafai ona tatou faʻagasolo pea i luga o masini faʻapitoa i luga o le tele o faʻavae.

Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
Le lumanaʻi o lenei tekinolosi: Vaʻai faalemafaufau pe a Microsoft Windows 10 tamoe i luga o le Chrome browser?

O ta'aloga ao e faigata fa'apitoa

O ta'aloga o se tasi lea o vaega e seasea maua e mana'omia ai le tali vave a tagata fa'aoga. Afai o nisi taimi matou te fetaiaʻi ai ma le 2 sekone le tuai pe a kiliki i luga o se itulau, e talia lenei mea. O ata vitio ola e masani ona tuai i ni nai sekone, ae o loʻo ofoina mai pea se faʻaoga talafeagai. Ae peita'i, afai e masani ona tuai le ta'aloga i le 500ms, e le mafai ona ta'alo. O la matou sini o le ausia lea o le taofiofia maualalo ina ia laʻititi le va i le va o mea faʻaoga ma faʻasalalauga. O le mea lea, o le auala masani i le faʻasalalau vitio e le faʻaaogaina iinei.

Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
Fa'ata'ita'iga Ta'aloga Ao Ao

Poloketi tatala fa'apogai CloudRetro

Na ou filifili e fai se faʻataʻitaʻiga faʻataʻitaʻiga o se taʻaloga ao e vaʻai pe mafai uma nei mea ma faʻatapulaʻaina fesoʻotaʻiga. Na ou filifilia Golang mo le faʻamaoniga o manatu ona o le gagana na sili ona ou masani ai ma sa fetaui lelei mo lenei faʻatinoga mo le tele o isi mafuaaga, e pei ona ou mauaina mulimuli ane. O le alu e faigofie ma vave ona atiina ae; O ala ile Go e lelei tele mo le puleaina o le tele o filo.

Проект CloudRetro.io ose fa'apogai matala auaunaga ao ta'aloga mo ta'aloga tuai. O le sini o le poloketi o le aumaia lea o le poto masani taʻaloga sili ona lelei i taʻaloga tuai masani ma faʻaopoopo le multiplayer.
E mafai ona e aoao atili e uiga i le poloketi iinei: https://github.com/giongto35/cloud-game.

CloudRetro galuega tauave

CloudRetro fa'aaoga ta'aloga toe fa'aalia le malosi o ta'aloga ao. Lea e mafai ai ona e maua le tele o aafiaga tulaga ese taaloga.

  • feaveai o le taaloga
    • Toe ta'alo vave pe a tatalaina se itulau; leai se download po'o fa'apipi'i mana'omia
    • E galue i se su'esu'ega feavea'i, o lea e leai se polokalama e mana'omia e fa'atino ai

  • O ta'aloga e mafai ona fa'asoa i le tele o masini ma teu i le ao mo le isi taimi e te ulufale ai
  • O le taaloga e mafai ona tafe, pe mafai foi ona taʻalo e le tele o tagata faʻaoga i le taimi e tasi:
    • Crowdplay pei o TwitchPlayPokemon, naʻo le tele o faʻasalalauga ma sili atu taimi moni
    • Taaloga i luga ole laiga i luga ole laiga. E tele tagata fa'aoga e mafai ona ta'alo e aunoa ma le fa'atulagaina o se feso'otaiga. Samurai Shodown e mafai nei ona taʻalo e 2 tagata taʻalo i luga o le CloudRetro network

    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Fa'aaliga fa'aaliga o ta'aloga multiplayer i luga o le initaneti i masini eseese

    Aseta

    Manaoga ma tekinolosi faaputuga

    O lo'o i lalo se lisi o mana'oga na ou fa'atulaga a'o le'i amataina le galuega.

    1. Tasi le tagata taalo
    O lenei manaʻoga atonu e foliga mai e le taua tele pe manino iinei, ae o se tasi lea o aʻu mea taua, e faʻatagaina ai taaloga ao e nofo mamao ese mai auaunaga faʻaleaganuʻu masani pe a mafai. Afai tatou te taulaʻi atu i se taʻaloga taʻitoʻatasi, e mafai ona tatou faʻaumatia se server tutotonu poʻo CDN aua tatou te le tau tafe i le tele. Nai lo le fa'auluina o vaitafe i se fa'aumau fa'agogo po'o le tu'uina atu o pepa i se 'au'aunaga WebSocket fa'atotonugalemu, e tu'u sa'o atu alavai o auaunaga i le tagata fa'aoga e ala i se feso'ota'iga WebRTC a le tupulaga.

    2. Maualalo le latency ala o faasalalauga
    Faitau e uiga i Stadia, e masani ona ou vaʻai i le WebRTC o loʻo taʻua i nisi o tala. Na ou iloa o WebRTC o se tekinolosi mataʻina ma e lelei atoatoa mo le faʻaogaina i taaloga ao. WebRTC o se poloketi e tuʻuina atu ai suʻesuʻega i luga ole laiga ma telefoni feaveaʻi faʻatasi ai ma fesoʻotaʻiga taimi moni e ala i se API faigofie. E maua ai le feso'ota'iga a tupulaga i tupulaga, e fa'asilisiliina mo ala fa'asalalau, ma e iai fa'amaumauga masani e fausia i totonu e pei ole VP8 ma le H264.

    Sa ou fa'amuamua le fa'amautinoaina o le poto masani fa'aoga sili ona lelei nai lo le fa'atumauina o ata maualuga. O nisi gau e talia i le algorithm. Google Stadia o loʻo i ai se laasaga faʻaopoopo e faʻaititia ai le tele o ata i luga o le 'auʻaunaga, ma faʻapipiʻi faʻavaa i se tulaga maualuga aʻo leʻi tuʻuina atu i tupulaga.

    3. Fa'asoa fa'asoa fa'atasi ma auala fa'afanua
    E tusa lava po o le a le lelei o le algorithm compression ma le code, o le fesoʻotaʻiga o loʻo avea pea ma mea e filifili ai e sili ona sao i le latency. O le fausaga e tatau ona iai se masini e fa'alua ai le 'au'aunaga e latalata i le tagata fa'aoga e fa'aitiitia ai le ta'amilosaga (RTT). O le fausaga e tatau ona i ai le 1 faamaopoopo ma le tele o faʻasalalauga faʻasalalau tufatufaina i le lalolagi atoa: US West, US East, Europe, Singapore, China. E tatau ona tu'u'ese'ese uma 'au'aunaga fa'asalalau. E mafai e le faiga ona fetu'una'i lona tufatufaga pe a 'auai se 'au'aunaga pe tu'ua le feso'otaiga. O le mea lea, faʻatasi ai ma le tele o fefaʻatauaiga, faʻaopoopoina faʻapipiʻi faʻapipiʻi e mafai ai ona faʻataʻatia faʻataʻatia.

    4. Feso'ota'iga su'esu'e
    O taaloga ao e sili ona lelei pe a manaʻomia le itiiti ifo mai tagata faʻaoga. O lona uiga e mafai ona tamoʻe i totonu o se suʻega. E fesoasoani tagata su'esu'e e fa'amalieina le poto masani i taaloga e mafai ai mo tagata fa'aoga, fa'asaoina i latou mai le fa'apipi'iina o polokalame ma meafaigaluega. E fesoasoani fo'i su'esu'e e tu'uina atu galuega fa'alava i le va o fa'aliliuga feavea'i ma le desktop. O le mea e laki ai, WebRTC o lo'o lagolagoina lelei i le tele o su'esu'ega.

    5. Vaeluaga manino o le taʻaloga taʻaloga ma auaunaga
    Ou te vaʻai i le 'auʻaunaga taʻaloga ao o se faʻavae. E tatau i tagata uma ona mafai ona faʻafesoʻotaʻi soʻo se mea i luga ole tulaga. O lea ua ou tuufaatasia LibRetro fa'atasi ai ma 'au'aunaga ta'aloga ao aua o lo'o ofoina atu e LibRetro se ta'aloga ta'aloga emulator mata'ina mo ta'aloga tuai e pei o SNES, GBA, PS.

    6. Potu mo multiplayer, ta'aloga a tagata ma feso'ota'iga i fafo (so'otaga loloto) ma le ta'aloga
    E lagolagoina e CloudRetro le tele o taʻaloga fou e pei o CrowdPlay ma Online MultiPlayer mo taʻaloga tuai. Afai e tele tagata fa'aoga latou te tatalaina le sootaga loloto lava e tasi i luga o komepiuta eseese, o le a latou vaʻai i le taʻaloga tutusa ma o le a mafai foi ona auai.

    E le gata i lea, o setete taʻaloga e teuina i le teuina o ao. O lenei mea e mafai ai e tagata faʻaoga ona faʻaauau pea ona taʻalo i soʻo se taimi i luga o soʻo se isi masini.

    7. Fa'asa'o fa'asaga
    E pei o soʻo se SAAS i aso nei, o taʻaloga ao e tatau ona faʻatulagaina ina ia mafai ona faʻafefe. O le coordinator-worker design e fa'atagaina oe e fa'aopoopo nisi tagata faigaluega e tautua atili ai feoaiga.

    8. Leai se sootaga i le ao e tasi
    CloudRetro's infrastructure o loʻo faʻafeiloaʻi i luga ole ao eseese (Digital Ocean, Alibaba, custom provider) mo itulagi eseese. Ou te faʻatagaina le taʻavale i totonu o se pusa Docker mo atinaʻe ma faʻapipiʻi faʻasalalauga fesoʻotaʻiga e faʻaaoga ai se tusitusiga bash e aloese ai mai le lokaina i totonu o se tasi e tuʻuina atu ao. E ala i le tuʻufaʻatasia o lenei mea ma le NAT Traversal i WebRTC, e mafai ona tatou maua le fetuutuunai e faʻapipiʻi CloudRetro i luga o soʻo se ao faʻavae ma e oʻo lava i luga o soʻo se masini a tagata faʻaoga.

    Fuafuaga faufale

    Tagata faigaluega: (po o le streaming server o loʻo taʻua i luga) faʻateleina taʻaloga, faʻatautaia le paipa faʻapipiʻi, ma tafe le faʻasalalauga faʻasalalau i tagata faʻaoga. O fa'ata'ita'iga a tagata faigaluega o lo'o tufatufa atu i le lalolagi atoa, ma e mafai e tagata faigaluega ta'ito'atasi ona fa'atautaia le tele o fa'aoga i le taimi e tasi.

    Fa'atonu: e nafa ma le fa'aogaina o le tagata fou ma le tagata faigaluega e sili ona talafeagai mo le fa'afefe. E fegalegaleai le faamaopoopo ma tagata faigaluega e ala i le WebSocket.

    Taaloga tulaga teuina: teuina mamao tutotonu mo setete taaloga uma. O lenei teuina e maua ai galuega taua e pei ole faʻasao mamao / uta.

    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Tulaga maualuga fausaga o CloudRetro

    Tusi Fa'asinomaga

    Pe a tatalaina e se tagata fou CloudRetro i laasaga 1 ma 2 o loʻo faʻaalia i le ata o loʻo i lalo, o le faʻamaopoopo faʻatasi ma le lisi o tagata faigaluega avanoa e talosagaina i le itulau muamua. A maeʻa lenei, i le Laasaga 3 e faʻatatau e le kalani le tuai mo sui uma e faʻaaoga se talosaga HTTP ping. O le lisi lea o fa'atuai e toe fa'afo'i atu i le fa'amaopoopo ina ia mafai ai ona ia fa'ailoa le tagata faigaluega e sili ona talafeagai e tautua ai le tagata fa'aoga. Laasaga 4 i lalo e fatuina ai le taaloga. E fa'atūina se feso'ota'iga feso'ota'iga WebRTC i le va o le tagata fa'aoga ma le tagata faigaluega tofia.
    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Fa'amatalaga a le tagata fa'aoga ina ua maua le avanoa

    O le a le mea o loʻo i totonu o le tagata faigaluega

    O ta'aloga ma paipa fa'afefe o lo'o teuina i totonu o le tagata faigaluega fa'atasi ma fa'afesuia'i fa'amatalaga iina e ala i le atina'e. I le taimi nei, o lenei fesoʻotaʻiga o loʻo faʻatinoina e ala i le fesiitaiga o faʻamatalaga i le manatua e ala i Ala o Golang i le faiga lava e tasi. O le isi sini o le vavaeeseina, i.e. tatala tutoatasi o le taaloga i se isi faiga.

    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Fegalegaleaiga o vaega faigaluega

    Vaega Autu:

    • WebRTC: se vaega o tagata fa'atau e talia fa'aoga a tagata fa'aoga ma fa'aulufalega fa'asalalau fa'asalalau mai le server.
    • Taaloga emulator: vaega ta'aloga. Faʻafetai i le faletusi Libretro, e mafai e le polokalama ona faʻatautaia le taʻaloga i totonu o le faiga lava e tasi ma faʻalavelave i totonu o le aufaasālalau ma le faʻaogaina o le vaitafe.
    • O fa'avaa i totonu o ta'aloga e pu'eina ma lafo i le encoder.
    • Encoder Ata/Leo: o se paipa fa'aigoa e ave ai fa'asalalauga fa'avaa, fa'ailoga i tua, ma fa'asolo ai ata/leo.

    Реализация

    CloudRetro faʻalagolago ile WebRTC e avea ma ana tekonolosi i tua, o lea aʻo leʻi suʻesuʻeina auiliiliga o le faʻatinoga o Golang, na ou filifili e talanoa e uiga i le WebRTC lava ia. O se tekinolosi ofoofogia lea na fesoasoani tele ia te au i le ausiaina o le laititi lona lua mo le tafeina o faʻamatalaga.

    WebRTC

    WebRTC ua mamanuina e tuʻuina atu fesoʻotaʻiga sili ona lelei a tupulaga i luga o polokalama feaveaʻi ma tagata suʻesuʻe e faʻaaoga ai API faigofie.

    NAT Traversal

    WebRTC ua lauiloa mo ana galuega NAT Traversal. WebRTC ua mamanuina mo fesoʻotaʻiga a tupulaga-i-peer. O lona sini o le sailia lea o le auala tuusaʻo sili ona talafeagai, aloese mai le NAT gateways ma firewalls mo fesoʻotaʻiga a tupulaga-i-peer e ala i se faiga e taʻua. ICE. I le avea ai o se vaega o lenei faagasologa, o le WebRTC API e suʻe lau tuatusi IP lautele e faʻaaoga ai STUN servers ma tuʻuina atu i le server relay (LILIU) pe a le mafai ona faʻamautuina se fesoʻotaʻiga tuusaʻo.

    Ae ui i lea, e le faʻaaogaina atoatoa e CloudRetro lenei uiga. E le o iai ona feso'ota'iga a tupulaga i le va o tagata fa'aoga, ae i le va o tagata fa'aoga ma 'au'aunaga ao. O le itu o le server o le faʻataʻitaʻiga e itiiti ni faʻagata fesoʻotaʻiga tuusaʻo nai lo se masini faʻaoga masani. Ole mea lea e mafai ai ona e muai tatalaina ports ulufale mai pe faʻaoga saʻo tuatusi IP lautele, talu ai e le o tua le server ile NAT.

    I le taimi muamua, na ou manaʻo e liliu le poloketi i se faʻasalalauga faʻasalalauga mo Cloud Gaming. O le manatu o le faʻatagaina lea o tagata e faia taaloga e tuʻuina atu taʻaloga ma faʻafefe punaoa. Ma e fa'afeso'ota'i sa'o tagata fa'aoga ma 'au'aunaga. I lenei faiga faʻapitoa, CloudRetro ua naʻo se faʻavae mo le faʻafesoʻotaʻi o punaoa faʻasalalau lona tolu i tagata faʻaoga, faʻateleina le faʻaogaina pe a le toe talimalo. O le matafaioi a le WebRTC NAT Traversal iinei e taua tele e faʻafaigofie ai le amataina o fesoʻotaʻiga a tupulaga i luga o punaoa faʻasalalau lona tolu, faʻafaigofie ai le faʻatupuina ona faʻafesoʻotaʻi i le fesoʻotaʻiga.

    Vitio compression

    O le faʻamalosiina o ata o se vaega taua o le paipa ma fesoasoani tele i le sologa lelei. E ui e le mana'omia le iloa o fa'amatalaga uma o le VP8/H264 video encoding, o le malamalama i manatu e mafai ona fesoasoani ia te oe e te malamalama ai i le fa'afefeteina o filifiliga saosaoa o vitio, fa'aleaga amioga e le'i fa'amoemoeina, ma fetu'una'i le taofiofia.

    O le fa'apipi'iina o le vitio mo se auaunaga fa'aola e faigata ona o le algorithm e tatau ona fa'amautinoa o le aofa'i o le fa'asologa o le taimi + taimi feso'ota'iga feso'otaiga + taimi fa'avasega e la'ititi e mafai. E le gata i lea, o le faagasologa o le coding e tatau ona tumau ma faʻaauau. E le fa'aogaina nisi o fefa'ataua'iga e fa'aigoa—mo se fa'ata'ita'iga, e le mafai ona tatou fa'amana'o i taimi uumi e fa'aigoa ai nai lo la'ititi la'ititi o faila ma taimi e fa'aliliu ai, pe fa'aaoga le fa'amalosi fa'aletonu.

    O le manatu i tua o le fa'apipi'i vitiō o le fa'aumatiaina lea o fa'amatalaga e le mana'omia a'o fa'atumauina se tulaga sa'o lelei mo tagata fa'aoga. I le faʻaopoopoga i le faʻaogaina o ata faʻataʻitaʻi taʻitasi, o le algorithm e faʻaalia ai le faʻavaa o loʻo i ai nei mai le muamua ma le isi, o lea na o le latou eseesega e lafoina. E pei ona mafai ona vaʻaia mai le faʻataʻitaʻiga ma Pacman, e naʻo vaega eseese e faʻasalalau.

    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Fa'atusatusaga o ata vitio fa'aaoga Pacman e fai ma fa'ata'ita'iga

    Oomi leo

    E faʻapea foʻi, o le algorithm compression audio e aveese faʻamaumauga e le mafai ona iloa e tagata. Opus o le codec leo sili ona lelei le faatinoga. Ua mamanuina e fa'asalalauina se galu fa'alogo i luga o se fa'atonuga fa'amaumauga fa'amaumauga e pei ole RTP (Real Time Transport Protocol). O lona latency e maualalo ifo nai lo le mp3 ma le aac, ma o le maualuga e maualuga atu. Ole latency e masani ile 5~66,5ms.

    Pion, WebRTC i Golang

    Pawn ose galuega fa'apogai tatala lea e aumaia WebRTC i Golang. Nai lo le afifiina masani o faletusi C ++ WebRTC, Pion o se faʻatinoga faʻapitoa a Golang o WebRTC ma sili atu le faʻatinoga, Go tuʻufaʻatasia, ma le faʻatonutonuina o faʻasalalauga i luga o faʻasalalauga WebRTC.

    O le faletusi e mafai ai foi ona tafe mai le tele o mea faʻapipiʻi lelei ma le laititi lona lua. E iai lana lava faʻatinoga o STUN, DTLS, SCTP, ma isi. ma nisi faʻataʻitaʻiga ma QUIC ma WebAssembly. O lenei faletusi puna'oa tatala lava ia ose punaoa a'oa'oga lelei tele ma fa'amaumauga sili ona lelei, fa'atinoga o feso'ota'iga feso'otaiga, ma fa'ata'ita'iga lelei.

    O le afioaga o Pion, o lo'o ta'ita'ia e se tagata e sili ona naunau i le foafoa, e fai si olaola, ma le tele o talanoaga lelei o lo'o faia e uiga i le WebRTC. Afai e te fiafia i lenei tekinolosi, auai http://pion.ly/slack – o le a e aoaoina le tele o mea fou.

    Tusia CloudRetro i Golang

    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Fa'atinoina o se tagata faigaluega i Go

    Alu Ala i Galuega

    Faʻafetai i le mamanu matagofie o le alalaupapa a Go, o faʻafitauli o faʻalavelave faʻafefe ma faʻatasi e matua faʻafaigofie. E pei o le ata, GoRoutine eseese e tele vaega o lo'o fa'agasolo tutusa. O vaega ta'itasi e pulea lona tulaga ma feso'ota'i e ala i ala. O le fa'amatalaga filifilia a Golang e fa'amalosia ai se mea fa'atomu e tasi e fa'agasolo i taimi uma i le ta'aloga (ta'aloga tick). O lona uiga e leai se loka e manaʻomia mo lenei mamanu. Mo se faʻataʻitaʻiga, pe a faʻasaoina e se tagata faʻaoga, e manaʻomia se ata atoa o le taʻaloga taʻaloga. O lenei setete e tatau ona faʻaauau pea, faʻaoga i totonu seia maeʻa le faʻapolopolo. I taimi ta'aloga ta'aloga ta'aloga, e na'o le pito i tua e mafai ona fa'aogaina se fa'apolopolo po'o se fa'aoga fa'aoga, e fa'amalu ai le filo fa'agasolo.

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

    Fa'a-i totonu/Fa'a-fa'i fafo

    O lenei Golang faʻataʻitaʻiga e fetaui lelei ma laʻu CrowdPlay ma Multiple Player faʻaoga mataupu faʻaoga atoatoa. I le mulimuli ai i lenei mamanu, o mea uma e fa'aoga i totonu o le potu e tasi e fausia i totonu o le alalaupapa ulufale tutotonu. Ona fa'apipi'i atu lea o fa'asalalauga ta'aloga i tagata uma e fa'aoga i totonu o le potu e tasi. I lenei auala, matou te ausia le vaevaega o le taʻaloga taʻaloga i le va o ni taʻaloga taʻaloga a tagata faʻaoga eseese.

    Tatala ta'aloga ao i luga ole WebRTC: p2p, multiplayer, zero latency
    Fa'atasi i le va o vasega eseese

    Le lelei o Golang

    Golang e le atoatoa. E telegese le alavai. Pe a faatusatusa i le poloka, Go channel o se auala sili ona faigofie e taulimaina ai mea faʻatasi ma filo, ae o le auala e le maua ai le faʻatinoga sili. O lo'o iai le fa'alavelave fa'alavelave fa'alavelave i lalo ole ala. O lea na ou faia ai ni fetuunaiga i le faʻatinoga, toe faʻaogaina loka ma faʻatauga atomic pe a sui auala e faʻaleleia ai le faʻatinoga.

    E le gata i lea, o le aoina o lapisi i Golang e le o pulea, lea e mafua ai i nisi taimi masalosaloga umi taofi. O lenei mea e fa'alavelave tele i le taimi moni fa'aosoina talosaga.

    COG

    O lo'o fa'aogaina e le poloketi le faletusi o lo'o iai Golang VP8/H264 mo fa'asalalauga fa'asalalau ma le Libretro mo ta'aloga emulators. O nei faletusi uma ua na o ni afifi o le faletusi C i le Go faʻaaoga COG. O nisi o mea le lelei o loʻo lisiina i totonu lenei pou na saunia e Dave Cheney. Faʻafitauli na ou feagai:

    • le mafai ona maua se faʻalavelave ile CGO, e oʻo lava ile Golang RecoveryCrash;
    • le mafai ona fa'ailoaina fa'alavelave fa'atino pe a le mafai ona matou iloa fa'afitauli auiliili ile CGO.

    iʻuga

    Na ou ausia laʻu sini o le malamalama i auaunaga tau taaloga ao ma fatuina se tulaga e fesoasoani ia te aʻu e taʻalo ai i taʻaloga toe faʻalogo ma aʻu uo i luga ole laiga. Semanu e le mafai ona maua lenei poloketi pe ana le seanoa le faletusi a Pion ma le lagolago a le afioaga o Pion. Ou te matua faafetai lava mo lona atinaega malosi. O API faigofie na tuʻuina mai e WebRTC ma Pion na faʻamautinoaina le faʻaogaina lelei. O laʻu faʻamaoniga muamua o manatu na faʻaalia i lena lava vaiaso, e ui lava e leai soʻu malamalama muamua i fesoʻotaʻiga a le tupulaga i le tupulaga (P2P).

    E ui lava i le faigofie o le tuʻufaʻatasia, o le P2P streaming e moni lava o se vaega faigata tele i le saienisi komepiuta. E tatau ona ia feagai ma le lavelave o fausaga fesoʻotaʻiga ua leva ona tuʻuina e pei ole IP ma le NAT e faʻavae ai se vasega a le tupulaga. A'o ou galue i lenei poloketi, sa ou mauaina le tele o le malamalama taua e uiga i le upega tafailagi ma le faʻaleleia atili o faʻatinoga, o lea ou te faʻamalosia tagata uma e taumafai e fausia oloa P2P e faʻaaoga ai le WebRTC.

    CloudRetro e faʻaogaina uma faʻaoga mataupu na ou faʻamoemoeina mai laʻu vaʻaiga o se tagata taʻalo tuai. Ae ui i lea, ou te manatu e tele vaega i totonu o le poloketi e mafai ona ou faʻaleleia, e pei o le faʻaogaina o fesoʻotaʻiga sili atu ona faʻatuatuaina ma faʻatinoina, tuʻuina atu o ata taʻaloga maualuga, poʻo le mafai ona faʻasoa taʻaloga i le va o tagata faʻaoga. O lo'o ou galue malosi i lenei mea. Faamolemole mulimuli galuega faatino ma lagolagoina pe a e fiafia i ai.

puna: www.habr.com

Faaopoopo i ai se faamatalaga