有人称《原神》的代码是屎山,如何评价?

发布时间:
2024-07-31 08:17
阅读量:
24

原神是2017年立项的,换句话说,它使用的unity基础版本应该不会晚于2018。

——米哈游在unity基础上进行了魔改,通常来说,对于一个既有项目的魔改,必然会造成一大堆屎山。

比如,最近你有没有发现,进入游戏时鼠标会自动归零到左上角?——已知unity的原点通常是屏幕中心,只有windows才以左上角为原点,那么,是不是也就意味着,最近原神的输入检测体系有一定改动,而且造成了某种未知的bug呢?

好,unity的InputManager有一个巨大的问题,就是它走的不是消息队列,这玩意是消息队列返回到Update里的状态,也就意味着,如果你在两帧之间进行了多次操作,InputManager是检测不到的。

因此,unity引入了新的InputSystem(该系统不会造成鼠标强制位移,所以,鼠标位移是别的东西导致的,这里我们只是拿来举个例子)。而这个InputSystem也有各种各样的bug,比如,从后台切换回游戏时,鼠标的第一次点击不会触发事件。

我们在原神里没有发现过这种状态,这并不意味着原神没有用InputSystem,相反,还有另一种方法也可以达到弥补bug的功能:

那就是,将两代Input系统结合起来使用。InputSystem做一个基础触发,InputManager做补充。如果system工作了,那么manager就不用再做。

……好,现在的逻辑很明确了(我们就假设原神采用了这种方案):同时使用InputSystem和InputManager,也就意味着两者的bug被同时继承下来了,只是我们通过另一个函数来弥补了其中已知的几个bug,那么——

一旦有未被发现的bug,并且确定了跟上述二者都有冲突,怎么办?一旦我们用来平衡二者的函数发生了bug,又怎么办?

我的朋友,这,就TM叫做屎山。

而这仅仅是工作中微不足道的一个小环节而已。

我们现在有理由相信原神中的跑步跳跃等动作实际上就是早期产生的一个屎山,因为unity的动作系统其实也有两个版本,简直就跟上面说过的那俩Input一毛一样。

考虑到开发环节中跑跳等动作是最优先需要解决的,因此可以推断,当时为了快速出成果,制作团队在跑步动作上使用了某种跟我之前提过的一样的方案,结果因为屎坑太大,bug太多,现在改不了了。

跑步动作不是像你们想的那样,就只是一个简单的跑步,实际上跑步要照顾很多其他的东西,比如跑步的时候转跳跃、转走路、转冲刺、转急停、转下落,以及各种各样你可能想都想不到的地方……

我的朋友,这,就TM叫做屎山。

这就是为什么可莉的走路姿势被改了、为什么草神的跑步姿势是普通萝莉跑,这都TM可能是屎山的后遗症。

而这个后遗症,说不定哪天就爆发了……

或者,其实已经在测试中爆发过很多次了……

END