云游戏,是一种以云计算技术为基础的在线游戏方式,玩家本地不需要运行任何游戏,就可以直接通过设备来接收运行在远程服务器上面游戏信息来进行游玩。简单来讲,就是玩家可以借助云服务器高配机器的计算能力,在自己的手机、平板、笔记本等多种设备上玩各种游戏,并且完全不需要担心硬件的配置与性能问题。我们常用的Windows远程桌面采用的就是类似的原理来实现(侧重点不同,不涉及到云),和传统游戏本质上的差异在于把原来在本地机器上执行的逻辑、渲染计算全部交给远端的服务器来做。
从流程上来讲大概如下几个步骤,
云服务器打开并运行玩家指定的游戏(虚拟化或者物理机运行,GPU 虚拟化的方案有英伟达的 GRID、AMD 的 MxGPU 、 Intel 的 GVT-g)
服务器通过Hook等方式抓取游戏画面以及声音信息并编码成常见的流媒体格式(画面:H264、H265、HEVC,声音:opus、aac)
服务器通过网络协议发送给客户端(TCP、UDP、HTTP、WebSocket等方式)
玩家收到信息后进行解析并显示与播放(软解码、硬解码)
玩家发送控制指令给云服务器,比如按下了哪些按键(可以使用SDL收集,UDP发送)
云服务器把控制指令传入到游戏里进行响应,再次把画面信息发送给你
这里给出一个开源项目的GitHub链接(鎏光云游戏引擎),可以进一步了解云游戏的框架原理 https://github.com/ksyun-kenc/liuguang
英伟达的GPU虚拟化框架示意图
随着摩尔定律被打破以及区块链技术的流行,我们购买一个高配新硬件的成本越来越高(尤其是显卡),人手一个顶配的主机从某种程度上来说也是一种浪费。而通过云游戏,我们无需购买昂贵的计算机硬件就可以体验到3A大作,也可以更好的将资源集中起来充分利用,对于开发团队而言也能很好的解决外挂问题。当然,理论无法代表现实。实际上,云游戏面临情况要复杂的多,这些问题主要在集中在体验和成本两个方面。
从体验上来说,核心问题在于高延迟和低画质。首先,从物理层面来讲,延迟是无法避免的,即使是本地的游戏也要面临输入延迟、渲染流水线延迟、垂直同步、屏幕刷新延迟等(合计低于30ms),而网络延迟一般比这些合计还要大的多(跨半球的通信即使按照光速计算也至少有30ms的延迟)。为了解决这个问题,我们最核心的办法减小传输流量,包括更好的数据编码方式(如H265)、满足需求的情况下尽量降低画质等,其次还要在多个主要城市都部署运算中心(IDC),利用边缘计算等技术缓解延迟。不过,其中的降低画质又会与玩家的需求冲突,毕竟应该没人会想用480P的画质去玩3A游戏。
流量优化
那为什么目前动辄1080P甚至4K的视频,我们都可以流畅的播放呢?主要的问题还是在于视频的信息是固定的数据流,可以被各个网络节点缓存和利用的,因为所有人看到的第X秒的画面都一定是一样的。但是游戏是实时渲染,每个玩家每个时刻的操作都不一样,所以不同玩家看到的画面也就不一样,几乎没办法缓存后共享。此外视频缓存完后就可以释放服务器的上行带宽给其他人用,而云游戏无法做到。(即使5G投入使用,也只是手机到基站那一段,基站到机房还是靠光纤)
同时,这也引出了另一个问题,成本与商业化。由于数据无法共享,大规模的云游戏运行会使流量急剧增加(传统网络游戏往往只传输很少的信息),即使你的网络带宽够用,你的流量成本也只增不减。所以,目前的云游戏的收费模式都是采用类似用户订阅的方式,而且对不同的画质、游戏内容、时长都有一定的限制。如果这个成本不能下来,玩家可能还是买一台主机更为划算些。
边缘计算示意图
云游戏从概念的诞生到如今的逐步铺开的试验性落地,已经20 余年,确实有很多问题都得到了极大的改善。CPU、内存、显卡的虚拟化,边缘计算的实践,云服务基础设施的搭建,编码与解码技术的发展,5G和Wifi6的推进(每一项技术都非常复杂),让很多云游戏平台在30帧以上、720P画质也可以保持30ms以下网络延迟(虽然目前规模还有限)。国内的网易云游戏、腾讯Start、YOWA、JYGame、天翼云、格来云,国外的Luna(亚马逊)、GeForce Now(英伟达)、xCloud(微软)等平台一直在持续的运作,加上产业链上Epic、Steam、华硕、华为、Intel等相当数量的企业都仍然在这个领域探索着,前面提到技术问题和商业问题可能都会随着时间的推移逐步得到解决。
关于云游戏更多的细节、问题以及发展问题,建议大家关注一下Incredibuild官方近期举办的圆桌论坛——《云游戏开发面面观:机会、障碍与应对方案》。来自Epic Games VP、AWS Game Tech技术专家、Proletariat工作室(咒语破碎)首席工程师以及国内Top5游戏工作室资深工程师,会从云游戏开发宏观大势、面临障碍与应对方案到具体游戏开发技术经验进行交流与分享,探索更多维度的内容与细节。包括且不限于,
迁移云端有哪些障碍,如何克服?
最佳云模型及游戏工作室的DevOps
AAA与独立游戏工作室使用云端的主要差异
虚幻引擎会走云路线吗?
转型云端的可行方案及实用工具
另外,回复“云游戏白皮书”,也可以直接下载IB官方提供的白皮书——《虚幻引擎云上加速—基准测试实践》和一本云游戏调研报告。《全方位加速游戏开发》《游戏开发领域最新趋势》等更多资料则需要大家自行关注Incredibuild的官方账号来获取。
扫描图片底部二维码,解锁更多游戏开发技术分享
Part1: 海外专家线上圆桌论坛——
《云游戏开发面面观:机会、障碍与应对方案》
来自Epic Games ,AWS Game Tech以及Proletariat工作室的云游戏开发实践指南。
Part2:线上技术沙龙 ——
《引擎渲染之遮挡剔除PVS应用与优化》
遮挡剔除可以极大减少引擎渲染模型的数量,降低DrawCall压力,尤其适用于开放世界类游戏。本次主要分享传统遮挡剔除PVS方案在实际应用中遇到的问题与优化策略。
IncrediClub 是一个针对中高级C++开发者的技术社群,旨在聚集C++领域优秀开发者及内容创作者,定期邀请海内外技术专家进行线上分享、传播技术资料,让更多的开发者了解Incredibuild 并分享我们的品牌福利,本期活动为游戏开发领域专场活动。
下期活动剧透:来自索尼 Playstation 高级工程师等4位海外资深游戏开发者将出现在下期圆桌论坛,敬请期待!