Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency

Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
Software raws li kev pabcuam, kev tsim kho vaj tse raws li kev pabcuam, platform raws li kev pabcuam, kev sib txuas lus platform raws li kev pabcuam, kev sib tham video raws li kev pabcuam, dab tsi txog huab kev ua si li kev pabcuam? Muaj twb tau muaj ob peb sim los tsim huab gaming (Cloud Gaming), xws li Stadia, nyuam qhuav pib los ntawm Google. Stadia tsis tshiab rau WebRTC, tab sis lwm tus tuaj yeem siv WebRTC tib txoj kev?

Thanh Nguyen txiav txim siab los sim lub sijhawm no ntawm nws qhov qhib qhov project CloudRetro. CloudRetro yog raws li Pion, nrov WebRTC lub tsev qiv ntawv raws li Go (ua tsaug Qhia los ntawm pab pawg tsim kho Pion rau lawv cov kev pab hauv kev npaj cov kab lus no). Hauv tsab xov xwm no, Thanh muab cov ntsiab lus ntawm kev tsim qauv ntawm nws qhov project, thiab tseem tham txog yam tseem ceeb uas nws tau kawm thiab dab tsi uas nws ntsib thaum nws ua haujlwm.

nkag

Xyoo tas los, thaum Google tshaj tawm Stadia, nws ua rau kuv lub siab. Lub tswv yim yog qhov tshwj xeeb thiab tshiab uas kuv pheej xav tsis thoob li cas qhov no txawm ua tau nrog cov tshuab uas twb muaj lawm. Lub siab xav kom nkag siab zoo dua lub ntsiab lus no tau ua rau kuv tsim kuv tus kheej version ntawm kev ua si huab qhib. Qhov tshwm sim tsuas yog zoo heev. Hauv qab no kuv xav qhia cov txheej txheem ntawm kev ua haujlwm ntawm kuv lub xyoo qhov project.

TLDR: luv luv version nrog qhov tseem ceeb

Vim li cas huab gaming yog yav tom ntej

Kuv ntseeg tias Cloud Gaming yuav dhau los ua tiam tom ntej ntawm kev ua si tsis yog tsuas yog kev ua si xwb, tab sis kuj tseem muaj lwm thaj chaw ntawm computer science. Huab gaming yog qhov kawg ntawm tus neeg siv khoom / server qauv. Cov qauv no ua kom muaj kev tswj hwm backend thiab txo qis kev ua haujlwm ntawm frontend los ntawm hosting game logic ntawm cov chaw taws teeb server thiab streaming dluab / suab rau tus neeg siv khoom. Tus neeg rau zaub mov ua qhov hnyav ua haujlwm yog li tus neeg siv khoom tsis nyob ntawm txoj kev hlub tshua ntawm kev txwv kho vajtse.

Google Stadia tseem ceeb cia koj ua si AAA games (piv txwv li high-end blockbuster games) ntawm lub interface zoo li YouTube. Tib txoj kev siv tau rau lwm yam kev siv offline hnyav xws li kev ua haujlwm lossis 2D / 3D duab tsim, thiab lwm yam. yog li peb tuaj yeem khiav lawv tsis tu ncua ntawm cov khoom siv qis qis thoob plaws ntau lub platform.

Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
Lub neej yav tom ntej ntawm cov thev naus laus zis no: Xav txog yog tias Microsoft Windows 10 khiav ntawm Chrome browser?

Huab gaming yog technically nyuaj

Kev ua si yog ib qho ntawm cov cheeb tsam uas tsis tshua muaj qhov uas yuav tsum tau siv cov lus teb ceev ceev. Yog tias qee zaus peb ntsib 2 thib ob ncua thaum nyem rau ntawm nplooj ntawv, qhov no yog qhov ua tau. Live video kwj zoo li lag luam ob peb vib nas this, tab sis tseem muaj qhov tsim nyog siv tau. Txawm li cas los xij, yog tias qhov kev ua si nquag qeeb los ntawm 500ms, nws tsuas yog unplayable. Peb lub hom phiaj yog kom ua tiav qhov latency tsawg heev kom qhov sib txawv ntawm cov tswv yim thiab cov xov xwm me me li sai tau. Yog li ntawd, txoj hauv kev ib txwm siv rau kev ua yeeb yaj kiab streaming tsis siv tau ntawm no.

Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
General Huab Game Template

