上周末两位大佬大老远跑过来,一起探讨了下云游戏涉及的各种技术难题。其中谈到了一个技术难题:怎么样能做到随着客户端数量增长,服务器非线性增长。说白了就是将客户端里重复的计算摘出来,进行统一计算,从而降低服务器的个数和能耗。目前的情况是,增加一个客户端,就需要在云端相应地增加一台服务器,也就是线性增长。

那么怎么实现非线性增长呢?

首要问题就是选引擎。最好的方案就是找一款优秀的免费开源引擎,进行深度定制。再次重申,Unity不开源,改不了。即使公司花费昂贵的价钱购买了源码阅读权限也难改,因为不开源就不能形成社区,遇到问题只能自己解决,代价高昂。UE4倒是开源,也行成了社区,但是这种重量级引擎跟Linux操作系统的代码量有一拼,没有大几十的引擎程序员不敢深度定制。再说这两个引擎你只有使用权,改了知识产权也不是你的。

再说一些软件和硬件方面的背景,才能更好地去设计分布式计算。

一、目前引擎整体有个趋势,CPU承担的工作越来越多地向GPU转移。比如说GPU-Driven Rendering Pipeline,就是将以前在CPU里进行的可见性查询,以及耗时的图形API调用转移到GPU里。以后骨骼变换矩阵计算,甚至是AI等等都可以移到GPU里进行,更不用说实时光追效果了。

二、目前一个主板上可以支持很多块显卡。以后GPU会承担越来越多的工作,所以主板上支持越来越多的显卡是趋势。GPU内部都有自己的显存,访问自己的很快。GPU之间总线或者NV link之类的传输数据,速度不知道怎么样,需要实测。总之不会太快,所以尽量避免GPU之间传输数据。

三、计算集群需要很多的主机协同计算,主机之间传输数据的速度应该还会降不少,更要尽力避免数据传输。

最后就是分解引擎的计算模块了。

引擎里哪些功能可以统一计算呢?游戏类型不同,方案也不一样,所以以我最熟悉的MMO RPG为例简单分析下。设想有一个大场景,里面同时有几百个玩家,分布在场景里。

游戏的计算主要在CPU和GPU里进行,分开来讨论。

CPU上的主要任务有:客户端逻辑处理、场景树更新、四叉树/八叉树更新、视锥查询、角色骨骼动画、粒子系统更新、图形API调用。

单机计算模式下,每个玩家的机器上都需要根据自己、远端玩家、NPC的移动而更新场景树和四叉树/八叉树,角色骨骼动画、粒子系统也需要独自更新。而实际上这些都有很大的冗余。比如说,我的周围有几十个玩家,在我的机器上,需要去更新关于周围玩家的上述操作,在其他玩家的机器上也需要更新,而实际上只需要计算一次就可以了。有些操作,例如图形API调用,每个人的机器上看到的东西都不一样,所以不能优化。

GPU承担各种渲染工作,以延迟着色为例:Pre-Z、GBuffer阶段、累加直接光照、计算SSR、累加镜面反射、各种后期处理、动态天空渲染、动态海水、GI、阴影贴图等。

这里面也有可以减少的冗余计算。动态天空渲染、动态海水、阴影贴图都可以单独计算。现在有的游戏项目想同时支持动态光照和GI,那预烘焙Lightmap+Light probe那一套就不能用了,需要实时计算。GI的计算耗时很严重,另外由于光线的传播是全局的,独自计算会有大量冗余,所以这部分功能应该单独抽出来。

由于时间关系上面都是不太严谨的理论推导,并且实际动手还会遇到各种技术细节需要解决。不过说好了不熬夜了,脑子也不转了。

PS:云游戏还有个天然的优势,就是可以将客户端和服务器整合在一起,又会产生无限的可能,最起码你再不用担心什么作弊了,并且国战系统能够支持同服的人数会有几个数量级的提升(内部高速数据线的传输肯定会比网络传输大很多),以后有时间再分析吧。

