“先别说不可能完成。”
青智源赶紧打住,“赤西桑,你也是程序总监,pokeni的元老,你要是一开始就打退堂鼓的话,以后其他同事们也没法做事情了。”
“好,好的社长。”赤西健苦着个脸回应到。
“我们一个一个问题来解决。”青智源说,“先大地图吧。”
“1000*1000对于程序来说,可能确实是有点大,加载效率慢可以理解,但是我们可以先做分块加载嘛。”
“你先切割成4块,实在不行就切割成16块,25块,都可以。只要能满足流畅加载的需求就行。”
“中间过渡的时候有卡顿什么的,都是很正常的。”
青智源说。
“但是,看起来过渡的时候会很别扭呢。”赤西健说,“可能我在这个小块儿上面看的所有东西都是清晰的,但是就隔了一米远,结果前面这个地图块儿没被加载出来,就全是空。”
“预加载。”青智源说着站了起来,在白板上面画了一个图示:
先画了一个方块,然后在方块的四条边上面又各自画了一个方块。
“伱看,”青智源指着中心的方块说,“我从这个区域跑到这个东边的区域,这个时候你别等我走到了你再把右边的方块给加载出来,而是我在走的过程当中,你就应该要加载右边的这个方块了。”
“然后呢,当我走到最右边的这个方块的时候,最左边那个不是已经超出我的视野范围了吗?这个时候你就把它给删掉就行了。
相当于我们同一时间只加载了2到3个块儿,在程序开销上面就可以得到最大程度的节约。”
而且,为了满足这一点青智源决定在第一代《怪物猎人》当中,不投放坐骑系统。
玩家们的跑步速度也要做个上限限制才行。
“但是,哪怕是这样,可能在怪物模型面数上面还是有困难。”赤西健继续看着文档说,“草食龙,一种群居类怪物,经常会成群结队出现,大概在4到6只左右。
我们现在对模型面数的支持,就没有那么多。”
“而且一个大场景当中,可不是只有一种怪物会出现,会同时加载好多不同的怪物进来,也就是说,有可能在视野当中,会同时出现10多只怪物,一旦发生这种情况,就会卡顿,甚至会导致系统崩溃。”
emmmm……
青智源托着下巴思考着。
赤西健说的问题是客观存在的,毕竟现在的硬件水平就放在这里,还没有到达前世随便挥霍的程度。
在2023年的时候,大概只有在手机上面才要节约资源,节约内存,在端游上面几乎不存在这个问题。
你想想看,一个游戏可以做到几百G的大小,谁会在意这么一点点的开销?
手机是内存受限没有办法。
也就是说,现在的游戏得按照手游的开发标准来制定才行,能压缩的尽量压缩,能节省的尽量节省。
啊~
青智源不由得感叹,还是太慢了,时代还是太慢了再发展迅速一些就好了。
“这个问题其实也好解决。”青智源拿起记号笔在白板上面写了三个大字——
“LOD。”
“LOD?”
赤西健和小池一脸懵逼。
“分层显示技术。”青智源用人话再说了一遍。
“什么意思呢?”
“你看哈,”
青智源先在白板上面画了一匹特别写实的马,然后再在旁边画了一匹马赛克马,再后面是一个不知道是什么鬼的特别抽象的马,大概也就只有几根线条而已。
“我们制作不同的精度的模型。”
“近距离范围内,按照优先级最高,加载实际面数多的这个模型出来。”
“如果离得远,没有战斗需求和交互需求,但是又在可见范围内的话,就可以使用粗糙一点的,面数少的这个。”
“再远一点,勉强可见的话,可以只加载这个特别特别粗糙的模型,甚至不加载都行,只加载地形就行了。”
“除此之外,给地形、材质、不同的物体模型上打一个优先级的标签,这样方便程序来进行判断。”
“比如地形是最重要的,那么在预加载的过程当中,就会先把地给加载进来,之后再是一些环境当中的重要元素,什么大石头啊,悬崖,河流……
就按照这个模式去做就行了。”
“哦哦,懂了懂了。”赤西健和小池点头如捣蒜。
社长真是太可怕了。
居然能想到这种方式。
按照赤西健原来的设想,一个场景当中加载那么多的东西进来,起码得有几万面了,这程序消耗怎么可能吃得消。
但是青智源一说分层级加载,预加载,突然一下子就把几万面给干到了只有几百面了,简直可怕。
这其实还有一个好处,就是可以模拟真实的人眼。
人看东西,也是近处的圆形范围内,越靠近焦点的越清楚,越远离的就越模糊。