第331章 多线程逻辑

那一段时期夫妻俩的生活虽然很紧凑,木晨曦每天都要忙着处理《星梦森林夜》的各种各样的杂事,完全已经没有之前他自己开发游戏时候的那般自在了。

以前他可以自己安排自己的事情,可以坐下来写代码一写写一整天,也可以用整块整块的时间来画素材,写文本。

现在不可以了,并不是他不需要再写代码,而是有很多向外对接的事情需要他自己去处理。

文本和设计有沈时玖在做,代码有小满做,他们两个都不擅长和外面的合作方谈判对接以及协调。

他们又都很看中沈时玖的这个设计点子,想把这个游戏做好,甚至已经开始考虑采抢先体验模式先上线。

因此对外的很多杂事,都是木晨曦在对接处理,而他还要负责总体进度的推进,还要随时保持着对开发成本的敏感。

方敏抒知道做生意做事业要细心,但是游戏行业她不熟。

木晨曦跟她说,游戏这个东西很容易因为开发团队自我膨胀,自己给自己画饼,而导致系统过于庞杂,实现难度过大,最后死于成本暴增,所以他必须随时考虑着,什么功能要,什么功能不要,什么细节可以花钱花功夫去做,什么细节可以靠视觉欺骗糊弄过去。

玩家是去玩游戏的,注意力只会放在游戏的主要方向上,因此那些增加氛围感和细节的部分,就可以考虑用简单的办法去糊弄。

所谓的优化,很多时候其实也就是大型糊弄技术。

2D游戏也许它不怎么吃显卡显存,但是因为在图形方面省出来大量的资源,开发者也会把主意打到CPU身上去。

游戏里的单位多了,主循环运转一次,需要处理的数据量就多,依然会非常考验开发者的性能优化能力。

譬如,《Rimworld》里的殖民地有了十六个居民,养了五百只鸡,主循环执行一次,就要检查五百只鸡的状态,扣减饱食度,扣减营养值,然后根据数值的变化,由观察者Observer来决定鸡的行为树或者状态机是不是需要切换。

这就是跑不了的五百次for循环。

如果是最原始复古的设计,for循环占用进程,那么势必会减少单位时间内的渲染次数。

渲染次数减少,对玩家来说,就是掉帧,卡顿。

如果还有对象没有及时回收,那又会导致内存泄露以至于最终游戏崩溃。

而为了实现在村子里养殖许多的鸡,就要想办法不让鸡的for循环干扰渲染,就要想办法利用CPU的并行能力。

那么就要走到多线程或者并发的道路上去。

用上了多线程或者并发之后,又会产生死锁,争用这样的问题,导致程序直接闪退或者卡死。

多线程的渲染是相似的,但多线程的游戏逻辑则各有各的多线程……

多线程的渲染有很多泛用性很广的解决方案,但是多线程的游戏逻辑是没有的,因为每个游戏的逻辑都不一样,那就只能是开发者自己去设计。

沈时玖当初因为游戏要处理的单位过多,而每个单位的复杂度又高,困在性能瓶颈上整年前进不了一步,最后近乎到了崩溃的边缘。

那段时间何心深有体会,经常吵架,搞得她一天天也疑神疑鬼的,一度以为两个人的感情要告吹,虽然最后发现是虚惊一场,但其实,她付出了很多坚持。