结果只要同屏人数超过二十个,帧率就掉到个位数。
超过五十个,直接死机。”
“一百个人同屏?”小周咽了口口水,“除非让玩家用服务器来打游戏,否则现有的任何手机芯片都扛不住。”
陈默接过那台还在发烫的手机,翻过来看了看背面。
“你们的渲染管线是怎么搭的?”
小周愣了一下:“标准流程啊。地图全局加载,所有模型实时渲染,物理碰撞全开。”
“全局加载?”
陈默把手机放在桌上,看了小周一眼。
那个眼神让小周后背一凉。
“谁让你把视野外的草丛也加载出来了?”
小周没反应过来:“啊?”
陈默站起来,走到技术白板前面。
他拿起笔,画了一个人形小图标,然后在它的前方画了一个扇形区域。
“这是玩家,这是他的视野范围。
在第一人称视角下,一个玩家能看到的区域大概只有正前方一百二十度、纵深不超过三百米。”
然后他在扇形区域外面画了一个巨大的X。
“这个扇形之外的所有东西,玩家看不见。
既然看不见,为什么要渲染它?”
小周的眼睛慢慢睁大了。
陈默继续说:“我要你做一套‘动态LOD剔除算法’。
规则很简单,玩家视线一百米以内的物体,用高精度模型渲染。
一百米到三百米之间,用中精度贴图替代。
三百米以外的所有东西,全部用最低精度的色块糊弄。”
“而且,只要一个物体离开了玩家的屏幕视野,哪怕只是转了一下头,这个物体立刻从内存里‘物理删除’。
等玩家转回来的时候再重新加载。”
小周张了张嘴:“可是这样的话……玩家背后的整座山不就凭空消失了?”
“消失了又怎样?他又看不见。”
陈默的笑道:“在手机端,我们没有资格去追求所谓的完美物理世界。
我们要做的是一个‘你看不见的东西就不存在’的世界。
这不是偷懒,这是在硬件的极限里找到活路的唯一方法。”
小周愣了大约五秒钟。
然后他猛地一拍桌子:“我懂了!这就是薛定谔的渲染!只有被观测到的物体才存在!”
陈默没搭理他的中二发言,继续往下说:“还有一个更狠的点子。
玩家进入室内场景的时候,直接把室外的整个大世界卸载掉。
只保留室内的几面墙和几张桌子。
等他出门的时候,再把外面的世界重新拉起来。”
“这样做的好处是,不管外面的世界有多大,只要玩家待在一个小房间里,手机只需要渲染一个十平方米的空间。
处理器压力瞬间降到最低。”
引擎组的外籍工程师杰森在旁边听得满头大汗。