“先别说不可能完成。”
青智源赶紧打住,“赤西桑,你也是程序总监,pokeni的元老,你要是一开始就打退堂鼓的话,以后其他同事们也没法做事情了。”
“好,好的社长。”赤西健苦着个脸回应到。
“我们一个一个问题来解决。”青智源说,“先大地图吧。”
“1000*1000对于程序来说,可能确实是有点大,加载效率慢可以理解,但是我们可以先做分块加载嘛。”
“你先切割成4块,实在不行就切割成16块,25块,都可以。只要能满足流畅加载的需求就行。”
“中间过渡的时候有卡顿什么的,都是很正常的。”
青智源说。
“但是,看起来过渡的时候会很别扭呢。”赤西健说,“可能我在这个小块儿上面看的所有东西都是清晰的,但是就隔了一米远,结果前面这个地图块儿没被加载出来,就全是空。”
“预加载。”青智源说着站了起来,在白板上面画了一个图示:
先画了一个方块,然后在方块的四条边上面又各自画了一个方块。
“你看,”青智源指着中心的方块说,“我从这个区域跑到这个东边的区域,这个时候你别等我走到了你再把右边的方块给加载出来,而是我在走的过程当中,你就应该要加载右边的这个方块了。”
“然后呢,当我走到最右边的这个方块的时候,最左边那个不是已经超出我的视野范围了吗?这个时候你就把它给删掉就行了。
相当于我们同一时间只加载了2到3个块儿,在程序开销上面就可以得到最大程度的节约。”
而且,为了满足这一点,青智源决定在第一代《怪物猎人》当中,不投放坐骑系统。
玩家们的跑步速度也要做个上限限制才行。
“但是,哪怕是这样,可能在怪物模型面数上面还是有困难。”赤西健继续看着文档说,“草食龙,一种群居类怪物,经常会成群结队出现,大概在4到6只左右。
我们现在对模型面数的支持,就没有那么多。”
“而且一个大场景当中,可不是只有一种怪物会出现,会同时加载好多不同的怪物进来,也就是说,有可能在视野当中,会同时出现10多只怪物,一旦发生这种情况,就会卡顿,甚至会导致系统崩溃。”
emmmm……
青智源托着下巴思考着。
赤西健说的问题是客观存在的,毕竟现在的硬件水平就放在这里,还没有到达前世随便挥霍的程度。
在2023年的时候,大概只有在手机上面才要节约资源,节约内存,在端游上面几乎不存在这个问题。
你想想看,一个游戏可以做到几百G的大小,谁会在意这么一点点的开销?
手机是内存受限没有办法。
也就是说,现在的游戏得按照手游的开发标准来制定才行,能压缩的尽量压缩,能节省的尽量节省。
啊~
青智源不由得感叹,还是太慢了,时代还是太慢了,再发展迅速一些就好了。
“这个问题其实也好解决。”青智源拿起记号笔在白板上面写了三个大字——
“Lod。”
“Lod?”
赤西健和小池一脸懵逼。
“分层显示技术。”青智源用人话再说了一遍。
“什么意思呢?”
“你看哈,”
青智源先在白板上面画了一匹特别写实的马,然后再在旁边画了一匹马赛克马,再后面是一个不知道是什么鬼的特别抽象的马,大概也就只有几根线条而已。
“我们制作不同的精度的模型。”
“近距离范围内,按照优先级最高,加载实际面数多的这个模型出来。”
“如果离得远,没有战斗需求和交互需求,但是又在可见范围内的话,就可以使用粗糙一点的,面数少的这个。”
“再远一点,勉强可见的话,可以只加载这个特别特别粗糙的模型,甚至不加载都行,只加载地形就行了。”
“除此之外,给地形、材质、不同的物体模型上打一个优先级的标签,这样方便程序来进行判断。”
“比如地形是最重要的,那么在预加载的过程当中,就会先把地给加载进来,之后再是一些环境当中的重要元素,什么大石头啊,悬崖,河流……
就按照这个模式去做就行了。”
“哦哦,懂了懂了。”赤西健和小池点头如捣蒜。
社长真是太可怕了。
居然能想到这种方式。
按照赤西健原来的设想,一个场景当中加载那么多的东西进来,起码得有几万面了,这程序消耗怎么可能吃得消。
但是青智源一说分层级加载,预加载,突然一下子就把几万面给干到了只有几百面了,简直可怕。
这其实还有一个好处,就是可以模拟真实的人眼。
人看东西,也是近处的圆形范围内,越靠近焦点的越清楚,越远离的就越模糊。
Lod做出来之后,其实也是这样的一个效果。
离得越远,加载的模型就越粗糙,面数越少,自然就越模糊。
不但不会因为面数减少而导致玩家们觉得不舒服。
反而显得更加真实。
不过就像青智源说的那样,你得将玩家的移动速度控制在一定的范围内才行。
不然的话,当你的移动速度超过了预加载的速度,那就很容易穿帮了。
比如说旁边这块地板还没加载出来,你就直接开着摩托车过去了,有可能一下子就陷入地板下面。
这也是很多游戏当中常常存在的bug。
但是实际上就是因为预加载没能匹配上的问题导致的。
……
“除此之外呢,程序那边还需要做一件事情。”青智源说。
“嗯?”赤西健疑惑地抬起头来。
“你们知道拓扑运算吧?”
“知,知道吧……”赤西健有点犹豫。
倒不是自己的程序水平不够,主要是社长那副盛气凌人的样子,就好像是在课堂上面讲课的老师一样,突然提问学生,你一下子心里面多少会有点儿慌。
“那就好办了。”青智源说着,将一个粉笔盒放到了桌子上,然后再掏出一根粉笔来放到它的后面,只露出半截脑袋。
“在3d领域当中,物体之间其实是有遮挡关系的。”
“比如说,这根粉笔,有半截藏在后面,那么它从你们的视角来看,其实就只有一半可见。”
“在这种情况下,按照一般的程序逻辑,不管后半部分可不可见,是不是也会被加载出来呢?”
“嗯,”赤西健点点头,“那是肯定的。”
“但是实际上,我们并不需要加载后面的部分对不对,因为对于玩家们来说,藏在盒子后面的半截粉笔是个无效信息,那么就应该将后边这个部分给裁掉。”
“而且,就粉笔盒而言,能被玩家们看到的也就只有三个面而已,在后面和底下的面也是多余的,将这些面都给裁掉的话,内存开销一下子就释放出来了。”
纳尼?!
赤西健和小池两个人都惊呆了。
短短的一个教学,立刻就让他们见识到了社长的程序功底有多么的强大。
甚至你都不知道这算是程序范畴还是数学范畴内的东西。
“但是,它是个整体,没法做切割啊。”
“这不就来了吗,用拓扑算法计算一下,将后面不可见的部分给裁掉就行了。”
“那不就得要求一个实时运算吗?这个运算导致的开销似乎也不小。”
唔……青智源托着下巴,赤西健说得好像有点道理啊。
差点儿忘记了时代限制。
现在的算力可能真的不够支撑。
面数加载是少了,可是带来的实时运算量增加了,究竟哪一种更加合算,还真的不太好说。
“那就这样,”青智源说,“静态的物体构成,比如说这些东西不会动,并且遮挡关系都是固定的,那么就按照我说的,在美术制作完成之后就由程序来做第一次的剪裁合并工作。”
“如果是会变化移动的,这样的遮挡关系,你们就想办法做优化,哪怕现在不行,未来肯定可以。”
呃……
赤西健狠狠皱了皱眉。
感觉工作量无形中又增加了不少。
前面说的东西是一个满足基本需求,到这里变成优化内容了。
众所周知,程序优化是最难也最花费时间的。
……
“AI方面也很难做到吧?”赤西健难受地说。
他几乎已经找不到任何可以刁难社长的问题了,只能通过最后一搏来死死挣扎。
如果这样还不行的话——
我们就要开始动工去攻克这些可怕的难题了呢。
虽然说在青智源已经给出明确方案的情况下,倒也不算难,但是这都是工作量啊。
没有思考的工作量,更加没有成就感。
有的只是作为一个工具人的疲劳而已。
现在赤西健有些后悔了,不该这么早来找社长的,应该自己拉着小弟们商量一遍,看看能不能找到解决方法,实在不行才去找社长,这样才对。
赤西健再一次被社长的可怕的解决问题的能力给惊呆了。
还是太年轻,还是太单纯了,低估了社长的实力。
想想也对,既然这两个游戏都是社长亲自提出来的,他心里面肯定有数,知道这玩意儿肯定能实现才让开发的。
如果没有想好方案,没法实现的玩意儿,青社长估计连提都不会提。
“这么多的怪物,各自都有自己的行为习惯,在面临不同的情况时,还要做出不同的反应,不太容易解决呢。”
赤西健打出了自己的最后一张底牌。
“你们就做好行为树的工具,然后交给策划们自己去设计就行了。”青智源说,“AI智不智能,做到什么程度,你们就别管了。”
这玩意儿,幸好是交给神谷来做。
换成宫崎英高的话——
你想想,一个会读指令的雌火龙有多么可怕?
宫崎英高现在还没有提出读指令的概念,所以一切都还在可控范围之内。
猎魔人2再难也是数值上的难,还没有到机制上面的可怕程度。
等过几年就不是这个样子了。
……
可恶!
赤西健被碾压得体无完肤,社长一句轻飘飘的【程序猿做好自己的事情就行】,相当于轰出了一对王炸,将他炸得欲仙欲死。
输了,完全输了……
赤西健心想,这两个游戏看来是非做不可了!
果然,一切的努力都是徒劳的吗?
青智源果然是不可战胜的吗?
社长果然是深不见底的啊!!
“我有个问题。”
美术总监坂田泰治弱弱地举起了手。
“《虫师》和《怪物猎人》当中,这些怪物和角色,其实都要用到大量的动作,这个工作量对于美术们来说有点太大了,我害怕吃不消。”
干得漂亮啊,坂田!
赤西健给他投去一个赞赏的目光。
这样一来,这两个项目就可以拖入长跑当中了,至少得做个3年5年的吧,平摊下来的话,程序这边的平均工作量就自然而然减少了呢。
而且未来随着硬件的发展,搞不好有些工作在硬件上就解决掉了。
“哦,对。”青智源这才想了起来,坂田泰治提了一个很重要的问题。
之前的3d游戏,里面的动作都是美术来进行绘制和调整的,其实是一个比较笨的办法。
都已经进入3d时代了,就该抛弃一些落后的制作方式了呢。
“是时候引入骨骼动画了。”
“骨骼动画?!”坂田泰治和赤西健双双震惊。
“对。”
青智源站起身来,“你们都玩过一些有关节的玩偶吧?”
“当我们摆动娃娃的手的时候,它里面的骨骼就会跟着一起转动,然后将玩偶的动作给固定住。”
他自己做了一个示范,“学美术的都知道,我们人体运动,都是通过肌肉的舒张和收缩来实现的,比如说屈肘,会运用到我们的肱二头肌。
相当于我们的肌肉带动了骨骼进行运动。
但是呢,我们现在做3d动作的话,就要反过来。”
“反过来?”
“对,反过来。”
“这一次,我们需要做的是让骨骼来带动肌肉,带动不同的部位进行运动。”
青智源先是画了个人,然后在里面画了一个骨骼框架。
“我们可以给模型定义好自己的骨骼,其实相当于在模型上面做了许多个连接点,这些点连接起来之后就形成了一个骨骼框架。”
“在之后呢,只要骨骼进行运动,比如说屈肘,那么骨骼动画播放的时候,模型就会被带动起来。
以此来匹配美术们想要的运动效果就行。”
“程序这边提供骨骼动画支持,然后由美术们来自己调整。”
“……”
赤西健和坂田泰治两个人都听傻了。
尤其是赤西健。
好家伙,明明是美术们就能解决的问题,结果怎么稀里糊涂的就变成了程序的工作了呢?
坂田泰治这边想的却是:
纳尼?
整个美术的制作流程和方式都发生了改变。
听起来好厉害的样子,但是实际上做起来如何,他是心里面一点儿底都没有。
赤西健有些痛苦地捂住了脸。
莪到底是为什么要坐在这里?
青智源表示,这才哪到哪啊。
骨骼动画是3d游戏当中的标配了,能够节省美术们大量的时间,你只要调整好动作,按照一定的规律做好,之后放到游戏当中就由程序来完成运行就行。
以后为了让游戏当中的角色有更好的动作效果,还得做动作捕捉器呢。
未来有了动捕技术之后,还需要再做AI适配,AI换脸,甚至是AI生成……
到那个时候,就不用人来进行调整了,只需要录入,然后AI自动生成就完了。
道路还很长,同志们还要努力啊!
……
程序猿和美术们,在会议室当中就自己关心的问题一个个都讨论了一遍。
新来的神谷英树都看傻了。
这一幕似曾相识——
就像是看三国演义里面诸葛亮舌战群儒一样。
(不用怀疑,三国演义很早就引入了霓虹,并且大受欢迎,很多霓虹人特别喜欢三国,甚至熟读里面的每一个细节。
好多经典的故事可以说是信手拈来。
前年三国演义电视剧以每集1.5万美金的价格引入霓虹,成为热播电视剧,霓虹人对此是特别狂热的,甚至还一度带动了相关的游戏的火爆。)
此时此刻,青智源在神谷英树的眼中就像是诸葛亮的化身一样。
看到神谷英树眼中的震惊,三上真司在旁边笑着拍了拍他的手背。
“这都是正常操作,你以后会习惯的。”
“纳尼?”
这居然是正常操作?
神谷英树心里面那个震惊啊,社长的知识储备量和解决问题的能力也太强了吧,简直可以用深不见底来形容。
太可怕了。
社长真的是太可怕了。
每问必答。
只要回答了,一定能让程序猿和美术们心服口服。
瞬间就找到了制作的方向和解决问题的方法。
可是……
赤西健和坂田泰治并不需要!
他们巴不得社长也没法解决,这样就可以让身上的担子没那么重了。
越是讨论,两个人心里面也越是慌张,怎么工作量越聊越多了呢?
到最后,已经问无可问。
坂田泰治不时地给赤西健送去眼神:你可闭嘴吧你!
……
经过长达5个小时的讨论,最后大家已经没有了什么可以问的了,方案什么的也在会议上过了一遍。
走出会议室。
赤西健感觉脑子嗡嗡的。
可恶!
所有的问题又被社长给解决掉了!!!
……
……
————————————————————————
晚上还有一章