软件即服务,基础架构即服务,平台即服务,通信平台即服务,视频会议即服务,那么,游戏即服务(Game as a Service)如何呢?已经有不少科技公司试水云游戏,最著名的要数Google的Stadia。对WebRTC来说,Stadia已经算是老朋友了,但是其他云游戏也能以同样的方式运用WebRTC吗?
Thanh Nguyen研究了他自己的开源项目CloudRetro在这方面是否可行。CloudRetro基于很受欢迎的WebRTC的pion库。在这篇文章中,Thanh对他如何构建项目进行了框架性的回顾与思考,以及他在此过程中遇到的一些挑战。
loudretro.io中megaman x4的屏幕截图
简介
为什么云游戏才是未来
云游戏仍然面临技术挑战
当前的目标是实现极低的延迟,以确保游戏输入与媒体之间的gap尽可能小。因此,传统的视频流传输方法不适用于将图像/音频流传输到客户端的情况。
开源项目CloudRetro
CloudRetro的功能性
便携式游戏体验
即点即玩,无需下载安装
在浏览器上运行,无需任何软件即可启动
游戏会话可以在多个设备之间共享,并存储在云中方便下次游戏
游戏可播可玩,并且多个用户可以加入同一游戏
类似于TwitchPlayPokemon的人群播放,但更实时,更无缝
在线多人游戏,无需网络设置即可进行离线游戏。现在可以在CloudRetro上通过网络与2位玩家一起玩《武士对决》
架构
要求与技术配置
架构设计
用户流
Inside the worker
WebRTC
NAT Traversal
视频压缩
音频压缩
Write CloudRetro in Golang
Go Channel In Action
Fan-in / Fan-out
Golang的劣势
CGO
即使使用Golang Recovery,也无法捕获CGO的崩溃
无法确定CGO下的细粒度问题就无法定义性能瓶颈
总结
相关文章: