ืชืืื ื ืืฉืืจืืช, ืชืฉืชืืช ืืฉืืจืืช, ืคืืืคืืจืื ืืฉืืจืืช, ืคืืืคืืจืืช ืชืงืฉืืจืช ืืฉืืจืืช, ืืขืืืืช ืืืืื ืืฉืืจืืช, ืื ืืืื ืืฉืืงื ืขื ื ืืฉืืจืืช? ืืืจ ืืื ืืกืคืจ ื ืืกืืื ืืช ืืืฆืืจ ืืฉืืงื ืขื ื (Cloud Gaming), ืืื Stadia, ืฉืืืฉืงื ืืืืจืื ื ืขื ืืื ืืืื. ืกืืืื
Thanh Nguyen ืืืืื ืืืืืง ืืช ืืืืืื ืืช ืืื ืืคืจืืืงื ืืงืื ืืคืชืื ืฉืื CloudRetro. CloudRetro ืืืืกืก ืขื ืคืืื,
ืื ืืกื
ืืฉื ื ืฉืขืืจื, ืืฉืืืื ืืืจืืื ืขื ืกืืืืื, ืื ืืฆืืืง ืืืชื. ืืจืขืืื ืื ืื ืืืืืื ืืืืฉื ื ืฉืื ืืืื ืชืืืชื ืืื ืื ืืืื ืืคืฉืจื ืขื ืืืื ืืืืืื ืืงืืืืช. ืืจืฆืื ืืืืื ืืื ืืืชืจ ืืช ืื ืืฉื ืืื ืื ืืข ืืืชื ืืืฆืืจ ืืจืกื ืืฉืื ืืืฉืืง ืขื ื ืืงืื ืคืชืื. ืืชืืฆืื ืืืืชื ืคืฉืื ืคื ืืกืืืช. ืืืื ืื ื ืจืืฆื ืืฉืชืฃ ืืชืืืื ืืขืืืื ืขื ืืฉื ื ืฉืื
TLDR: ืืจืกืช ืฉืงืืคืืืช ืงืฆืจืืช ืขื ืืืฉืื
ืืืืข ืืฉืืงื ืขื ื ืื ืืขืชืื
ืื ื ืืืืื ืฉ-Cloud Gaming ืืืคืื ืืงืจืื ืืืืจ ืืื ืฉื ืื ืจืง ืืฉืืงืื, ืืื ืื ืชืืืืื ืืืจืื ืฉื ืืืขื ืืืืฉื. ืืฉืืง ืืขื ื ืืื ืคืกืืช ืืืื ืืืงืื/ืฉืจืช. ืืืื ืื ืืืงืกื ืืช ื ืืืื ืืงืฆื ืืืืืจื ืืืืืขืจ ืืช ืขืืืืช ืืืืืช ืขื ืืื ืืืจืื ืืืืืงื ืฉื ืืฉืืง ืืฉืจืช ืืจืืืง ืืืืจืืช ืชืืื ืืช/ืฉืืข ืืืงืื. ืืฉืจืช ืืืฆืข ืืช ืืขืืืื ืืืื ืื ืฉืืืงืื ืืืจ ืื ื ืชืื ืืืกืื ืืืืืืช ืืืืืจื.
Google Stadia ืืขืฆื ืืืคืฉืจ ืื ืืฉืืง
ืืขืชืื ืฉื ืืื ืืืืืื ืื: ืชืืจ ืืขืฆืื ืื Microsoft Windows 10 ืคืขื ืขื ืืคืืคื ืืจืื?
ืืฉืืง ืืขื ื ืืื ืืืชืืจ ืืืืื ื ืืื ืืช
ืืืืืื ื ืืื ืืื ืืืืชื ืชืืืืื ื ืืืจืื ืฉืืื ื ืืจืฉืช ืชืืืื ืงืืืขื ืืืืืจื ืฉื ืืืฉืชืืฉ. ืื ืืื ืคืขื ืื ื ื ืชืงืืื ืืขืืืื ืฉื 2 ืฉื ืืืช ืืขืช ืืืืฆื ืขื ืืฃ, ืื ืืงืืื. ืืจืื ืืืืื ืืืื ื ืืืื ืืคืืจ ืืื ืฉื ืืืช, ืื ืขืืืื ืืฆืืขืื ืฉืืืืฉืืืช ืกืืืจื. ืขื ืืืช, ืื ืืืฉืืง ืืคืืจ ืืขืชืื ืงืจืืืืช ื-500ms, ืคืฉืื ืื ืืคืฉืจ ืืฉืืง ืื. ืืืืจื ืฉืื ื ืืื ืืืฉืื ืืืืื ื ืืื ืืืืืื ืืื ืฉืืคืขืจ ืืื ืืงืื ืืืืื ืืืื ืงืื ืืื ืืืคืฉืจ. ืืื, ืืืืฉื ืืืกืืจืชืืช ืืืืจืืช ืืืืื ืืื ื ืืฉืืื ืืื.
ืชืื ืืช ืืฉืืง ืขื ื ืืืื
ืคืจืืืงื ืงืื ืคืชืื CloudRetro
ืืืืืชื ืืืฆืืจ ืืืืืช ืืืืงื ืฉื ืืฉืืง ืขื ื ืืื ืืจืืืช ืื ืื ืื ืืคืฉืจื ืขื ืืืืืืช ืจืฉืช ืื ืืืืงืืช. ืืืจืชื ืืืืืื ื ืืืืืืช ืืจืขืืื ืื ืื ืืืืชื ืืฉืคื ืฉืืืจืชื ืืื ืืจืื ืืืชืืืื ืืืื ืืืืฉืื ืืื ืืกืืืืช ืจืืืช ืืืจืืช, ืืคื ืฉืืืืืชื ืืืืืจ ืืืชืจ. Go ืคืฉืื ืืืชืคืชื ืืืจ ืืืื; ืขืจืืฆืื ื-Go ื ืืืจืื ืื ืืืื ืจืืืื ืืฉืจืฉืืจืื.
ืคืจืืืงื
ืชืืื ืืืืื ืขืื ืขื ืืคืจืืืงื ืืื:
ืคืื ืงืฆืืื ืืืืช CloudRetro
CloudRetro ืืฉืชืืฉ ืืืฉืืงื ืจืืจื ืืื ืืืืืื ืืช ืืืื ืฉื ืืฉืืงื ืขื ื. ืื ืฉืืืคืฉืจ ืื ืืงืื ืืืืืืช ืืฉืืง ืืืืืืืืช ืจืืืช.
- ื ืืืืืช ืืืฉืืง
- ืืฉืืขื ืืืืืืช ืืขืช ืคืชืืืช ืขืืื; ืืื ืฆืืจื ืืืืจืื ืื ืืชืงื ื
- ืขืืื ืืืคืืคื ื ืืื, ืื ืฉืืื ืฆืืจื ืืชืืื ื ืืื ืืืคืขืื ืืืชื
- ื ืืชื ืืฉืชืฃ ืืคืขืืืช ืืฉืืง ืขื ืคื ื ืืกืคืจ ืืืฉืืจืื ืืืืืกื ืืขื ื ืืคืขื ืืืื ืฉืชืชืืืจ
- ื ืืชื ืืืืจืื ืืช ืืืฉืืง ืื ืืฉืืง ืื ืขื ืืื ืืกืคืจ ืืฉืชืืฉืื ืื-ืืื ืืช:
- ืืฉืืง ืืืื ืื ืืื TwitchPlayPokemon, ืจืง ืืืชืจ ืืืฆื ืคืืืคืืจืืืช ืืืืชืจ ืืืื ืืืช
- ืืฉืืงืื ืื ืืงืืื ืื ืืืื ืืจื ื. ืืฉืชืืฉืื ืจืืื ืืืืืื ืืฉืืง ืืืื ืืืืืืจ ืจืฉืช. ืืขืช ื ืืชื ืืฉืืง Samurai Shodown ืขื ืืื 2 ืฉืืงื ืื ืืจืฉืช CloudRetro
ืืจืกืช ืืืืื ืฉื ืืฉืืง ืืจืืื ืืฉืชืชืคืื ืืงืืื ืืืืฉืืจืื ืฉืื ืืืชืฉืชืืช
ืืจืืฉืืช ืืขืจืืืช ืืื ืืืืืื
ืืืื ืจืฉืืืช ืืืจืืฉืืช ืฉืืฆืืชื ืืคื ื ืชืืืืช ืืคืจืืืงื.
1. ืฉืืงื ืืื
ืืืจืืฉื ืืื ืืืื ืื ื ืจืืืช ืืฉืืื ืื ืืจืืจื ืืื ืืื, ืืื ืืื ืืืช ืื ืงืืืืช ืืืคืชื ืฉืื, ืืื ืืืคืฉืจืช ืืืืืืื ื ืืขื ื ืืืชืจืืง ืืื ืืืคืฉืจ ืืฉืืจืืชื ืกืืจืืืื ื ืืกืืจืชืืื. ืื ื ืชืืงื ืืืฉืืง ืฉื ืฉืืงื ืืืื, ื ืืื ืืืืคืืจ ืืฉืจืช ืืจืืื ืื CDN ืื ืื ืื ื ืื ืฆืจืืืื ืืืืจืื ืืืืื ืื. ืืืงืื ืืืขืืืช ืืจืืื ืืฉืจืช ืกืื ืง ืื ืืขืืจืช ืื ืืช ืืฉืจืช WebSocket ืืจืืื, ืืจืื ืฉืืจืืช ืืืขืืจืื ืืฉืืจืืช ืืืฉืชืืฉ ืืืืฆืขืืช ืืืืืจ WebRTC ืขืืืช ืืขืืืช.2. ืืจื ืืืื ืขื ืืืืื ื ืืื
ืืฉืงืืจืืื ืขื Stadia, ืื ื ืจืืื ืืขืชืื ืงืจืืืืช ืืช WebRTC ืืืืืจ ืืืื ืืืืจืื. ืืื ืชื ืฉ-WebRTC ืืื ืืื ืืืืืื ืืืฆืืช ืืืคื ืืืื ืืืฉืืืช ืืฉืืืืฉ ืืืฉืืงื ืขื ื. WebRTC ืืื ืคืจืืืงื ืืืกืคืง ืืืคืืคื ื ืืื ืืจื ื ืืืืฉืืืื ื ืืืืื ืชืงืฉืืจืช ืืืื ืืืช ืืืืฆืขืืช ืืืฉืง API ืคืฉืื. ืืื ืืกืคืง ืงืืฉืืจืืืช ืขืืืช ืืขืืืช, ืืืชืื ืืืืื, ืืืืื ืงืืืงืื ืกืื ืืจืืืื ืืืื ืื ืืืื VP8 ื-H264.ืืขืืคืชื ืืืืืื ืืช ืืืืืช ืืืฉืชืืฉ ืืืืื ืืืืชืจ ืืืคืฉืจืืช ืขื ืคื ื ืฉืืืจื ืขื ืืจืคืืงื ืืืืืืช ืืืืื. ืืื ืืคืกืืื ืืงืืืืื ืืืืืืจืืชื. ื-Google Stadia ืืฉ ืฉืื ื ืืกืฃ ืฉื ืืงืื ืช ืืืื ืืชืืื ื ืืฉืจืช, ืืืคืจืืื ืืืืืืื ืืืืืืช ืืืืื ืืืชืจ ืืคื ื ืฉืื ืืฉืืืจืื ืืขืืืชืื.
3. ืชืฉืชืืช ืืืืืจืช ืขื ื ืืชืื ืืืืืืจืคื
ืื ืืฉื ื ืืื ืืืคืืืืืืฆืื ืฉื ืืืืืจืืชื ืืืืืกื ืืืงืื, ืืจืฉืช ืืื ืขืืืื ืืืืจื ืืืืจืืข ืฉืชืืจื ืืื ืืจืื ืืืฉืืืื. ืืืจืืืืงืืืจื ืืืืืช ืืืืืช ืืขืืช ืื ืื ืื ืฉืืชืืื ืืช ืืฉืจืช ืืงืจืื ืืืืชืจ ืืืฉืชืืฉ ืืื ืืืคืืืช ืืช ืืื ืื ืกืืขื ืืืื ืืฉืื (RTT). ืืืจืืืืงืืืจื ืืืื ืืืืืช ืืชืื ืืื ืืืกืคืจ ืฉืจืชื ืกืืจืืืื ื ืืืืคืฆืื ืืจืืื ืืขืืื: ืืขืจื ืืจื"ื, ืืืจื ืืจื"ื, ืืืจืืคื, ืกืื ืืคืืจ, ืกืื. ืื ืฉืจืชื ืืกืืจืืืื ื ืืืืืื ืืืืืช ืืืืืืื ืืืืืืื. ืืืขืจืืช ืืืืื ืืืชืืื ืืช ืืชืคืืฆื ืฉืื ืืืฉืจ ืฉืจืช ืืฆืืจืฃ ืื ืขืืื ืืช ืืจืฉืช. ืืคืืื, ืขื ืชืขืืืจื ืืืืื, ืืืกืคืช ืฉืจืชืื ื ืืกืคืื ืืืคืฉืจืช ืงื ื ืืืื ืืืคืงื.4. ืชืืืืืช ืืคืืคื
ืืฉืืงื ืขื ื ืื ืืืืืื ืืฉืื ืืืจืฉืื ืืื ืคืืืช ืืืืฉืชืืฉืื. ืื ืืืืจ ืฉืืคืฉืจ ืืืจืืฅ ืืืคืืคื. ืืคืืคื ืื ืขืืืจืื ืืืคืื ืืช ืืืืืช ืืืฉืืง ืื ืืื ืืื ืืืคืฉืจ ืืืฉืชืืฉืื, ืืืืกืืื ืืื ืืชืงื ืช ืชืืื ื ืืืืืจื. ืืคืืคื ืื ืื ืขืืืจืื ืืกืคืง ืคืื ืงืฆืืื ืืืืช ืืืฆืช ืคืืืคืืจืืืช ืืื ืืจืกืืืช ื ืืืืืช ืืืจืกืืืช ืฉืืืื ืืืช. ืืืจืื ืืืื, WebRTC ื ืชืื ืืืื ืืืืืื ืืคืืคื ืื.5. ืืคืจืื ืืจืืจื ืฉื ืืืฉืง ืืืฉืืง ืืืฉืืจืืช
ืื ื ืจืืื ืืช ืฉืืจืืช ืืืฉืืงืื ืืขื ื ืืคืืืคืืจืื. ืื ืืื ืฆืจืื ืืืืืช ืืกืืื ืืืืจ ืื ืืืจ ืืคืืืคืืจืื. ืขืืฉืื ืืฉืชืืืชืLibRetro ืขื ืฉืืจืืช ืืฉืืงื ืขื ื ืื LibRetro ืืฆืืข ืืืฉืง ืืืืืืืจ ืืฉืืง ืืคืืคื ืืืฉืืงื ืจืืจื ืืืื SNES, GBA, PS.6. ืืืจืื ืืจื ืืฉืชืชืคืื, ืืฉืืง ืงืื ืืงืืฉืืจ ืืืฆืื ื (ืขืืืง) ืขื ืืืฉืืง
CloudRetro ืชืืื ืืืฉืืงืื ืืืฉืื ืจืืื ืืืื CrowdPlay ื-MultiPlayer ืืงืืื ืขืืืจ ืืฉืืงื ืจืืจื. ืื ืืกืคืจ ืืฉืชืืฉืื ืืคืชืื ืืช ืืืชื ืงืืฉืืจ ืขืืืง ืืืืฉืืื ืฉืื ืื, ืื ืืจืื ืืช ืืืชื ืืฉืืง ืคืืขื ืืืฃ ืืืืื ืืืฆืืจืฃ ืืืื.ืืชืจ ืขื ืื, ืืฆืื ืืืฉืืง ืืืืืกื ืื ืืืืกืื ืืขื ื. ืื ืืืคืฉืจ ืืืฉืชืืฉืื ืืืืฉืื ืืฉืืง ืืื ืขืช ืืื ืืืฉืืจ ืืืจ.
7. ืงื ื ืืืื ืืืคืงื
ืืื ืื SAAS ืืืืื ื, ืืฉืืงื ืขื ื ืืืืืื ืืืืืช ืืชืืื ื ืื ืื ืฉืืืื ื ืืชื ืื ืืืจืืื ืืืคืงืืช. ืืขืืฆืื ืฉื ืจืื-ืขืืื ืืืคืฉืจ ืื ืืืืกืืฃ ืขืื ืขืืืืื ืืื ืืฉืจืช ืืืชืจ ืชืขืืืจื.8. ืืื ืืืืืจ ืืขื ื ืืื
ืืชืฉืชืืช ืฉื CloudRetro ืืชืืจืืช ืืฆื ืกืคืงื ืขื ื ืฉืื ืื (Digital Ocean, Alibaba, ืกืคืง ืืืชืื ืืืฉืืช) ืขืืืจ ืืืืจืื ืฉืื ืื. ืื ื ืืืคืฉืจ ืืคืขืื ืืงืื ืืืื ืจ ืฉื Docker ืขืืืจ ืืชืฉืชืืช ืืืืืืจ ืืช ืืืืจืืช ืืจืฉืช ืืืืฆืขืืช ืกืงืจืืคื bash ืืื ืืืืื ืข ืื ืขืืืช ืกืคืง ืขื ื ืืืื. ืขื ืืื ืฉืืืื ืื ืขื NAT Traversal ื-WebRTC, ืื ื ืืืืืื ืืงืื ืืช ืืืืืฉืืช ืืคืจืืก ืืช CloudRetro ืขื ืื ืคืืืคืืจืืช ืขื ื ืืืคืืื ืขื ืืืฉืืื ืฉื ืื ืืฉืชืืฉ.ืขืืฆืื ืืืจืืืื
ืขืึนืึตื: (ืื ืฉืจืช ืืกืืจืืืื ื ืฉืืืืืจ ืืขืื) ืืืคืื ืืช ืืืฉืืงืื, ืืคืขืื ืืช ืฆืื ืืจ ืืงืืืื ืืืืจืื ืืช ืืืืื ืืืงืืืืช ืืืฉืชืืฉืื. ืืืคืขื ืขืืืืื ืืืคืฆืื ืืจืืื ืืขืืื, ืืื ืขืืื ืืืื ืืืคื ืืืกืคืจ ืืคืขืืืช ืฉื ืืฉืชืืฉืื ืื-ืืื ืืช.
ืจืื: ืืืจืืืช ืืืฆืืืช ืืืฉืชืืฉ ืืืืฉ ืืขืืื ืืืชืืื ืืืืชืจ ืืกืืจืืืื ื. ืืจืื ืืงืืื ืืื ืืจืืงืฆืื ืขื ืขืืืืื ืืืืฆืขืืช WebSocket.
ืืืกืื ืืฆื ืืฉืืง: ืืืกืื ืืจืืื ืืจืืืง ืขืืืจ ืื ืืฆืื ืืืฉืืง. ืืืกืื ืื ืืกืคืง ืคืื ืงืฆืืืช ืืฉืืืืช ืืืื ืฉืืืจื/ืืขืื ื ืืจืืืง.
ืืจืืืืงืืืจื ืืจืื ืืขืืืื ื ืฉื CloudRetroืกืงืจืืคื ืืืชืื ืืืฉืืช
ืืืฉืจ ืืฉืชืืฉ ืืืฉ ืคืืชื ืืช CloudRetro ืืฉืืืื 1 ื-2 ืืืืฆืืื ืืืืืจ ืืืื, ืืจืื ืืื ืขื ืจืฉืืืช ืืขืืืืื ืืืืื ืื ืืชืืงืฉ ืืขืืื ืืจืืฉืื. ืืืืจ ืืื, ืืฉืื 3 ืืืงืื ืืืฉื ืืช ืืขืืืืืื ืขืืืจ ืื ืืืืขืืืื ืืืืฆืขืืช ืืงืฉืช ืคืื ื HTTP. ืจืฉืืืช ืืขืืืืืื ืืื ื ืฉืืืช ืืืืจ ืืื ืืืจื ืืจืื ืืื ืฉืืืื ืืงืืืข ืืช ืืขืืื ืืืชืืื ืืืืชืจ ืืฉืจืช ืืช ืืืฉืชืืฉ. ืฉืื 4 ืืืื ืืืฆืจ ืืช ืืืฉืืง. ื ืืฆืจ ืืืืืจ ืกืืจืืืื ื ืฉื WebRTC ืืื ืืืฉืชืืฉ ืืขืืื ืฉืืืงืฆื.
ืกืงืจืืคื ืืฉืชืืฉ ืืืืจ ืงืืืช ืืืฉืืื ืืฉ ืืชืื ืืขืืื
ืฆืื ืืจืืช ืืฉืืงืื ืืืจืืื ืืืืืกื ืื ืืชืื ืืขืืื ืืืืืื ืืืืืืคืื ืฉื ืืืืข ืืจื ืืืืฉืง. ื ืืื ืืขืืฉืื, ืชืงืฉืืจืช ืื ืืชืืฆืขืช ืขื ืืื ืืขืืจืช ื ืชืื ืื ืืืืืจืื ืืืืฆืขืืช
ืขืจืืฆื ืืืื ื ืืืืชื ืชืืืื. ืืืืจื ืืืื ืืื ืืคืจืื, ืืืืืจ. ืืฉืงื ืขืฆืืืืช ืฉื ืืืฉืืง ืืชืืืื ืืืจ.
ืืื ืืจืืงืฆืื ืฉื ืืจืืืื ืขืืืืจืืืืื ืขืืงืจืืื:
- WebRTC: ืจืืื ืืงืื ืฉืืงืื ืงืื ืืฉืชืืฉ ืืืืฆืื ืืืื ืืงืืืืช ืืืฉืจืช.
- ืืืืืืืจ ืืฉืืง: ืจืืื ืืืฉืืง. ืืืืืช ืืกืคืจืืืช Libretro, ืืืขืจืืช ืืกืืืืช ืืืจืืฅ ืืช ืืืฉืืง ืืชืื ืืืชื ืชืืืื ืืืืืจื ืืืืคื ืคื ืืื ืืืื ืืืจื ืงืื.
- ืืกืืจืืช ืืืฉืืง ื ืืืืืช ืื ืฉืืืืช ืืืงืืื.
- ืืงืืื ืชืืื ื/ืฉืืข: ืฆืื ืืจ ืงืืืื ืฉืืืงื ืืกืืจืืช ืืืื, ืืงืืื ืืืชื ืืจืงืข ืืืืฆืื ืชืืื ืืช/ืฉืืข ืืงืืืืืช.
ะ ะตะฐะปะธะทะฐัะธั
CloudRetro ืืกืชืื ืขื WebRTC ืืืื ืืืืืืืช ืขืืื ืืฉืืจื ืฉืื, ืื ืืคื ื ืืฆืืืื ืืคืจืืื ืฉื ืืืฉืื Golang, ืืืืืชื ืืืืจ ืขื WebRTC ืขืฆืื. ืืืื ืืื ืืืืืื ืืืืืื ืฉืขืืจื ืื ืืืื ืืืฉืืช ืืืืื ืฉื ืชืช-ืฉื ืืื ืขืืืจ ืืืจืืช ื ืชืื ืื.
WebRTC
WebRTC ื ืืขื ืืกืคืง ืืืืืจื ืขืืืช ืืขืืืช ืืืืืืช ืืืืื ืืืคืืืงืฆืืืช ืืืคืืคื ืื ืืงืืจืืื ืื ืืื ืืืืฆืขืืช ืืืฉืงื API ืคืฉืืืื.
ืืขืืจ NAT
WebRTC ืืืืขื ืืคืื ืงืฆืืื ืืืืช ื-NAT Traversal ืฉืื. WebRTC ืืืืขื ืืชืงืฉืืจืช ืขืืืช ืืขืืืช. ืืืจืชื ืืื ืืืฆืื ืืช ืืืกืืื ืืืฉืืจ ืืืชืืื ืืืืชืจ, ืืืื ืขืืช ืืฉืขืจื NAT โโืืืืืืช ืืฉ ืืชืงืฉืืจืช ืขืืืช ืืขืืืช ืืืืฆืขืืช ืชืืืื ืื ืงืจื
ืงืจื . ืืืืง ืืชืืืื ืื, ืืืฉืงื ื-API ืฉื WebRTC ืืืฆืืื ืืช ืืชืืืช ื-IP ืืฆืืืืจืืช ืฉืื ืืืืฆืขืืช ืฉืจืชื STUN ืืืขืืืจืื ืืืชื ืืฉืจืช ืืืืกืจ (ืชืืจ ) ืืืฉืจ ืื ื ืืชื ืืืฆืืจ ืืืืืจ ืืฉืืจ.ืขื ืืืช, CloudRetro ืืื ื ืื ืฆื ืชืืื ื ืื ืืืืืื. ืืืืืจื ื-peer-to-peer ืฉืื ืืื ื ืงืืืืื ืืื ืืฉืชืืฉืื, ืืื ืืื ืืฉืชืืฉืื ืืฉืจืชื ืขื ื. ืืฆื ืืฉืจืช ืฉื ืืืื ืืฉ ืคืืืช ืืืืืืช ืชืงืฉืืจืช ืืฉืืจื ืืืฉืจ ืืืฉืืจ ืืฉืชืืฉ ืืืคืืกื. ืื ืืืคืฉืจ ืื ืืคืชืื ืืจืืฉ ืืฆืืืืช ื ืื ืกืืช ืื ืืืฉืชืืฉ ืืฉืืจืืช ืืืชืืืืช IP ืฆืืืืจืืืช, ืืืืืื ืฉืืฉืจืช ืืื ื ืืืืืจื NAT.
ืืขืืจ ืจืฆืืชื ืืืคืื ืืช ืืคืจืืืงื ืืคืืืคืืจืืช ืืคืฆืช ืืฉืืงืื ืขืืืจ Cloud Gaming. ืืจืขืืื ืืื ืืืคืฉืจ ืืืืฆืจื ืืฉืืงืื ืืกืคืง ืืฉืืงืื ืืืฉืืื ืกืืจืืืื ื. ืืืฉืชืืฉืื ืืชืงืฉืจื ืืฉืืจืืช ืขื ืกืคืงืื. ืืืืคื ืืืืืจ ืื, CloudRetro ืืื ืจืง ืืกืืจืช ืืืืืืจ ืืฉืืื ืกืืจืืืื ื ืฉื ืฆื ืฉืืืฉื ืืืฉืชืืฉืื, ืื ืฉืืืคื ืืืชื ืื ืืชื ืช ืืืจืืื ืืืฉืจ ืืื ืืืจ ืื ืืชืืจืืช. ืืชืคืงืื ืฉื WebRTC NAT Traversal ืืื ืืฉืื ืืืื ืืื ืืืงื ืขื ืืชืืื ืืืืืจ ืขืืืช ืืขืืืช ืืืฉืืื ืกืืจืืืื ื ืฉื ืฆื ืฉืืืฉื, ืื ืฉืืงื ืขื ืืืืฆืจ ืืืชืืืจ ืืจืฉืช.
ืืืืกืช ืืืืื
ืืืืกืช ืืืืื ืืื ืืืง ืืืจืื ืืฆืื ืืจ ืืชืืจื ืจืืืช ืืืจืืื ืืืงื. ืืื ื ืืื ืฆืืจื ืืืขืช ืื ืคืจื ืฉื ืงืืืื ืืืืื VP8/H264, ืืื ืืื ืช ืืืืฉืืื ืืืืื ืืขืืืจ ืื ืืืืื ืืช ืืคืฉืจืืืืช ืืืืจืืช ืืกืืจืืืื ื ืฉื ืืืืื, ืื ืคืืช ืืืืื ืืืชื ืืืืช ืืืชื ืฆืคืืื ืืืืชืืื ืืช ืืื ืืืืืืจ.
ืืืืกืช ืืืืื ืขืืืจ ืฉืืจืืช ืกืืจืืืื ื ืืื ืืืชืืจืช ืืืืืื ืฉืืืืืืจืืชื ืืืื ืืืืืื ืฉืืื ืืงืืืื ืืืืื + ืืื ืืฉืืืืจ ืืจืฉืช + ืืื ืืคืขื ืื ืืืื ื ืืื ืืื ืืืคืฉืจ. ืื ืืกืฃ, ืชืืืื ืืงืืืื ืืืื ืืืืืช ืขืงืื ืืืชืืฉื. ืืืง ืืืืคืจืขืืช ืืงืืืื ืืื ื ืืืืช - ืืืืืื, ืืื ื ื ืืืืืื ืืืขืืืฃ ืืื ื ืงืืืื ืืจืืืื ืขื ืคื ื ืืืื ืงืืฆืื ืืืื ื ืคืขื ืื ืงืื ืื ืืืชืจ, ืื ืืืฉืชืืฉ ืืืืืกื ืื ืขืงืืืช.
ืืจืขืืื ืืืืืจื ืืืืกืช ืืืืื ืืื ืืืกื ืคืืกืืช ืืืืข ืืืืชืจืืช ืชืื ืฉืืืจื ืขื ืจืืช ืืืืง ืืงืืืืช ืขืืืจ ืืืฉืชืืฉืื. ืื ืืกืฃ ืืงืืืื ืืกืืจืืช ืชืืื ื ืกืืืืืช ืืืืืืช, ืืืืืืจืืชื ืืกืืง ืืช ืืืกืืจืช ืื ืืืืืช ืืืงืืืืช ืืืืื, ืื ืฉืจืง ืืืืื ืฉืืื ื ืฉืื. ืืคื ืฉื ืืชื ืืจืืืช ืืืืืืื ืขื Pacman, ืจืง ื ืงืืืืช ืืืคืจื ืฆืืืืืืช ืืฉืืืจืืช.
ืืฉืืืื ืฉื ืืกืืจืืช ืืืืื ืืืืฆืขืืช Pacman ืืืืืืืืืืกืช ืืืืื
ืืืืคื ืืืื, ืืืืืจืืชื ืืืืกืช ืืฉืืข ืืฉืืื ื ืชืื ืื ืฉืื ื ืืชื ืืชืคืืก ืขื ืืื ืื ื ืืื. Opus ืืื ืืจืืข ืงืืืง ืืืืืื ืืขื ืืืืฆืืขืื ืืืืืื ืืืืชืจ. ืืื ื ืืขื ืืฉืืจ ืื ืฉืืข ืขื ืคืจืืืืงืื ืืืืืืจื ืืกืืืจ ืืืื RTP (Real Time Transport Protocol). ืืื ืืืฉืืื ืฉืื ื ืืื ื-mp3 ื-aac, ืืืืืืืช ืืืืื ืืืชืจ. ืืฉืืื ืืืจื ืืื ืืกืืืืืช 5~66,5ms.
Pion, WebRTC ืืืืื ื
ืคืืื ืืื ืคืจืืืงื ืงืื ืคืชืื ืฉืืืื ืืช WebRTC ืืืืืื ื. ืืืงืื ืืืขืืคืช ืืจืืืื ืฉื ืกืคืจืืืช C++ WebRTC ืืงืืจืืืช, Pion ืืื ืืืฉืื ืืงืืจื ืฉื Golang ืฉื WebRTC ืขื ืืืฆืืขืื ืืืืื ืืืชืจ, ืฉืืืื Go ืืืงืจืช ืืจืกืืืช ืืคืจืืืืงืืื WebRTC.ืืกืคืจืืื ืื ืืืคืฉืจืช ืกืืจืืืื ื ืขื ืืจืื ืืืื ืื ืืืื ืื ืขื ืืืืื ืฉื ืชืช-ืฉื ืืื. ืืฉ ืื ืืืฉืื ืืฉืื ืฉื STUN, DTLS, SCTP ืืื '. ืืืื ื ืืกืืืื ืขื QUIC ื-WebAssembly. ืกืคืจืืืช ืืงืื ืืคืชืื ืืื ืขืฆืื ืืื ืืฉืื ืืืืื ืืืฉ ืืื ืขื ืชืืขืื ืืขืืื, ืืืืขืืช ืฉื ืคืจืืืืงืื ืจืฉืช ืืืืืืืืช ืืื ืืืืช.
ืงืืืืช Pion, ืืจืืฉืืช ืืืฆืจ ื ืืื ืืืื, ืชืืกืกืช ืืืื, ืขื ืืจืื ืืืื ืื ืืืืืชืืื ืฉืืชืงืืืืื ืขื 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 } } }
ืืืืืจืจ ืคื ืืื / ืื ืืคื ืืืืฆื
ืชืื ืืช Golang ืื ืืชืืืื ืืืืคื ืืืฉืื ืืืงืจื ืืฉืืืืฉ ืฉืื ื-CrowdPlay ื-Multiple Player. ืืคื ืืคืืก ืื, ืื ืื ืืกืืช ืืืฉืชืืฉ ืืืืจ ืืื ืืืื ืืช ืืขืจืืฅ ืืื ืืกื ืืืจืืื. ืืืืืช ืืืฉืืง ื ืคืจืกืช ืืืืจ ืืื ืืื ืืืฉืชืืฉืื ืืืืชื ืืืจ. ืืืจื ืื, ืื ื ืืฉืืืื ืืช ืืืืงืช ืืฆื ืืืฉืืง ืืื ืืกืคืจ ืืคืขืืืช ืืฉืืง ืฉื ืืฉืชืืฉืื ืฉืื ืื.
ืกื ืืจืื ืืื ืืคืขืืืช ืฉืื ืืชืืกืจืื ืืช ืฉื ืืืื ื
ืืืื ื ืื ืืืฉืื. ืืขืจืืฅ ืืืื. ืืืฉืืืื ืืืกืืื, ืขืจืืฅ Go ืืื ืคืฉืื ืืจื ืงืื ืืืชืจ ืืืคื ืืืืจืืขืื ืืืงืืื ืืืฉืจืฉืืจืื, ืื ืืขืจืืฅ ืืื ื ืืกืคืง ืืช ืืืืฆืืขืื ืืืืืื ืืืืชืจ. ืืฉ ืืืืืื ืืกืืื ืืืจืื ืืชืืช ืืขืจืืฅ. ืื ืขืฉืืชื ืืื ืืชืืืืช ืืืืฉืื, ืืืืชื ืืืืฉ ืื ืขืืืื ืืขืจืืื ืืืืืืื ืืขืช ืืืืคืช ืขืจืืฆืื ืืื ืืืืขื ืืช ืืืืฆืืขืื.
ืื ืืกืฃ, ืืืกืฃ ืืืฉืคื ืืืืื ื ืืื ื ืื ืืื, ืื ืฉืืืจื ืืขืืชืื ืืืคืกืงืืช ืืจืืืืช ืืืืคื ืืืฉืื. ืื ืืืื ืืคืจืืข ืืืคืืืงืฆืืืช ืืกืืจืืืื ื ืืืื ืืืช.
ืฉืึตื
ืืคืจืืืงื ืืฉืชืืฉ ืืกืคืจืืืช ืืงืื ืืคืชืื ืืงืืืืช Golang VP8/H264 ืขืืืจ ืืืืกืช ืืืื ื-Libretro ืขืืืจ ืืืืืืืจืื ืฉื ืืฉืืงืื. ืื ืืกืคืจืืืช ืืืื ืื ืคืฉืื ืขืืืคืืช ืฉื ืกืคืจืืืช C ืืฉืืืืฉ ื-Go
ืฉืึตื . ืืืง ืืืืกืจืื ืืช ืืคืืจืืื ืืคืืกื ืื ืฉื ืืืื ืฆ'ืืื ื . ืืขืืืช ืฉื ืชืงืืชื ืืื:- ืืืกืจ ืืืืืช ืืชืคืืก ืืชืจืกืงืืช ื-CGO, ืืคืืื ืขื Golang RecoveryCrash;
- ืืืฉืืื ืืืืืื ืฆืืืืจื ืืงืืืง ืืืืฆืืขืื ืืืฉืจ ืืื ื ื ืืกืืืืื ืืืืืช ืืขืืืช ืืคืืจืืืช ื-CGO.
ืืกืงื ื
ืืฉืืชื ืืช ืืืืจื ืฉืื ืืืืื ืฉืืจืืชื ืืฉืืง ืืขื ื ืืืืฆืืจ ืคืืืคืืจืื ืฉืขืืืจืช ืื ืืฉืืง ืืฉืืงื ืจืืจื ื ืืกืืืืืื ืขื ืืืืจืื ืฉืื ืืืื ืืจื ื. ืคืจืืืงื ืื ืื ืืื ืืชืืคืฉืจ ืืื ืกืคืจืืืช ืคืืื ืืชืืืืช ืงืืืืช ืคืืื. ืื ื ืืกืืจ ืชืืื ืขื ืืืชืคืชืืืช ืืืื ืื ืกืืืืช ืฉืื. ืืืฉืงื ื-API ืืคืฉืืืื ืฉืกืืคืงื ืขื ืืื WebRTC ื-Pion ืืืืืื ืืื ืืืจืฆืื ืืืงื. ืืืืืื ืืจืืฉืื ื ืฉืื ืืงืื ืกืคื ืฉืืืจืจื ืืืืชื ืฉืืืข, ืืืจืืช ืฉืื ืืื ืื ืืืข ืืืงืื ืืชืงืฉืืจืช ืขืืืช ืืขืืืช (P2P).
ืืืจืืช ืงืืืช ืืืื ืืืจืฆืื, ืืืจืืช P2P ืืื ืืื ืชืืื ืืืจืื ืืืื ืืืืขื ืืืืฉื. ืืื ืฆืจืืื ืืืชืืืื ืขื ืืืืจืืืืช ืฉื ืืจืืืืงืืืจืืช ืจืฉืช ืืชืืงืืช ืืื IP ื-NAT ืืื ืืืฆืืจ ืกืฉื ืขืืืช ืืขืืืช. ืืืืื ืืขืืืื ืขื ืืคืจืืืงื ืืื, ืฆืืจืชื ืืืข ืจื ืขื ืจืฉืชืืช ืืืืคืืืืืืฆืื ืฉื ืืืฆืืขืื, ืื ืื ื ืืืืืฅ ืืืืื ืื ืกืืช ืืื ืืช ืืืฆืจื P2P ืืืืฆืขืืช WebRTC.
CloudRetro ืขืื ื ืขื ืื ืืงืจื ืืฉืืืืฉ ืฉืฆืืคืืชื ืืื ืื ืงืืืช ืืืื ืฉืื ืืชืืจ ืืืืืจ ืจืืจื. ืขื ืืืช, ืื ื ืืืฉื ืฉืืฉ ืืจืื ืชืืืืื ืืคืจืืืงื ืฉืื ื ืืืื ืืฉืคืจ, ืืื ืืคืืืช ืืจืฉืช ืืืืชืจ ืืืื ื ืืืืฆืืขืืช, ืืชื ืืจืคืืงืช ืืฉืืง ืืืืืืช ืืืืื ืืืชืจ, ืื ืืืืืืช ืืฉืชืฃ ืืฉืืงืื ืืื ืืฉืชืืฉืื. ืื ื ืขืืื ืงืฉื ืขื ืื. ืขืงืื ืืืงืฉื
ืคึผืจืึนืึถืงื ืืชืชืืื ืื ืื ืืชื ืืืื ืืช ืื.
ืืงืืจ: www.habr.com