Qhib qhov project CloudRetro

Kuv txiav txim siab los tsim cov qauv kev sim ntawm huab kev ua si kom pom tias txhua qhov no ua tau nrog cov kev txwv nruj li no. Kuv xaiv Golang rau cov ntaub ntawv pov thawj ntawm lub tswv yim vim nws yog hom lus kuv tau paub tshaj plaws thiab tau txais txiaj ntsig zoo rau qhov kev siv no rau ntau yam laj thawj, raws li kuv tau tshawb pom tom qab. Mus yog qhov yooj yim thiab txhim kho sai heev; Channels nyob rau hauv Go yog qhov zoo rau kev tswj hwm multithreading.

Qhov project CloudRetro.io yog qhov qhib qhov kev pabcuam huab gaming rau retro gaming. Lub hom phiaj ntawm qhov project yog coj cov kev ua si zoo tshaj plaws rau kev ua si hauv retro thiab ntxiv ntau tus neeg ua si.
Koj tuaj yeem kawm paub ntau ntxiv txog qhov project ntawm no: https://github.com/giongto35/cloud-game.

CloudRetro ua haujlwm

CloudRetro siv cov kev ua si retro los ua kom pom lub zog ntawm huab gaming. Uas tso cai rau koj kom tau txais ntau yam kev ua si tshwj xeeb.

  • Portability ntawm qhov kev ua si
    • Kev ua si tam sim thaum qhib nplooj ntawv; tsis muaj download lossis installation xav tau
    • Ua haujlwm hauv mobile browser, yog li tsis muaj software xav tau los khiav nws

  • Cov kev sib tw ua si tuaj yeem sib koom hla ntau yam khoom siv thiab khaws cia hauv huab rau lwm zaus koj nkag mus
  • Qhov kev ua si tuaj yeem streamed, lossis nws tuaj yeem ua si los ntawm ntau tus neeg siv ib zaug:
    • Crowdplay zoo li TwitchPlayPokemon, tsuas yog ntau tus ntoo khaub lig-platform thiab ntau lub sijhawm tiag tiag
    • Offline ua si hauv online. Ntau tus neeg siv tuaj yeem ua si yam tsis tau teeb tsa lub network. Tam sim no Samurai Shodown tuaj yeem ua si los ntawm 2 tus neeg ua si dhau ntawm CloudRetro network

    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Demo version ntawm online multiplayer game ntawm cov khoom siv sib txawv

    Infrastructure

    Yuav tsum tau thiab technology pawg

    Hauv qab no yog cov npe ntawm cov cai uas kuv tau teev ua ntej pib qhov project.

    1. Ib tug neeg ua si
    Qhov kev xav tau no yuav tsis zoo li tseem ceeb lossis pom tseeb ntawm no, tab sis nws yog ib qho ntawm kuv qhov tseem ceeb coj mus, nws tso cai rau huab gaming kom nyob deb ntawm cov kev pabcuam streaming ib txwm ua tau. Yog tias peb tsom mus rau ib qho kev ua si ib leeg, peb tuaj yeem tshem tawm ntawm lub hauv paus server lossis CDN vim tias peb tsis tas yuav kwj rau cov neeg coob coob. Hloov chaw xa cov kwj mus rau lub dab dej server lossis xa cov pob ntawv mus rau qhov chaw nruab nrab ntawm WebSocket server, cov kwj dej tau xa ncaj qha rau tus neeg siv los ntawm kev sib txuas ntawm cov phooj ywg-rau-peer WebRTC.

    2. Tsawg latency media kwj
    Nyeem txog Stadia, Kuv feem ntau pom WebRTC hais hauv qee cov ntawv. Kuv pom tau tias WebRTC yog ib qho cuab yeej zoo tshaj plaws thiab zoo meej rau kev siv hauv huab gaming. WebRTC yog ib qhov project uas muab cov web browsers thiab cov ntawv thov mobile nrog kev sib txuas lus hauv lub sijhawm los ntawm API yooj yim. Nws muab kev sib txuas ntawm cov phooj ywg rau cov phooj ywg, yog qhov zoo tshaj plaws rau kev tshaj tawm, thiab muaj cov qauv codecs built-in xws li VP8 thiab H264.

    Kuv tau ua qhov tseem ceeb ua kom ntseeg tau qhov zoo tshaj plaws ntawm cov neeg siv kev paub dhau los tswj cov duab zoo. Qee qhov kev poob tau txais nyob rau hauv algorithm. Google Stadia muaj cov kauj ruam ntxiv ntawm kev txo cov duab loj ntawm cov neeg rau zaub mov, thiab cov thav ntawv tau nce mus rau qhov zoo dua ua ntej xa mus rau cov phooj ywg.

    3. Distributed infrastructure nrog geographic routing
    Txawm hais tias optimized compression algorithm thiab code yog li cas, lub network tseem yog qhov kev txiav txim siab uas ua rau feem ntau rau latency. Lub architecture yuav tsum muaj ib lub tswv yim los ua ke cov neeg rau zaub mov ze tshaj plaws rau cov neeg siv kom txo tau lub sij hawm ncig mus ncig (RTT). Lub architecture yuav tsum muaj 1 tus neeg saib xyuas thiab ntau lub streaming servers faib thoob plaws ntiaj teb: US West, US East, Europe, Singapore, Tuam Tshoj. Tag nrho cov streaming servers yuav tsum raug cais tag nrho. Lub kaw lus tuaj yeem kho nws qhov kev faib tawm thaum lub server koom lossis tawm hauv lub network. Yog li, nrog cov tsheb loj, ntxiv cov servers ntxiv tso cai rau kev ntsuas kab rov tav.

    4. Browser compatibility
    Huab kev ua si yog qhov zoo tshaj plaws thaum nws xav tau qhov tsawg tshaj plaws los ntawm cov neeg siv. Qhov no txhais tau tias nws tuaj yeem khiav hauv browser. Browsers pab ua kom qhov kev ua si zoo li yooj yim li sai tau rau cov neeg siv, txuag lawv los ntawm kev txhim kho software thiab kho vajtse. Browsers kuj tseem pab muab kev ua haujlwm hla lub platform ntawm mobile thiab desktop versions. Hmoov zoo, WebRTC tau txais txiaj ntsig zoo thoob plaws ntau qhov browsers.

    5. Kev sib cais meej ntawm qhov kev ua si interface thiab kev pabcuam
    Kuv saib cov kev pabcuam huab ua si ua lub platform. Txhua tus neeg yuav tsum tuaj yeem txuas txhua yam rau lub platform. Tam sim no kuv tau koom ua ke LibRetro nrog huab gaming kev pab cuam vim LibRetro muaj ib tug zoo nkauj game emulator interface rau retro ua si xws li SNES, GBA, PS.

    6. Chav rau ntau tus neeg ua si, pawg neeg ua si thiab kev sib txuas sab nraud (qhov sib sib zog nqus-txuas) nrog qhov kev ua si
    CloudRetro txhawb ntau qhov kev ua si tshiab xws li CrowdPlay thiab Online MultiPlayer rau kev ua si retro. Yog tias ob peb tus neeg siv qhib tib qhov sib sib zog nqus ntawm cov khoos phis tawj sib txawv, lawv yuav pom tib qhov kev ua si khiav thiab tseem tuaj yeem koom nrog.

    Ntxiv mus, cov xeev game tau khaws cia hauv huab cia. Qhov no tso cai rau cov neeg siv txuas ntxiv ua si txhua lub sijhawm ntawm lwm lub cuab yeej.

    7. Kab rov tav scaling
    Zoo li SAAS niaj hnub no, huab gaming yuav tsum tau tsim kom muaj kab rov tav scalable. Tus neeg saib xyuas-neeg ua haujlwm tsim qauv tso cai rau koj ntxiv cov neeg ua haujlwm kom ua haujlwm ntau dua.

    8. Tsis muaj kev sib txuas rau ib qho huab
    CloudRetro's infrastructure yog tuav ntawm cov chaw muab kev pabcuam huab sib txawv (Digital Ocean, Alibaba, kev pabcuam kev cai) rau ntau thaj tsam. Kuv qhib kev khiav hauv Docker thawv rau cov txheej txheem thiab teeb tsa kev teeb tsa network siv cov ntawv bash kom tsis txhob raug kaw rau hauv ib qho chaw muab huab. Los ntawm kev sib txuas qhov no nrog NAT Traversal hauv WebRTC, peb tuaj yeem muaj qhov yooj yim los xa CloudRetro ntawm txhua lub platform huab thiab txawm tias ntawm txhua tus neeg siv lub tshuab.

    Architectural tsim

    Tus neeg ua haujlwm: (los yog tus neeg rau zaub mov streaming tau hais los saum toj no) muab cov kev ua si sib tw, khiav lub raj xa dej encoding, thiab xa cov xov xwm encoded rau cov neeg siv. Cov neeg ua haujlwm raug faib thoob plaws ntiaj teb, thiab txhua tus neeg ua haujlwm tuaj yeem ua haujlwm ntau tus neeg siv sijhawm ib txhij.

    Coordinator: yog lub luag haujlwm rau kev sib txuas tus neeg siv tshiab nrog tus neeg ua haujlwm tsim nyog tshaj plaws rau kev tshaj tawm. Tus neeg saib xyuas cuam tshuam nrog cov neeg ua haujlwm ntawm WebSocket.

    Game xeev cia: central chaw taws teeb cia rau txhua lub xeev game. Qhov chaw cia no muab cov haujlwm tseem ceeb xws li chaw taws teeb txuag / thauj khoom.

    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Sab saum toj-theem architecture ntawm CloudRetro

    Custom Script

    Thaum tus neeg siv tshiab qhib CloudRetro hauv cov kauj ruam 1 thiab 2 qhia hauv daim duab hauv qab no, tus neeg saib xyuas nrog rau cov npe ntawm cov neeg ua haujlwm tau thov rau thawj nplooj ntawv. Tom qab no, hauv kauj ruam 3 tus neeg siv khoom suav qhov ncua sij hawm rau txhua tus neeg sib tw siv HTTP ping thov. Daim ntawv teev npe ncua sij hawm no raug xa rov qab mus rau tus neeg saib xyuas kom nws tuaj yeem txiav txim siab tus neeg ua haujlwm tsim nyog tshaj plaws los ua haujlwm rau tus neeg siv. Kauj ruam 4 hauv qab no tsim qhov kev ua si. WebRTC streaming kev twb kev txuas yog tsim los ntawm tus neeg siv thiab tus neeg ua hauj lwm.
    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Tus neeg siv tsab ntawv tom qab nkag mus

    Dab tsi nyob hauv tus neeg ua haujlwm

    Kev ua si thiab cov kav xa dej tau muab khaws cia rau hauv tus neeg ua haujlwm hauv kev sib cais thiab sib pauv cov ntaub ntawv muaj los ntawm kev sib tshuam. Tam sim no, qhov kev sib txuas lus no yog ua los ntawm kev xa cov ntaub ntawv hauv nco ntawm Cov channel nyob rau hauv tib txoj kev. Lub hom phiaj tom ntej yog kev sib cais, i.e. ywj siab tso tawm ntawm qhov kev ua si nyob rau hauv lwm txoj kev.

    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Kev sib cuam tshuam ntawm cov neeg ua haujlwm cov khoom

    Cov khoom tseem ceeb:

    • WebRTC: ib tug neeg tivthaiv uas lees txais cov neeg siv tswv yim thiab outputs encoded media los ntawm lub server.
    • Kev ua si emulator: kev ua si tivthaiv. Ua tsaug rau lub tsev qiv ntawv Libretro, lub kaw lus muaj peev xwm khiav qhov kev ua si hauv tib txoj kev thiab cuam tshuam nrog cov xov xwm thiab cov tswv yim.
    • Hauv-kev ua si thav duab raug ntes thiab xa mus rau tus encoder.
    • Duab/Audio Encoder: ib tug encoding pipeline uas siv xov xwm thav ntawv, encodes lawv nyob rau hauv keeb kwm yav dhau, thiab outputs encoded dluab/suab.

    Kev siv

    CloudRetro tso siab rau WebRTC raws li nws cov thev naus laus zis thev naus laus zis, yog li ua ntej dhia mus rau cov ntsiab lus ntawm kev siv Golang, kuv txiav txim siab los tham txog WebRTC nws tus kheej. Qhov no yog amazing technology uas tau pab kuv zoo heev nyob rau hauv ua kom tiav sub-second latency rau streaming cov ntaub ntawv.

    WebRTC

    WebRTC yog tsim los muab cov kev sib raug zoo ntawm cov phooj ywg-rau-peer sib txuas ntawm cov mobile apps thiab browsers siv APIs yooj yim.

    NTUA Traversal

    WebRTC paub txog nws txoj haujlwm NAT Traversal. WebRTC yog tsim los rau kev sib txuas lus nrog phooj ywg. Nws lub hom phiaj yog txhawm rau nrhiav txoj hauv kev ncaj ncees tshaj plaws, zam NAT lub rooj vag thiab firewalls rau cov phooj ywg-rau-peer kev sib txuas lus los ntawm cov txheej txheem hu ua ICE. Raws li ib feem ntawm cov txheej txheem no, WebRTC APIs pom koj qhov chaw nyob IP pej xeem siv STUN servers thiab xa mus rau cov neeg siv khoom xa rov qab (TURN) thaum kev sib txuas ncaj qha tsis tuaj yeem tsim.

    Txawm li cas los xij, CloudRetro tsis tau siv tag nrho cov yam ntxwv no. Nws cov phooj ywg-rau-peer sib txuas tsis muaj nyob ntawm cov neeg siv, tab sis ntawm cov neeg siv thiab huab servers. Cov neeg rau zaub mov sab ntawm tus qauv muaj kev txwv kev sib txuas lus ncaj qha tsawg dua li cov neeg siv khoom siv. Qhov no tso cai rau koj ua ntej qhib cov chaw nres nkoj nkag lossis siv pej xeem IP chaw nyob ncaj qha, vim tias lub server tsis nyob tom qab NAT.

    Yav dhau los, kuv xav tig qhov project mus rau hauv kev ua si faib platform rau Cloud Gaming. Lub tswv yim yog tso cai rau cov neeg tsim kev ua si los muab kev ua si thiab cov peev txheej streaming. Thiab cov neeg siv yuav cuam tshuam nrog cov chaw muab kev pabcuam ncaj qha. Nyob rau hauv no decentralized yam, CloudRetro tsuas yog ib lub moj khaum rau kev sib txuas cov neeg thib peb streaming kev pab cuam rau cov neeg siv, ua rau nws scalable dua thaum nws tsis yog hosting lawm. Lub luag haujlwm ntawm WebRTC NAT Traversal ntawm no yog qhov tseem ceeb heev los pab txhawb kev sib raug zoo ntawm cov phooj ywg-rau-peer kev sib txuas pib ntawm cov neeg thib peb cov peev txheej streaming, ua kom yooj yim rau tus tsim txuas rau lub network.

    Video compression

    Video compression yog ib qho tseem ceeb ntawm cov raj xa dej thiab ua rau muaj txiaj ntsig zoo. Txawm hais tias nws tsis tsim nyog paub txhua yam ntawm VP8 / H264 video encoding, kev nkag siab cov ntsiab lus tuaj yeem pab koj nkag siab txog kev xaiv video nrawm, kho tus cwj pwm tsis xav txog, thiab kho latency.

    Compressing video rau kev pabcuam streaming yog qhov nyuaj vim tias lub algorithm yuav tsum xyuas kom meej tias tag nrho lub sijhawm encoding + lub sijhawm sib kis hauv network + lub sijhawm txiav txim siab tsawg li sai tau. Tsis tas li ntawd, cov txheej txheem coding yuav tsum zoo ib yam thiab tsis tu ncua. Qee qhov kev sib pauv encoding tsis siv - piv txwv li, peb tsis tuaj yeem nyiam lub sijhawm encoding ntev dua li cov ntaub ntawv me me thiab lub sijhawm txiav txim siab, lossis siv tsis sib xws.

    Lub tswv yim tom qab video compression yog txhawm rau tshem tawm cov ntaub ntawv tsis tsim nyog thaum tswj hwm qib qhov raug rau cov neeg siv. Ntxiv rau qhov encoding tus kheej cov duab zoo li qub, lub algorithm infers cov thav duab tam sim no los ntawm yav dhau los thiab tom ntej, yog li tsuas yog lawv qhov sib txawv raug xa mus. Raws li tuaj yeem pom los ntawm qhov piv txwv nrog Pacman, tsuas yog cov ntsiab lus sib txawv tau kis.

    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Kev sib piv ntawm cov duab thaij duab siv Pacman ua piv txwv

    Suab compression

    Ib yam li ntawd, lub suab compression algorithm tshem tawm cov ntaub ntawv uas tib neeg tsis tuaj yeem pom. Opus yog tam sim no qhov zoo tshaj plaws ua suab codec. Nws yog tsim los xa cov suab nthwv dej dhau qhov kev txiav txim datagram raws tu qauv xws li RTP (Real Time Transport Protocol). Nws latency qis dua mp3 thiab aac, thiab qhov zoo dua. Lub latency feem ntau yog nyob ib ncig ntawm 5 ~ 66,5ms.

    Pion, WebRTC hauv Golang

    Pawn yog qhov qhib qhov project uas coj WebRTC rau Golang. Hloov chaw ib txwm qhwv ntawm haiv neeg C ++ WebRTC cov tsev qiv ntawv, Pion yog haiv neeg Golang kev siv ntawm WebRTC nrog kev ua tau zoo dua, Mus koom ua ke, thiab kev tswj hwm version ntawm WebRTC raws tu qauv.

    Lub tsev qiv ntawv kuj tseem ua rau streaming nrog ntau qhov zoo tsim-ins nrog sub-second latency. Nws muaj nws tus kheej kev siv ntawm STUN, DTLS, SCTP, thiab lwm yam. thiab qee qhov kev sim nrog QUIC thiab WebAssembly. Lub tsev qiv ntawv qhib no nws tus kheej yog qhov chaw kawm zoo tiag tiag nrog cov ntaub ntawv zoo heev, kev siv cov txheej txheem network, thiab cov piv txwv zoo.

    Lub zej zog Pion, coj los ntawm tus tsim muaj lub siab nyiam, yog qhov muaj zog heev, nrog ntau qhov kev sib tham zoo mus txog WebRTC. Yog tias koj txaus siab rau lub tshuab no, koom nrog http://pion.ly/slack - Koj yuav kawm ntau yam tshiab.

    Sau CloudRetro hauv Golang

    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Kev ua haujlwm ntawm tus neeg ua haujlwm hauv Go

    Mus Channels hauv Action

    Ua tsaug rau Go tus tsim channel zoo nkauj, cov teeb meem ntawm kev tshwm sim streaming thiab concurrency tau yooj yim heev. Raws li nyob rau hauv daim duab, qhov sib txawv GoRoutines muaj ntau yam khoom siv ua ke. Txhua feem tswj hwm nws lub xeev thiab sib txuas lus los ntawm cov channel. Golang's xaiv qhov kev lees paub yuam ib qho kev tshwm sim atomic kom ua tiav txhua zaus hauv qhov kev ua si (kev ua si zuam). Qhov no txhais tau hais tias tsis tas yuav tsum tau kaw qhov kev tsim no. Piv txwv li, thaum tus neeg siv txuag, yuav tsum muaj tag nrho snapshot ntawm lub xeev game. Lub xeev no yuav tsum nyob twj ywm tsis tu ncua, nkag mus rau hauv kom txog thaum kev txuag tiav. Thaum txhua qhov kev ua si zuam, lub nraub qaum tsuas tuaj yeem ua haujlwm txuag lossis kev nkag mus, ua cov txheej txheem xov zoo.

    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/Ntxhais tawm

    Cov qauv Golang no haum rau kuv CrowdPlay thiab Ntau Tus Neeg Ua Si siv rooj plaub zoo kawg nkaus. Ua raws li cov qauv no, tag nrho cov neeg siv khoom nkag rau hauv ib chav yog tsim rau hauv lub hauv paus nkag channel. Game media yog tom qab ntawd xa mus rau txhua tus neeg siv hauv tib chav. Nyob rau hauv txoj kev no, peb ua tiav qhov kev faib tawm ntawm lub xeev game ntawm ob peb qhov kev ua si ntawm cov neeg siv sib txawv.

    Qhib qhov chaw huab gaming ntawm WebRTC: p2p, multiplayer, xoom latency
    Synchronization ntawm qhov sib txawv

    Disadvantages ntawm Golang

    Golang tsis zoo tag nrho. Channel qeeb. Piv nrog rau kev thaiv, Go channel tsuas yog txoj hauv kev yooj yim dua los daws cov xwm txheej sib tham thiab xov, tab sis channel tsis muab qhov ua tau zoo tshaj plaws. Muaj complex thaiv logic nyob rau hauv lub channel. Yog li kuv tau ua qee qhov kev hloov kho rau qhov kev siv, rov siv cov ntsuas phoo thiab cov txiaj ntsig atomic thaum hloov cov channel los txhim kho kev ua tau zoo.

    Tsis tas li ntawd, tus neeg khaws khib nyiab hauv Golang tsis muaj kev tswj hwm, uas qee zaum ua rau muaj kev tsis txaus ntseeg ntev. Qhov no cuam tshuam nrog daim ntawv thov streaming tiag tiag.

    COG

    Lub phiaj xwm siv qhov chaw qhib uas twb muaj lawm Golang VP8 / H264 lub tsev qiv ntawv rau kev tshaj tawm compression thiab Libretro rau game emulators. Tag nrho cov tsev qiv ntawv no tsuas yog wrappers ntawm C lub tsev qiv ntawv hauv Go siv COG. Qee qhov tsis zoo yog teev nyob rau hauv no ncej los ntawm Dave Cheney. Cov teeb meem kuv ntsib:

    • tsis muaj peev xwm ntes tau qhov sib tsoo hauv CGO, txawm tias Golang RecoveryCrash;
    • ua tsis tiav los txheeb xyuas cov kev ua haujlwm tsis zoo thaum peb tsis tuaj yeem txheeb xyuas cov teeb meem ntxaws hauv CGO.

    xaus

    Kuv ua tiav kuv lub hom phiaj ntawm kev nkag siab cov kev pabcuam huab gaming thiab tsim lub platform uas pab kuv ua si nostalgic retro games nrog kuv cov phooj ywg online. Txoj haujlwm no yuav ua tsis tau yog tias tsis muaj lub tsev qiv ntawv Pion thiab kev txhawb nqa ntawm Pion zej zog. Kuv zoo siab heev rau nws txoj kev loj hlob. Cov APIs yooj yim muab los ntawm WebRTC thiab Pion ua kom muaj kev sib koom ua ke zoo. Kuv thawj cov ntaub ntawv pov thawj ntawm lub tswv yim tau tso tawm tib lub lim tiam, txawm tias kuv tsis muaj kev paub dhau los ntawm kev sib txuas lus nrog phooj ywg-rau-peer (P2P).

    Txawm hais tias qhov yooj yim ntawm kev sib koom ua ke, P2P streaming yog qhov tseeb ntawm thaj chaw nyuaj hauv computer science. Nws yuav tsum muaj kev cuam tshuam nrog qhov nyuaj ntawm kev sib koom ua ke ntev ntev xws li IP thiab NAT los tsim kev sib tham nrog phooj ywg. Thaum ua haujlwm ntawm txoj haujlwm no, kuv tau txais ntau yam kev paub zoo txog kev sib txuas lus thiab kev ua tau zoo, yog li kuv xav kom txhua tus sim tsim P2P cov khoom siv WebRTC.

    CloudRetro caters rau txhua qhov kev siv kuv xav tau los ntawm kuv qhov kev xav raws li tus neeg ua si retro. Txawm li cas los xij, kuv xav tias muaj ntau qhov chaw hauv qhov project uas kuv tuaj yeem txhim kho, xws li ua rau lub network txhim khu kev qha thiab ua tau zoo, muab cov duab ua si zoo dua, lossis muaj peev xwm sib koom ua si ntawm cov neeg siv. Kuv tabtom ua haujlwm hnyav rau qhov no. Thov ua raws qhov project thiab txhawb nqa yog tias koj nyiam.

Tau qhov twg los: www.hab.com

Ntxiv ib saib