云游戏,是一种以云计算技术为基础的在线游戏方式,玩家本地不需要运行任何游戏,就可以直接通过设备来接收运行在远程服务器上面游戏信息来进行游玩。简单来讲,就是玩家可以借助云服务器高配机器的计算能力,在自己的手机、平板、笔记本等多种设备上玩各种游戏,并且完全不需要担心硬件的配置与性能问题。我们常用的Windows远程桌面采用的就是类似的原理来实现(侧重点不同,不涉及到云),和传统游戏本质上的差异在于把原来在本地机器上执行的逻辑、渲染计算全部交给远端的服务器来做

从流程上来讲大概如下几个步骤,

  1. 云服务器打开并运行玩家指定的游戏(虚拟化或者物理机运行,GPU 虚拟化的方案有英伟达的 GRID、AMD 的 MxGPU 、 Intel 的 GVT-g)

  2. 服务器通过Hook等方式抓取游戏画面以及声音信息并编码成常见的流媒体格式(画面:H264、H265、HEVC,声音:opus、aac)

  3. 服务器通过网络协议发送给客户端(TCP、UDP、HTTP、WebSocket等方式)

  4. 玩家收到信息后进行解析并显示与播放(软解码、硬解码)

  5. 玩家发送控制指令给云服务器,比如按下了哪些按键(可以使用SDL收集,UDP发送)

  6. 云服务器把控制指令传入到游戏里进行响应,再次把画面信息发送给你

这里给出一个开源项目的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位海外资深游戏开发者将出现在下期圆桌论坛,敬请期待!

2022年了,云游戏离我们还有多远?【文末附彩蛋】相关推荐

  1. 开启sketchup超速云渲染模式,文末附彩蛋!

    2019年3月,渲云效果图客户端开放支持sketchup软件--一款专门配合CG工作人员设计过程研发的3D模型设计软件,可以创作出草稿.线稿.透视.渲染等不同显示模式,可将自己的手绘风格融入到模型表现 ...

  2. 通过码云来学习Git的进阶技能(文末附福利!)

    写在前面: 博主是一名大数据的初学者,昵称来源于<爱丽丝梦游仙境>中的Alice和自己的昵称.作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样 ...

  3. 杨彪 | 一次线上游戏卡死的解决历程(文末赠书福利)

    题图:StartupStock@Pixabay 编辑:冷锋 作者:杨彪 本文首发于简书云时代构架杨彪 http://www.jianshu.com/p/7885bbf153f5 事故的发生详细过程 故 ...

  4. 云评测 | OpenStack智能运维解决方案 @文末有福利!

    戳蓝字"CSDN云计算"关注我们哦! 文章摘自 | <OpenStack架构分析与实践> 谈到OpenStack,一个难以避免的话题就是运维,对于OpenStack的运 ...

  5. 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)

    目录 第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾) 试题 A: 九进制转十进制 试题 B: 顺子日期 试题 C: 刷题统计 试题 D: 修剪灌木 试题 E: X 进制减法 试题 F: ...

  6. Unity 简单手机小游戏 - 3D重力滚球(文末源码)

    游戏效果图: 目前做了5个关卡 通过陀螺仪使得小球有运动的力 public class groy : MonoBehaviour {float x;float y;Gyroscope go;void ...

  7. 2022年,我们为什么要学习C++?(文末附完整C++后端学习路线)

    "C++已死" 大学时代,我就听过这样的说法--差不多十多年前的事儿了.那时候至少在美国,Java已经成了各公司的主流语言.程序员也许都很熟悉Joel Spolsky在2005年1 ...

  8. 2022 年,阿里内推 Java 后端面试题,文末附面试福利

    阿里一面题目: osi 七层网络模型,五层网络模型,每次层分别有哪些协议 死锁产生的条件, 以及如何避免死锁,银行家算法,产生死锁后如何解决 如何判断链表有环 虚拟机类加载机制,双亲委派模型,以及为什 ...

  9. JS实现打地鼠小游戏案例,文末附素材

    思路: 1.随机冒出老鼠 2.出来后要回去 3.出来以后点击它 点击到  切换成击中效果的图片 分数累加 知识点 随机数  math 对象 dom 定位元素 对属性值的修改  src 击打效果  给它 ...

最新文章

  1. 【转载】【贪心】各种覆盖问题
  2. ubuntu体验python_在Ubuntu下配置舒服的Python开发环境
  3. git push github SSL报错处理
  4. small2java_java类
  5. python中tkinter的使用-中
  6. Graph(2014辽宁ACM省赛)
  7. java程序经过编译后会产生byte code_Java 虚拟机(JVM)内存模型
  8. 机器学习九大挑战(转载)
  9. 关于VSS上的项目源码管理的注意问题
  10. 几种常见的微服务架构方案——ZeroC IceGrid、Spring Cloud、基于消息队列、Docker Swarm
  11. 公安装备效能评估系统软件
  12. 如何实现pdf转换成cad呢?
  13. ceph rbd mysql_ceph rbd操作
  14. Boost serialization
  15. vue子组件修改props传进来的值、回调函数
  16. spring data jpa 执行sql
  17. sysbench花式采坑之一:自增值导致的TPS不可靠
  18. composer windows 下面内存溢出 Allowed memory size of 1610612736 bytes exhausted
  19. 物联网趣谈-我接触的第一个设备
  20. 线性代数-矩阵及其运算(总结)

热门文章

  1. 微软流媒体服务器直播,流媒体服务器Flussonic Media Server对直播流进行录制
  2. android模拟器装包,逍遥模拟器如何安装本地应用包apk?
  3. 用Python蹭别人家图片接口,做一个【免费图床】吧
  4. tf.executing_eagerly()
  5. vsftp中anon_world_readable_only参数具体使用
  6. 年薪五万程序员的生活及他的理财梦
  7. 阿里云储道深度解析存储系统设计——NVMe SSD性能影响因素一探究竟
  8. SMT贴片加工防静电基础知识
  9. 3D人体姿态估计论文汇总(CVPR/ECCV/ACCV/AAAI)
  10. python plt pyplot matplotlib绘图时形状异常