上周末两位大佬大老远跑过来,一起探讨了下云游戏涉及的各种技术难题。其中谈到了一个技术难题:怎么样能做到随着客户端数量增长,服务器非线性增长。说白了就是将客户端里重复的计算摘出来,进行统一计算,从而降低服务器的个数和能耗。目前的情况是,增加一个客户端,就需要在云端相应地增加一台服务器,也就是线性增长。
那么怎么实现非线性增长呢?
首要问题就是选引擎。最好的方案就是找一款优秀的免费开源引擎,进行深度定制。再次重申,Unity不开源,改不了。即使公司花费昂贵的价钱购买了源码阅读权限也难改,因为不开源就不能形成社区,遇到问题只能自己解决,代价高昂。UE4倒是开源,也行成了社区,但是这种重量级引擎跟Linux操作系统的代码量有一拼,没有大几十的引擎程序员不敢深度定制。再说这两个引擎你只有使用权,改了知识产权也不是你的。
再说一些软件和硬件方面的背景,才能更好地去设计分布式计算。
一、目前引擎整体有个趋势,CPU承担的工作越来越多地向GPU转移。比如说GPU-Driven Rendering Pipeline,就是将以前在CPU里进行的可见性查询,以及耗时的图形API调用转移到GPU里。以后骨骼变换矩阵计算,甚至是AI等等都可以移到GPU里进行,更不用说实时光追效果了。
二、目前一个主板上可以支持很多块显卡。以后GPU会承担越来越多的工作,所以主板上支持越来越多的显卡是趋势。GPU内部都有自己的显存,访问自己的很快。GPU之间总线或者NV link之类的传输数据,速度不知道怎么样,需要实测。总之不会太快,所以尽量避免GPU之间传输数据。
三、计算集群需要很多的主机协同计算,主机之间传输数据的速度应该还会降不少,更要尽力避免数据传输。
最后就是分解引擎的计算模块了。

探讨了如何通过减少客户端中重复的计算任务,实现云游戏中服务器资源的非线性增长,介绍了选择合适引擎的重要性及分布式计算的设计思路。
最低0.47元/天 解锁文章
16万+

被折叠的 条评论
为什么被折叠?



