第2265章 服务器负载与长安城的喧嚣 (第2/2页)
崩盘。
两条路都走不通。
她脑子里转了几个方案,每一个都在某个环节上被卡住——要么是客户端算不过来,要么是服务器广播量太大,要么是玩家体验打折打到没法接受。
她咬了咬下嘴唇,手指在手臂上轻轻敲了几下。
她拿出手机走出机房,在走廊里拨了陈浩的号码。
电话接通之后她把情况完整地说了一遍——同屏渲染上限、瞬移的成因、削减人数带来的体验损失。
她说的时候语速比平时快一些,像在把一堆积木一块一块地垒起来,垒完了等着对方推倒或者加固。
说到最后她停了一下,加了一句:“我这边暂时想不到两全的办法,李轩那边也卡住了。”
电话那头沉默了片刻。
梁永琪听到陈浩的呼吸声在话筒里均匀地传过来,中间夹着一声极轻的、像用手指敲了一下桌面边缘的声音。
那一声响之后又是几秒的安静,她能想象陈浩坐在办公桌后面,手指搭在桌面上,眼睛看着某个固定的点,脑子里在翻各种可能性。
“让玩家可以选择屏蔽其他人的特效。”陈浩说,“只保留自己和队友的技能特效,其他所有人的特效全部不渲染。
但是人物模型必须全部显示。
每一个角色都要看得见,只不过他身上那些花里胡哨的光影不用画出来。”
梁永琪把手机换了一边耳朵。
“特效的计算量比模型大?”她问了一句,手指无意识地在走廊的墙壁上划了一下。
“特效是叠加渲染,一层火墙上面再叠一层雷电再叠一层毒雾,每一层都要单独计算光线和透明度。
模型是静态渲染,一个人站在那里不动的话,他的模型每帧的变换量很小。
把特效砍掉之后引擎的帧预算能腾出很大一块,用来撑住全部的人物模型。”陈浩的声音从话筒里传过来,不急不缓,“你让李轩去翻一下渲染管线的代码,特效和模型是不是走同一个队列。
如果走同一个队列,把特效拆出来单独排队,优先算模型,特效往后排。”
梁永琪挂了电话之后走回机房。
走廊到机房的这段路不长,她走了几步就到了门口。
李轩还坐在主控机前面,屏幕上那个八百的数字还在闪烁。
她把陈浩的方案转述了一遍。
李轩听完之后没有立刻回应,他把手从椅子扶手上收回来,重新搭上键盘,手指在参数表上翻了几页,找到了特效渲染模块的配置项。
“特效计算和模型计算分离。”他说,手指在键盘上敲了起来,速度比刚才快了一截,“特效走单独的渲染队列,每一帧先算模型,模型算完了有余力再算特效。
玩家关掉其他人的特效之后,特效队列里只剩下自己和队友的数据,计算量降到原来的十分之一都不到。
模型队列不变,所有人的人物模型全部保留。”
他一边敲一边说,声音比刚才亮了一些:“特效队列如果来不及算就直接丢掉,丢掉的只是光影效果,人物模型不受影响。
玩家看到的是一个人站在那里但没有技能光效,这比看不到人要好得多。
而且特效丢掉的时候不会影响位置同步,因为位置数据挂在模型上面,模型没丢,位置就不会错。”
他没有再抬头。
梁永琪站在他身后看了一会儿,屏幕上代码行一行一行地往下滚,李轩的手指在键盘上跳得很快,偶尔停下来删掉几行又重新敲进去。
她看了一会儿,然后退出了机房。
那天晚上李轩没有离开公司。
技术组的三个人陪着他一起熬,机房的灯一直亮着,屏幕上的代码行一行一行地滚动。
凌晨两点多的时候有人出去买了一趟泡面,回来的时候拎了五碗,每碗的盖子都掀开了,热气从碗口升起来,在机房的冷气里凝成一片白雾。
李轩一只手端着面碗一只手敲键盘,面吃了一半就搁在桌角,汤凉了也没再碰。
旁边技术组的一个小伙子吃着面凑过来看了一眼他的屏幕,问了一句这个调度逻辑是不是要重写,李轩嘴里含着半口面含含糊糊地应了一声,手指没停。
凌晨三点十七分,他把最后一行渲染优先级的调度代码敲完,按了回车。
屏幕上开始跑测试。
测试场景是长安大街,预先加载了一千八百个角色模型,所有角色的特效全部按照“仅显示队友”的规则进行了裁剪。
渲染帧率从测试开始的第一秒就稳定在一个数值上,上下浮动不超过三帧。
他盯着那个数字看了十几秒,然后伸手把旁边那台测试机上的画面拖到了大屏幕上。
长安大街上挤着上千个角色,人物模型全部完整显示,每一个角色都在动,走路的、摆摊的、跑动的、站着聊天的,密密麻麻的人头从屏幕的近景一直排到远景。
画面没有卡顿,角色的移动流畅,帧数稳定在三十帧以上。
【跪求礼物,免费的为爱发电也行!】