áśááľáá áĽáá° á áááááľáŁ áá á¨á° áááľ áĽáá° á áááááľáŁ ááľá¨á áĽáá° á áááááľáŁ á¨áááá ááľá¨á áĽáá° á áááááľáŁ á¨áŞá˛áŽ áŽááá¨ááľ áĽáá° á áááááľáŁ áľá á°áá á¨ááł áĽáá° á áááááľáľ? áĽáá° áľáłá˛áŤ áŤá á¨á°áá á¨ááłá (ááááľ áááá) áááá á áĽá áá¨áŤáá˝ á°á°ááááᣠá á
áᥠá Google á¨á°ááá¨áᢠáľáłá˛áŤ
Thanh Nguyen áá
áá áĽáľá á áááľ ááá ááŽáááą CloudRetro áá áááá¨á áá°áᢠCloudRetro á Pion áá á¨á°áá°á¨á° áááŁ
áá¤áľ
áŁááá á ááľ ááá áľáłá˛áŤá á˛áŤáľá°ááá
á áĽááŽáŹá áááśáłáᢠááłáĄ á áŁá áአáĽá áá ፠áŤáá á ááá áá
á áá áŁáá á´áááá áĽááłá áĽáá´áľ ááá áĽáá°áá˝á áŤáááá¨áĽ á áľáĽ áá áᢠáá
áá áááľ á á°áťá ááá¨áłáľ áŤáá ááááľ á¨áŤá´á á¨áááľ ááá á¨á°áá á¨ááł áĽááľááĽá á ááłáłáᢠáá¤áą á ááá áľáá
áá áᢠá¨áá
á áłá˝ á ááá´ áá á¨ááĽáŤáľ áá°áąá ááŤáá áĽááááá
TLDRᥠá áá áľáááľ áľáŞáľ á¨áľáááśá˝ áá
ááá á¨á°áá á¨ááł áá°ááľ ááá˘
ááááľ áááá á á áᥠá¨á¨ááł áĽáť áłááá ááá˝ á¨áŽáááá°á áłáááľ áááá˝á ááŁáŠ áľáááľ áĽáá°ááá á ááááᢠá¨ááááľ á¨ááł á¨á°áá áá/á¨á áááá áá´á ááᎠááᢠáá áá´á á¨á áľá°ááᣠá áľá°áłá°áá áŤáłáľáá áĽá á¨á¨ááł á áááᎠá áááľ á áááá áá á ááľá°áááľ áĽá ááľáá˝á/áľáá˝á áá°áá áá á áá°áŤá¨áľ á¨ááľ áááľ áľáŤá ááááłáᢠá áááአá¨áŁáľ áá°áľá áľááá°áŤ á°áá áá á áááľáá ááľáááśá˝ áá á¨áľ áá áĽááłááá áŤá°áááá˘
Google Stadia á áá á¨áą áĽáá˛áŤááą áŤáľá˝áááłá
á¨áá
á´áááá á¨áá°ááľ áĽáŁ áááłáĄ ááááŽáśááľ áááśááľ 10 á Chrome á áłá˝ áá á˘á°áŤ á áľáĄáľ?
á¨ááááľ á¨ááł á á´áááŤá ááłá ááá˘
á¨ááł á¨ááŤááἠááŁá á¨á°á áá ááá˝ á¨áááááŁá¸á áĽáá Ꮰá áŤáŁá˘áá˝ á ááą ááᢠá ááľ áá˝ áá á á áľáá°áá á áá á áá á¨2 á°á¨ááľ áááá¨áľ áŤáá áá áá á°ááŁáááľ á ááᢠá¨ááĽáł á¨áŞá˛áŽ áĽá¨áśá˝ ááĽááľ á°á¨ááśá˝ á¨áááá¨áľ á ááá፠á áá¸áᣠáá á ááá ááááŤáłá á á áááá áá°áŁáᢠááá á¨ááłá á á°á°ááá á 500áá´ á¨áááá á¨áá á ááá ááŤááľ á ááťááᢠááŁá˝á á ááĽá áľ áĽá á áááá áĽááá ááŤá¨á áŤáá ááá°áľ á á°áťá áá á á ááľá°á áĽáá˛áá áĽá á á áŁá áá á°á áááá¨áľá ááłáŤáľ ááᢠáľááá , á¨áŞá˛áŽ áĽá¨áľ áŁá áá á ááŤá¨áĽ áĽáá áá á°ááŁáŤá á áá°áá.
á á ááá á¨á°áá á¨ááł á áĽááľ
áááľ ááá ááŽáááľ CloudRetro
áĽáá°áá áŁá áĽáĽá á¨á ááłá¨ áá¨áĽ áá°áŚá˝ áá áá ááťá áĽáá°áá ááá¨áľ á¨á°áá á¨ááł á¨áá¨áŤ ááá áááá á áá°ááŠá˘ ááááá áá áá°-ááłáĄ áá¨áá፠á¨áá¨áĽáŠáľ áááá á áŁá á¨áááá ááá áľááá áĽá á ááá˝ á ááŤáł ááááŤáśá˝ ááá áľáá ፠á°áľáá áľááá á á áá áá áĽááłááááľá˘ ááľ ááá áĽá á áŁá á ááĽááľ áŤáłáĽáŤá; á Go ááľáĽ áŤá áťááá˝ áŁááĽá-áá ááŁáĽá áááľá°áłá°á á áŁá áĽáŠ áá¸áá˘
ááŽáááą
áľá ááŽáááą áĽáá
á¨á áá ááá
áá˝áá-
CloudRetro á°ááŁá
á¨á°áá á¨ááłá ááá áááłá¨áľ CloudRetro retro á¨ááłáá˝á áá áááᢠáá á áĽá áአá¨á¨ááł áááśá˝á áĽááľáłáá áŤáľá˝áááá˘
- á¨á¨ááłá á°áááłáá˝ááľ
- áá˝ á˛á¨ááľ ááŁá áááś ááŤááľ; ááá ááá¨áľ ááá ááŤá á áŤáľáááá
- á ááŁáá á áłá˝ ááľáĽ áá°áŤáᣠáľááá áĽáąá áááľáŹáľ ááá áśááľáá á áŤáľáááá
- á¨á¨ááł ááá-áááá˝ á á°ááŤáŠ ááłáŞáŤáá˝ áá ááአáĽá ááááĽáá áá á˛áᥠá á°áá ááľáĽ áá¨ááš áá˝ááá˘
- á¨ááłá á áĽá¨áľ áááá
áá˝áá ááá á áĽá á°á áááá˝ á á ááľ áá ááŤááľ áá˝áááĄ-
- Crowdplay áá áĽáá° TwitchPlayPokemonᣠáĽá ááľááá áááľááá áĽá á°á¨á᪠á¨áĽááá°á áá
- á¨ááľáá áá á¨ááłáá˝ á ááľáá ááᢠáĽá á°á áááá˝ á ááłá¨ áá¨áĽ áłáŤááá ááŤááľ áá˝ááᢠSamurai Shodown á áá á CloudRetro á ááłá¨ áá¨áĽ áá á 2 á°áŤáážá˝ ááŤááľ áá˝ááá˘
á á°ááŤáŠ ááłáŞáŤáá˝ áá á¨ááľáá áá áŁááĽá á°áŤáá˝ á¨ááł ááłáŤ áľáŞáľáá°á¨á° áááľ
ááľáááśá˝ áĽá á¨á´áááá ááá
á¨áá á áłá˝ ááŽáááąá á¨ááááá á ááľ áŤáľáááĽáłá¸á ááľáááśá˝ áááá áá.
1. á ááľ á°áŤáá˝
áá ááľáááľ áĽáá áá á áŁá á áľááá ááá ááá˝ ááááľá áá˝ááᣠááá áá á¨ááá ááá¨á´ á ááą ááᣠá¨á°áá á¨ááł á á°áťá áá á á¨áŁá áá á¨áĽá¨áľ á áááááśá˝ áĽáá˛áá áŤáľá˝áááᢠá áá á-á°áŤáá˝ á¨ááł áá áŤá°áŽáá á¨á°áá¨á á áááá ááá á˛á˛á¤áá ááľáááľ áĽáá˝ááá ááááŤáąá áá° áĽááá áááá áľááááĽá ááᢠáĽá¨áśá˝á áá° áá á˘áŤ á áááá á¨ááľáá ááá áĽá˝áá˝á áá° á¨á°áá¨á á¨ááĽáśáŹáľ á áááá á¨ááľá°ááá ááá á¨á áááááľ áĽá¨áśá˝ á á áť áá áť WebRTC áááááľ á ááĽáł áá°á ááá áá°ááłáá˘2. áá á°á áááá¨áľ á¨áá˛áŤ áĽá¨áľ
áľá áľáłá˛áŤ á ááá ἠáĽá áá WebRTC á á ááłááľ ááŁáĽáá˝ áá á˛á ááľ á áŤááᢠWebRTC áĽá á á¨áá á´áááá áĽáá°áá á°ááááĽáŠ áĽá á á°áá á¨ááł ááľáĽ ááá áá áášá ááᢠWebRTC á¨áľá á áłážá˝á áĽá á¨ááŁáá á áááŹá˝áá˝á á á á˝á áłá áááááľ á ááá á¤áá á á¨áá°áĽ ááŽáááľ ááᢠá¨á áť áá áť áááááľá áŤáááŁáᣠááááá áĽááá á¨á°ááťá¸ ááᣠáĽá áĽáá° VP8 áĽá H264 áŤá áá°á á áŽá´áŽá˝ á ááľá˘á¨áá°á áĽáŤáľ áŤáá¸áá ááŤáááľ á¨ááá¨áľ ááá áááĄá á¨á°á áá á°ááᎠáá¨ááἠá áľá፠á°áĽáťááᢠá ááłááľ áŞáłáŤáá˝ á á áááŞáá ááľáĽ á°ááŁáááľ á áá¸á. ááá áľáłá˛áŤ á á áááአáá áŤááá á¨ááľá áá á á¨ááááľ á°á¨á᪠áĽááá á ááᣠáĽá ááŹáá˝ áá° áĽáŠáŽá˝ á¨áá°ááá á ááľ áá° á¨áá°á áĽáŤáľ á¨á á°á°ááááá˘
3. á¨á°á¨ááá áá á¨á° áááľ á¨ááŚááŤááŤá ááľáá áá
á¨áááááŤá á áááŞáá áĽá áŽáľ ááá áŤá á á¨á°ááťáš á˘áááᣠá ááłá¨ áá¨áĄ á ááá ááááá¨áľ á¨áá°ááá á áľá°áá ጠá¨áááľá á áŤá ááᢠá¨á˝áá˝á ááá (RTT) áááááľ á ááá´áá¸á á¨á°á ááá áá á¨áááá áá á áááá áááŁáá áá´ ááá¨á áááŁáᢠá ááá´áá¸á 1 á áľá°áŁáŁáŞ áĽá á ááá á áá á¨áá°áŤáŠ á ááŤáł á¨áĽá¨áľ á°áá¨áŽá˝ áááŠáľ áááŁáᥠUS WestᣠUS EastᣠEuropeᣠSingaporeᣠChina ááá á¨áĽá¨áľ á°áá¨áŽá˝ áá á áá á¨á°ááá ááá á ááŁá¸áᢠá°áá¨á á˛áááá ááá á˛áᣠáľáááą áľáááąá ááľá°áŤá¨á áá˝ááᢠáľááá , á áľáá áľáŤáá, á°á¨á᪠á ááááŽá˝á áá¨áá á ááľá áááŞáŤá ááá áłá.4. á¨á áłá˝ á°áłááááľ
á¨ááááľ á¨ááł á¨á°á áááá˝ áľáášá á ááááá áľ áá á áĽáŠ áááł áá ááᢠáá áááľ á á áłá˝ ááľáĽ ááľáŹáľ ááťáá. á áłážá˝ á¨á¨ááłáá áááľ áá°á áááá˝ á á°áťá áá á ááš áááľá¨á áá¨áłáᣠáá á áśááľáá áĽá áááľáá á¨ááľá¨á áŤáľáá¸ááᢠá áłážá˝ á ááŁáá áĽá á á´áľááśá áľáŞáśá˝ ááŤá¨á á¨ááľá¨á-á ááŤá á°ááŁáŤáľá ááá á¨áĽ áá¨áłáᢠáĽáá° áĽáľá ááᣠWebRTC á á°ááŤáŠ á áłážá˝ á á°áἠáá°áááá˘5. á¨á¨ááłáá á áááá˝ áĽá á áááááľ ááá˝ áááŤá¨áľ
á¨á°áá á¨ááł á áááááąá áĽáá° ááľá¨á áĽááá¨á°áááᢠááá á°á áááááá ááá á¨ááľá¨á áá áááááľ ááťá á áá áľá˘ á áá á°áá áá ááá˘LibRetro á¨Cloud á¨ááł á áááááľ áá ááááŤáąá LibRetro áĽáá° SNESᣠGBAᣠPS áá áŹáľáŽ á¨ááłáá˝ á¨ááŤáá á¨á¨ááł emulator á áááá˝ áŤáááŁáá˘6. ááŁááĽá á°áŤáá˝áŁ áááἠá¨ááł áĽá áááŤá áľáľáľá (áĽáá -ááá) á¨á¨ááłá áá áááá˝
CloudRetro áĽáá° CrowdPlay áĽá Online MultiPlayer ááŹáľáŽ á¨ááłáá˝ áŤá áĽá á áłá˛áľ á¨ááłáá˝á áá°áááᢠáĽá á°á áááá˝ á á°ááŤáŠ áŽáááá°áŽá˝ áá á ááľ á áááľ áĽáá -ááá á¨á¨ááą á ááľ á áááľ á¨ááł á˛áŽáĽ áŤáŤá áĽá áĽáá˛áŤáá ááááá áá˝ááá˘á¨áá á á áá á¨á¨ááł áááśá˝ á á°áá áá¨ááť ááľáĽ á°á¨áá˝á°áá. áá á°á áááá˝ á ááááá áá á ááááá áá ááłáŞáŤ áá ááŤááľ áĽáá˛ááĽá áŤáľá˝áá¸ááá˘
7. á ááľá ááŹáľ
á á áá áá áĽáá°ááááá SAASᣠá¨á°áá á¨ááł á á ááľá áá°á á¨áá˝á ááá á áá áľá˘ á¨á áľá°áŁáŁáŞá-á°áŤá°á ááľá á°á¨á᪠áľáŤááá áááááá á°á¨á᪠á°áŤá°áá˝á ááá¨áá áŤáľá˝áááłá.8. á¨á ááľ á°áá áá ááá áááááľ á¨áá
á¨CloudRetro áá á¨á° áááľ á¨ááľá°ááá°á á á°ááŤáŠ á¨á°áá á á áŤá˘áá˝ (á˛ááłá áá áŤááľáŁ á ááŁáŁáŁ áĽá á á áŤá˘) áá°ááŤáŠ áááá˝ ááᢠá á ááľ á¨á°áá á á áŤá˘ ááľáĽ ááááá áááľáááľ á áśá¨á áŽáá´ááá ááľáĽ ááá á¨á° áááľ áĽáá˛á ፠áĽá á¨á ááłá¨ áá¨áĽ á ááĽáŽá˝á áŁá˝ áľááŞááľ á áá áŤááᢠáá áá á WebRTC ááľáĽ á¨NAT Traversal áá á ááŁáá CloudRetroá á ááááá á¨á°áá ááľá¨á áá áĽá á ááááá á¨á°á áá áá˝áá˝ áá áĽááłá ááá°ááŤáľ á°ááááááľ ááá¨á áá˝ááá˘á¨áľá-á áá ááľá
á°áŤá°áᥠ(ááá á¨áá á¨á°á áá°á á¨áĽá¨áľ áá°áŤáŤ á áááá) á¨ááłáá˝á áŤá ááᣠá¨ááá¨áŞáŤ á§á᧠ááľááá áŤáľáŹáłá áĽá á˘ááŽáľ á¨á°á°á¨ááá áá˛áŤ áá°á áááá˝ áŤá°áŤáŤáᢠá¨á°áŤá°á á ááŁááá˝ á ááá á áá á°á°áŤáá°ááᣠáĽá áĽáŤááłááą á°áŤá°á áĽá á¨á°á áá ááá áááá˝á á á ááľ áá ááľá°áááľ áá˝ááá˘
á áľá°áŁáŁáŞáĄ- á á˛áąá á°á áá ááááá á áŁá á°áľáá á¨ááá á°áŤá°á áá á¨ááŁáá áááááľ á áá áľá˘ á áľá°áŁáŁáŞá á WebSocket á áŠá á¨á°áŤá°áá˝ áá áááááá˘
á¨á¨ááł áááł áá¨ááťáĄ áááá á¨á¨ááł áááśá˝ ááá¨áá á¨áááľ áá¨ááťá˘ áá áá¨ááť áĽáá° á¨áááľ ááľáááŤ/ááŤá áŤá á áá á°ááŁáŤáľá áá°áŁáá˘
á¨CloudRetro á¨áá°á á°á¨á á ááá´áá¸ááĽá áľááŞááľ
á á˛áľ á°á áá CloudRetroá á á°á¨á 1 áĽá 2 á˛á¨ááľ á áľá°áŁáŁáŞá áŤááľ á°áŤá°áá˝ áááá áá áá° ááááŞáŤá áá˝ áá á¨ááᢠá¨áá á áá á á°á¨á 3 á°áá áá á¨á¤á˝á˛á˛á ááá áĽáŤáá á áá áá áááá áĽáŠáá˝ áááá¨áśá˝á áŤá°ááᢠá°á áááá áááááá á áŁá á°áľáá á¨áááá á áŤá°á áĽáá˛ááľá áá á¨ááᨠáááá áá° á áľá°áŁáŁáŞá áááŤáᢠá¨áłá˝ áŤáá á°á¨á 4 á¨ááłáá áááĽáŤá. á¨WebRTC áĽá¨áľ áááááľ á á°á ááá áĽá á á°áá°á á á°áŤá°á ááŤá¨á ááá°á¨áłáá˘
ááłá¨áť áŤáá á áá á¨á°á áá áľááŞááľá˘á á áŤá°áá ááľáĽ áŤáá
á¨á¨ááł áĽá á¨áĽá¨áľ á§áá§áá˝ á á áŤá°áá ááľáĽ á á°ááĽá á°ááá áá áĽá áĽá፠á áááá˝ áá¨á áááááŁáᢠá á áá áá áá áááááľ á¨áá¨áááá á áá á°á¨ áľááľáł áá¨áá á ááľá°ááá ááá˘
á¨áááá áťááá˝ á á°ááłáłá áá°áľ. á¨áááĽáá áἠáááŤá¨áľ áá, áááľá. á áá áá°áľ ááľáĽ á¨á¨ááłáá áááá°á ááľáááá˘
á¨á°áŤá°á á áŤááľ ááľá°ááĽááá áá áááá˝:
- WebRTCᥠá¨á°á ááá ááĽá áľ á¨ááá á áĽá áŽáľ á¨á°á°á¨á áá˛áŤ á¨á áááአá¨ááŤáᣠá¨á°áá á á áŤáá˘
- á¨á¨ááł á áľáááĄ- á¨á¨ááł á áŤá. áááĽáŹáľáŽ á¤á°-áá˝áááľ ááľáá áááŁáá áľáááą á¨ááłáá á á°ááłáłá áá°áľ ááľáĽ áááľáŹáľ áĽá áá˛áŤ áĽá á¨ááĽá áľ áĽá¨áľá á ááľáĽ áááĽáá áá˝ááá˘
- á¨ááľá -á¨ááł áááá˝ á°ááá áá° ááá¨áŞáŤá áááŤáá˘
- ááľá/áŚá˛áŽ á˘ááŽá°áᥠá¨áá˛áŤ ááŹáá˝á á¨áááľáľáŁ á¨á áľá°ááᣠá¨ááľáĽá áĽá á¨á°áá°á አááľáá˝/áľáá˝ á¨ááŤáᣠá˘ááŽá˛áá á§áá§á˘
áľáá áŤ
CloudRetro á WebRTC áá áĽáá° á¨ááᣠá áĽááľ á´áááá áá°áááá, áľááá áá° áááá á á°ááŁá á ááááŽá˝ á¨ááá°á´ á ááľ, áľá WebRTC áĽáŤáą ááááá áá°ááŠ. áá áá¨áá ááá°áŤá¨áľ áááľ á°á¨ááľ áááá¨áľá áĽááłáłáŤ á áŁá á¨á¨áłá á áľá°áá á´áááá ááá˘
WebRTC
WebRTC á¨á°áá°áá ááá á¤áá ááá˝á á áá áá á¤á°á á¨ááŁáá áá°áá áŞáŤáá˝ áĽá á áłážá˝ áá á¨áá°á áĽáŤáľ áŤáá¸áá á¨á áť áá áť áááááśá˝á ááá á¨áĽ ááá˘
NAT ááťáá
WebRTC á NAT Traversal á°ááŁá ááłáááᢠWebRTC á¨á°áá°áá áá áť áá áť áááááľ ááᢠá ááá á á°áŁáá áá°áľ ᨠNAT ááá˘áŤ ááááśá˝á áĽá áá¨áááá áá áť áá áť áááááľ á ááľá¨á á áŁá á°áľáá á¨áá ááĽá°á ááááľ ááááľ ááá˘
ICE . áĽáá° á¨áá áá°áľ á áŤáᣠá¨WebRTC APIs STUN á ááááŽá˝á á áá áá ááá á áá á áľáŤáťáá áááá áá° ááľá°ááá፠á áááአáŤáľá°áááá (á°áŤ ) ááĽá°á áááááľ ááá á á áááťáá áľ áá.áááᣠCloudRetro áá á áŁá ᪠áá á áá á áá ááá áľáᢠá¨á áť áá áť áááááą á á°á áááá˝ ááŤá¨á áłááá á á°á áááá˝ áĽá á á°áá á ááááŽá˝ ááŤá¨á á¨ááᢠá¨á ááłáŤá á¨á áááá áá á¨á°ááá°á á¨á°á áá ááłáŞáŤ áŤáá° ááĽá°á á¨áááááľ áá°áŚá˝ á ááľá˘ á áááአá¨á¤áá¤á˛ ááᣠáľááá áá áᢠáá°áŚá˝á á áľááľáá áĽáá˛á¨ááą ááá á¨á áἠá áá á áľáŤáťáá˝á á ááĽáł áĽáá˛á áá ááá áľáááłáá˘
á¨áá áá°á ááŽáááąá á Cloud Gaming á¨á¨ááł áľáááľ ááľá¨á ááá¨á ááá áá áᢠááłáĄ á¨á¨ááł ááŁáŞáá˝ á¨ááłáá˝á áĽá á¨áĽá¨áľ áááŽá˝á áĽáá˛áŤááᥠááááľ áá áᢠáĽá á°á áááá˝ á¨á á áŤá˘áá˝ áá á ááĽáł áááááᢠá áá áŤáá°áá¨á ááááľáŁ CloudRetro á¨áśáľá°á ááá áĽá¨áľ ááĽáśá˝á á¨á°á áááá˝ áá á¨áááááľ áááá áĽáť á˛áá áá á á áááľá°áááľá áľ áá á¨á áá áĽáá˛á°á áŤá°ááááᢠá¨WebRTC NAT Traversal áá áĽáá á áśáľá°á ááá áĽá¨áľ áááŽá˝ áá á¨á áť áá áť áááááľ ááááá ááááťá¸áľ á áŁá á áľááá ááᣠáá á ááŁáŞ á¨á ááłá¨ áá¨áĄ áá ááááááľ ááá áŤá°ááááá˘
á¨áŞá˛áŽ áááááŤ
á¨áŞá˛áŽ áááá á áľááá áŤááá á¨á§á᧠ááľáá á áŤá áá áĽá ááľááł áá°áľ á¨áá°á á áľá°áá˝áŚ áŤá°áááᢠáĽáŤááłááąá ᨠVP8/H264 áŞá˛áŽ á˘ááŽá˛áá áááá ááá á áľááá áŁááááᣠá áá°-ááłáŚášá áá¨áłáľ á¨áĽá¨áľ áŞá˛áŽ ááĽááľ á ááŤáŽá˝á ááá¨áłáľáŁ áŤáá°á á á áŁá áŞá ááá¨á áĽá áááá¨áľá áááľá°áŤá¨á áá¨áłááłáá˘
ááĽá¨áľ á áááááľ áŞá˛áŽá ááŤá ááłá áá ááááŤáąá á áááŞáá á á ááá á¨ááá¨áŞáŤ áá + á¨á ááłá¨ áá¨áĽ áľáááľ áá + á¨ááá፠áá á á°áťá áá á áá á°á áááá áá¨ááἠá áá áľá˘ á á°á¨ááŞá, á¨áŽáľ áá°áą á°á¨áłáłá áĽá ááŁá ááá á áá áľ. á ááłááľ á˘ááŽá˛áá áĽááśá˝ á áá°áá áŠáâáááłáᣠá¨áľáá˝ á¨ááá áá áá˝ áĽá á¨ááá፠áááá˝ ááá á¨á á á¨ááá¨áŞáŤ áááá˝á áá°áá á áá˝áá ááá ááĽááľ á¨áááá áááá áá áá á áá˝ááá˘
á¨áŞá˛áŽ áááááŤá á áľá°ááᣠáŤáá ááłáĽ áá°á áááá˝ á°ááŁáááľ áŤáá áľááááááľ á°á¨á áĽá¨á á á á ááľááá á¨áá á˘áľáľ áá¨ááá˝á ááľáááľ ááᢠá¨ááá°áĽ á¨áááááłááą á¨ááľá áááá˝á á¨ááľááἠá á°á¨á᪠á áááŞáá á¨á ááá ááŹá á¨áá°ááľ áĽá á¨áááĽááľ áŤáľááŁá, áľááá ááŠááłá¸á áĽáť áááŤá. á¨áááá ááłá áĽáá°ááłá¨á, áአáአááĽáŚá˝ áĽáť áá°áááá.
ááááá áĽáá° ááłá á áá áá á¨áŞá˛áŽ ááŹáá˝á áááłá°áá¨áľáá˝ áááá
á á°ááłáłáᣠá¨áŚá˛áŽ áááááŤá áľáá°-ááá á á°áá˝ áááááĄáľ á¨ááá˝ááľá áá¨ááá˝ áá°áá ᢠáŚááľ á á áá áá ááᥠá ááťá¸á áŤáá á¨áŚá˛áŽ áŽá´á ááᢠáĽáá° RTP (á¨áŞá áłáá áľáŤááľáááľ ááŽáśáŽá) áŁá á áłáá áłáłááŤá ááŽáśáŽá áá á¨áľáá˝ áááľ áááľá°ááá á¨á°áá°á ááᢠá¨áĽáą áááá¨áľ á¨mp3 áĽá aac áŤáá° ááᣠáĽá áĽáŤáą á¨á áŤá ááᢠá¨áááł áá á á áĽááá á¨5~66,5ms á áŤáŁá˘ ááá˘
ááŽáᣠWebRTC á áááá ááľáĽ
ááá WebRTCá áá° áááá á¨ááŤáᣠáááľ ááá ááŽáááľ ááᢠá¨á°ááá°á á¨C++ WebRTC á¤á°-áá˝áááľ ááá ááŽá á¨á°áťá á ááťá¸áᣠGo áá á°áľ áĽá á WebRTC ááŽáśáŽáá˝ áá á¨áľáŞáľ ááĽáĽá áŤáá á¨WebRTC á¤á°á á¨áááá áľáá ፠ááá˘á¤á° ááá ááą áĽáá˛á á áááľ á°á¨ááľ áááá¨áľ á áŁá áĽá á áĽáŽ á¨á°á°áŠ áĽá¨áśá˝á áááá á áŤáľá˝ááᢠá¨áŤáą ᨠSTUN, DTLS, SCTP, ááá° á á°ááŁá á á áá. áĽá á QUIC áĽá WebAssembly á ááłááľ áá¨áŤáá˝á˘ áá áááľ ááá á¤á°-áá˝áááľ áĽáŤáą áĽá á á áŁá áĽáŠ á°ááśá˝áŁ á¨á ááłá¨ áá¨áĽ ááŽáśáŽá á á°ááŁá á áĽá áĽáŠ ááłááá˝ áŤáá áĽáŠ á¨áááŞáŤ ááá ááá˘
á áŁá á áá᪠á áá ááŁáŞ á¨áá፠á¨ááŽá áá á á¨á°áĽ á áŁá áá ááᣠáĽá áĽáŤáľ áŤáá¸á ááááśá˝ áľáWebRTC áĽá¨á°á°á¨á ááᢠá áá á´áááá áá ááááľ áŤááľ ááááá
http://pion.ly/slack - áĽá á áłá˛áľ áááŽá˝á áááŤá.á áááá ááľáĽ CloudRetro á ááťá áá
á Go ááľáĽ á¨á°áŤá°á á á°ááŁá ááťááá˝á áá° á°ááŁá áááą
áá áἠáťáá á˛ááá ááľáá áááŁáá á¨ááľá°áľ áĽá¨áľ áĽá á¨áááá፠á˝ááŽá˝ á áŁá ááá ááááᢠá áĽááá ááááŤá áá áĽááłááᣠá¨á°ááŤáŠ GoRoutines á áľáአá¨áá°áŠ áĽá á áŤááľ á áá¸áᢠáĽáŤááłááą á áŤá áááąá áŤáľá°áłáľáŤá áĽá á á°ááŚá˝ áááááᢠá¨áááá á¨á°áá¨á áá¨áá፠á á¨ááłá ááľáĽ áá áá á ááľ á¨á áśáá ááľá°áľ áĽáá˛á°áŤ áŤáľááľáłá (á¨á¨ááł ááááľ)ᢠáá áááľ ááá ááľá áááá፠á áŤáľáááá áááľ áá. áááłáᣠá ááľ á°á áá á˛áŤáľáááĽáŁ á¨á¨ááłá áááł áá á á˝á áłá áá˝ áĽááł áŤáľááááᢠáá áááł ááŁáááľ áŤáá áá ááá¨áľ á áá áľ, ááŁá˘á áĽáľáŞá ááá áľá¨áľ áááŁáľ. á áĽáŤááłááą á¨á¨ááł ááááľ áá áľáŁ á¨áááŁá ááá á¨ááłá ááá á¨áá¤áľ áľáŤá áĽáť áá á¨ááááᣠáá á á¨áá°áąá áá á°á áááą á¨á°á á á áŤá°ááááá˘
func (e *gameEmulator) gameUpdate() { for { select { case <-e.saveOperation: e.saveGameState() case key := <-e.input: e.updateGameState(key) case <-e.done: e.close() return } } }
á°áá-ááľáĽ/á°áá-áá
áá á¨áááá á áĽááľ á¨áĽáá CrowdPlay áĽá áŁááĽá á°áŤáá˝ á á ááá ááŤáŁá á áľááá áŤáááᢠáá áá áľááá°-áĽááľ á áá¨á°áᣠá á ááľ ááá ááľáĽ áŤá ááá á¨á°á áá ááĽá áśá˝ á ááá¨áá ááá˘áŤ áťáá ááľáĽ á°áááĽá°ááᢠá¨á¨ááł áá˛áŤ á á°ááłáłá ááá ááľáĽ áá ááá á°á áááá˝ áá°áŤáŤáᢠá áá ááááľ, á á°ááŤáŠ á°á áááá˝ á á ááŤáł á¨á¨ááł ááá áááá˝ ááŤá¨á áŤááá á¨á¨ááł áááł áááá áĽááłáŤáá.
á á°ááŤáŠ ááá-áááá˝ ááŤá¨á áááłá°áá¨áááá ááłáśá˝
áááá áášá á áá°ááᢠáťáá áááá ááᢠá¨áááľ áá á˛ááťá¸áᣠGo channel á ááá á á°ááłáłá áĽá á áá á¨á°á°á¨á ááľá°áśá˝á áááľá°áááľ ááá ááááľ ááᣠááá áá áťáá áĽáŠ á ááťá¸á á áá°áĽáᢠá¨á°áᥠáľá á¨á°ááłá°á á¨ááá ááá á áᢠáľááá á ááááá ááááťá¸áľ áťááá˝á á ááľá°áŤá áľ áá áááááŤáá˝á áĽá á¨á áśáá áĽá´áśá˝á á áá°áá á áá á ááłááľ ááľá°áŤá¨áŤáá˝á á áľáááŤááá˘
á á°á¨ááŞá á áááá ááľáĽ áŤáá á¨ááťáť á á°áŁáłá˘ ááĽáĽá áŤáá°á°á¨áááľ á˛áá áá á á ááłááľ áá á áĽááŁáŹ á¨á á áá áááľá áŤáľá¨áľááᢠáá á áĽááá°á áá á¨áĽá¨áľ áá°áá áŞáŤ áá á áŁá áŁáá áááŁáá˘
á˛.á.á.
ááŽáááą ááŁáŠá áááľ ááá Golang VP8/H264 ááá˛áŤ áááá፠áĽá ááĽáŹáľáŽ áá¨ááł á áľáááá˝ áá áááᢠáĽááá áá á¤á°-ááťáááľ á ááá á Go ááľáĽ á¨C áááĽá¨áŞ áá á ááŤáá˝ áá¸áá˘
á˛.á.á. . á ááłááľ ááłáśá˝ á ááľáĽ á°áááá¨áááá ááĽá á á´á áźá . áŤáá áá á˝ááŽá˝áĄ-- á áááá áááś áááá፠á˝áá áĽááłá á á˛áጠááľáĽ áĽáá˝áľ áááŤá á áááťá;
- á á˛áጠááľáĽ áááá á˝ááŽá˝á ááá¨áľ áľáá˝á á¨á ááťá¸á ááááá˝á ááá¨áľ á áááťáá˘
áá°áá°ááŤ
á¨á°áá á¨ááł á áááááśá˝á á¨áá¨áłáľ áá¤á á áłááťáá áĽá á ááľáá áá á¨áá°ááź áá á¨ááááľ áŹáľáŽ á¨ááłáá˝á áĽááľáŤááľ á¨ááŤááá ááľá¨á ááá áᢠáŤá ááŽá á¤á°-áá˝áááľ áĽá á¨ááŽá áá á á¨á°áĽ áľáá áá ááŽáááľ ááłáŤ á áá˝áá áá áᢠáá°á áá¨á¨ áááľ áĽá á á áŁá á ááľáá ááᢠá WebRTC áĽá Pion á¨áá¨áĄáľ ááá á¤áá ááá˝ áĽáá¨á á¨áá˝ áá á°áľá á á¨ááá ááᢠáľá á áť áá áť (P2P) áááááľ ááá ááľá áĽáááľ áŁááá¨áá á¨áĽá á¨ááááŞáŤ á¨á áá°-ááłáĽ áá¨áá፠á ááŤá áłáááľ á°áááá˘
á¨ááááľ ááá á˘áááᣠP2P áĽá¨áľ á áŽáááŠá°á áłáááľ ááľáĽ á áŁá á¨á°ááłá°á á áŤáŁá˘ ááᢠá¨á áť áá áť ááá áá áááá á áĽáá° IP áĽá NAT áŤá á¨á¨áĽá áá á¨ááľááá á ááá´áá¸á ááľáĽáľáĽ áááŽá˝á áááá á ááŁáľá˘ á áá ááŽáááľ áá á áá áŤá áľ áá áľá á ááłá¨áá¨áĽ áááááľ áĽá á¨á áááá áááťá¸áľ áĽá á áá áĽáááľ á áááťááᣠáľááá ááá á°á WebRTCá á áá áá P2P áááśá˝á áĽáá˛ááᥠá á á¨áłáłááá˘
CloudRetro áĽáá° áŹáľáŽ á°áŤáá˝ á¨á áĽááł á¨á á áłá¸áá áááá á¨á á ááá ááłáŽá˝ áŤáááᢠááá ááᣠáĽá áĽáá°ááľá á á ááŽáááą ááľáĽ ááťáťá á¨áá˝áá¸á áĽá áŚáłáá˝ á á áááłá á ááłá¨ áá¨áĄ áá áἠá áľá°ááá áĽá á ááťá¸á áŤááᣠá¨áá°á áĽáŤáľ áŤáá á¨á¨ááł ááŤáááľ áá á¨áĽ ááá á¨ááłáá˝á á á°á áááá˝ ááŤá¨á á¨áááŤáľ á˝ááłá˘ á áá áá á ááᏠáĽá¨á°áŤá ááᢠáĽáŁáŽáľá á°á¨á°á
ááŽáááľ áĽá á¨áá°áąáľ áá°áááľ.
ááá: hab.com