深度定制游戏引擎实现云服务器的非线性增长相关推荐

  1. 服务器挂游戏用什么系统,挂游戏用什么云服务器

    挂游戏用什么云服务器 内容精选 换一换 待挂载的磁盘与弹性云服务器属于同一可用分区.如果是非共享盘,待挂载的磁盘为"可用"状态.如果是共享盘,待挂载的磁盘为"正在使用&q ...

  2. 怎么用云服务器搭建游戏,搭建游戏用什么云服务器

    搭建游戏用什么 现在的游戏服务器,一般都会挑选 不可贪图便宜 现在的服务器市场就是一分钱一分货,想要花低价钱买到高性能的,尤其是这种专业性能的产品,几乎是不可能的事情.因此,对于那些有成本预算的企业, ...

  3. 网页游戏怎么用云服务器挂机,网页游戏挂机用云服务器可以吗

    网页游戏挂机用云服务器可以吗 内容精选 换一换 云手机(Cloud Phone,简称CPH),是基于华为云裸金属服务器虚拟出的带有原生安卓操作系统,同时具有虚拟手机功能的云服务器.简单来说,云手机=云 ...

  4. Ejoy2D:“风魂”游戏引擎作者云风的又一力作

    摘要:Ejoy2D是一款图形引擎.基于OpenGL ES的图形库.Ejoy2D是国内简悦(EJOY)游戏公司所开发的一款游戏图形引擎,旨在帮助开发人员轻松地嵌入到游戏引擎中,方便开发者定制自己所需的功 ...

  5. Unity游戏Server放在云服务器上

    首先在云服务器上安装数据库与导入数据库信息. 记得要有c#的数据库连接,这样服务器才可以进行连接 把c#服务器源码中的复制本地改成true 每一部分都类似修改 服务器本地修改为内网地址(必须修改,绝对 ...

  6. 腾讯游戏深度定制 ROG游戏手机3天生高能释放

    作为 一年一度的电竞盛宴,7月23日,ROG 2020新品发布会如约而至,其中ROG游戏手机3的正式发布成为整个发布会最大亮点.在成功打造了ROG游戏手机2之后,ROG游戏手机3同样由腾讯游戏深度定制 ...

  7. gpu云服务器运行游戏_GPU云服务器可以挂载大型游戏吗?

    随着科技的发展,云服务器和网络游戏都是互联网发展的产物.现在随着网络的广泛发展和使用,云服务器和游戏都是现在比较火热的行业,云服务器基于云计算技术的发展,用于存放网站数据,在现在的生产工作中占据重要地 ...

  8. 游戏上云成标配 云服务器该怎么选?

    在疫情影响下,各大游戏平台峰值不断上涨,在<中国游戏产业研报>里数据,中国游戏玩家人数到今年第一季度已经超过6.6亿,第一季度收入达到770亿,环比增长9%. 游戏行业在这两年可谓是达到鼎 ...

  9. gpu云服务器运行游戏_GPU云服务器可以挂在大型游戏吗

    随着科技的发展,云服务器和网络游戏都是互联网发展的产物.现在随着网络的广泛发展和使用,云服务器和游戏都是现在比较火热的行业,云服务器基于云计算技术的发展,用于存放网站数据,在现在的生产工作中占据重要地 ...

  10. 滴滴云服务器快速配置搭建滴滴云GPU云服务器搭建深度学习环境

    滴滴云GPU云服务器搭建深度学习环境 1.创建云服务器 1.1注册滴滴云 首先注册滴滴云,并进行实名认证,否则无法创建云服务器.点击"控制台",进入控制台页面. 1.2选择配置 点 ...

最新文章

  1. element ui input视图没刷新_聊聊前端 UI 组件:组件体系
  2. 框架有几层_如何设计一个自动化框架
  3. C#实现动态生成Word
  4. CSS-解决inline-block空隙的最好方法
  5. hihocoder 1866 XOR
  6. KVM虚拟化崛起:你选Ubuntu还是Red Hat?
  7. Lync常识之Lync Server有哪些角色
  8. HBuilderX连接夜神模拟器
  9. 老人信息管理系统c语言,基于STM32的老人吃药提醒器——智能电子药盒设计(原理图、PCB源文件、源码、APP源码等)...
  10. 软件测试自学到什么程度可以开始找工作?
  11. 国际金融学试题及参考答案
  12. vue中iframe嵌套页面父子组件互相通信
  13. ros 发布信息频率_ROS:消息发布器和订阅器(c++)
  14. 测试有没有说梦话的软件,抖音上记录梦话的软件是什么 记录梦话的软件介绍...
  15. 现在选择学JAVA,2023月薪过万大有前途~
  16. tenda v311r
  17. LightningChart数据可视化工具图形控件教程51-BarSeries3D
  18. 找工作成功等于入门,那简历怎么写?心得分享(附面试)
  19. SolidWorks 2012 x64 Edition 快速入门
  20. IO流 ---有用 序列化和transient问题

热门文章

  1. 降维算法原理篇:主成分分析PCA、奇异值分解SVD、因子分析法FA、独立成分分析ICA等原理详推
  2. ckeditor拖拽添加html,CKEditor插入HTML
  3. 有学生表Student, 课程表Course, 学生选课表StudentCourse
  4. html入住登记源码,酒店客户入住登记管理系统设计与实现.doc
  5. java 获取文件后缀及根据文件扩展名判断文件是否图片格式
  6. 哈铁职业学院 计算机,--哈尔滨铁道职业技术学院
  7. IntelliJ IDEA主题背景设置豆沙绿护眼色
  8. ocr初始化失败怎么办_电脑提示应用程序正常初始化失败如何解决?
  9. 解谜游戏中谜题与剧本
  10. centos 添加路由命令