正文
虽有如此难度,但“千人同屏”仍被轻易地附加在各类概念化的描述之后,看似可以被轻易地实现。
这里想分享下我们理解的“千人同屏”:
用户可以在各式各样的虚拟人中无限制地选择自己喜欢的风格。在千人同屏技术的加持下,整个虚拟世界不再是整齐划一的虚拟人,而是像聚集了来自五湖四海的各色人儿,呈现千人千面、缤纷多彩的世界。
在真正的千人同屏里,用户不再是被限制在某个位置坐下或者站立(这样的千人万人同屏毫无意义),而是可以自由地操作自己的虚拟形象,去四处漫游,能做各种社交互动,在热闹的场域下充分感受真实的人与人之间交流,人与物之间的交流。
在虚拟空间中,能够认识新朋友遇见老朋友,是在虚拟世界中难忘的经历,如果此时看上去人山人海,实则只是程序操控下的机器人,那大可不必来到这里享受一个人的狂欢。
当然还有一些文字游戏类的说法,比如“实现千人同屏观看”这样以直接偷换了概念的方式硬套千人同屏技术,无不在说明千人同屏技术真实的难度。
为什么要实现“真·千人同屏”这么难?
在网页端要实现同屏千人流畅的实时互动,不同的环节都有巨大的挑战:后端对于用户位置信息的汇总处理、前后端通信细节的优化、前端渲染开销的控制......
下面具体分享下我们技术处理方案:
说到
渲染性能优化,降低 draw call 数往往是最先想到也最有效的做法
。一个 draw call 是 CPU 向 GPU 发送一次绘制命令,会产生两者间的一次通信开销。一旦 draw call 过多,这些开销积累起来,便导致渲染性能下降。
在以往的项目架构中,每一个角色人物作为一个单独的模型,渲染时都需要一次新的draw call,因此当在线人数大量增加时,draw call 数也就线性地猛增😱。